From 9f05612b204d99fa48711c20d9308c2a7f70dd7e Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 9 Oct 2014 09:24:23 -0700 Subject: [PATCH 001/124] added modem2vtk into scripts in setup.py --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index e2fd62d9..c7f58847 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,8 @@ setup_kwargs['entry_points'] = {'console_scripts': ['ws2vtk = mtpy.utils.ws2vtk:main', - 'modem_pyqt = mtpy.gui.modem_pyqt:main']} + 'modem_pyqt = mtpy.gui.modem_pyqt:main' + 'modem2vtk = mtpy.utils.modem2vtk:main']} # But many people will not have setuptools installed, so we need to handle # the default Python installation, which only has Distutils: From 213617f4b4b4ceb587371cb9dd7c8b6cdfa9f6bb Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 9 Oct 2014 09:25:22 -0700 Subject: [PATCH 002/124] added modem2vtk into scripts in setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c7f58847..5b7373de 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setup_kwargs['entry_points'] = {'console_scripts': ['ws2vtk = mtpy.utils.ws2vtk:main', - 'modem_pyqt = mtpy.gui.modem_pyqt:main' + 'modem_pyqt = mtpy.gui.modem_pyqt:main', 'modem2vtk = mtpy.utils.modem2vtk:main']} # But many people will not have setuptools installed, so we need to handle From 889ec55fefdf30d89839a58f73eeb440a37d5c5d Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 11 Nov 2014 11:42:01 -0800 Subject: [PATCH 003/124] adding a mesh building gui --- mtpy/gui/modem_mesh_builder.py | 109 ++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 9d8371e8..55131a13 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -23,19 +23,124 @@ import matplotlib.colorbar as mcb import mtpy.imaging.mtcolors as mtcl -class Ui_Mesh_Window(QtGui.QMainWindow): +class ModEM_Mesh_Window(QtGui.QMainWindow): """ main window for building a mesh for ModEM """ def __init__(self): - super(Ui_Mesh_Window, self).__init__() + super(ModEM_Mesh_Window, self).__init__() + + self.period_list = [] + self.period_dict = {} self.ui_setup() def ui_setup(self): + self.setWindowTitle('Make ModEM Mesh') + self.resize(1920, 1080) + + #-------------- MENU BAR --------------------------------- + # --> Data + # create an action to the data tab + self.action_data_open = QtGui.QAction(self) + self.action_data_open.setText('Open') + self.action_data_open.triggered.connect(self.get_data_fn) + + # add the action to the data tap + self.menu_data.addAction(self.action_data_open) + self.menu_bar.addAction(self.menu_data.menuAction()) + + #----------> Model ------------------------------------- + self.menu_model = QtGui.QMenu(self.menu_bar) + self.menu_model.setTitle("Model File") + + # create an action to the model tab + self.action_model_open = QtGui.QAction(self) + self.action_model_open.setText('Open') + self.action_model_open.triggered.connect(self.get_model_fn) + + self.action_model_save = QtGui.QAction(self) + self.action_model_save.setText('Save') + self.action_model_save.triggered.connect(self.save_model_fn) + + # add the action to the model tap + self.menu_model.addAction(self.action_model_open) + self.menu_bar.addAction(self.menu_model.menuAction()) + + self.setMenuBar(self.menu_bar) + + #------------------Layout------------------------------------- + #--> list widget + # make a widget that will be the station list + self.list_widget = QtGui.QListWidget() + self.list_widget.itemClicked.connect(self.locate_station) + self.list_widget.setMaximumWidth(150) + + self.load_edi_button = QtGui.QPushButton('Load .edi Files') + self.load_edi_button.clicked.connect(self.load_edi_files) + + QtCore.QMetaObject.connectSlotsByName(self) + + def get_data_fn(self): + """ + get the filename from a file dialogue + + """ + + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM data file', + filter='(*.dat);; (*.data)')) + + self.modem_data = modem.Data() + self.modem_data.read_data_file(fn) + self.modem_data_fn = fn + + self.dir_path = os.path.dirname(fn) + + self.period_list = sorted(self.modem_data.period_list) + self.period_dict = dict([('{0:.5f}'.format(key), value) for value, key + in enumerate(self.period_list)]) + + self.list_widget.clear() + + #this will add the station name for each station to the qwidget list + for period in self.period_list: + self.list_widget.addItem('{0:.5f}'.format(period)) + + self.plot_period = self.period_list[0] + + def locate_station(self): + pass + + def get_period(self, widget_item): + """ + get the station name from the clicked station + """ + self.plot_period = str(widget_item.text()) + +#def main(): + +def main(): +#if __name__ == "__main__": + import sys + app = QtGui.QApplication(sys.argv) + ui = ModEM_Main_Window() + ui.ui_setup() + ui.show() + sys.exit(app.exec_()) + +if __name__ == '__main__': + + main() + + + + + + From 3de3b744b7399b0f1afaf92aadf362811d8436f1 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 11 Nov 2014 13:59:31 -0800 Subject: [PATCH 004/124] adding a mesh building gui --- mtpy/gui/get_edi_files.py | 17 +++- mtpy/gui/modem_mesh_builder.py | 178 +++++++++++++++++++++++++++++---- 2 files changed, 168 insertions(+), 27 deletions(-) diff --git a/mtpy/gui/get_edi_files.py b/mtpy/gui/get_edi_files.py index a41bd3b4..62dcf42f 100644 --- a/mtpy/gui/get_edi_files.py +++ b/mtpy/gui/get_edi_files.py @@ -6,6 +6,8 @@ """ from PyQt4 import QtGui +import sys + class Get_EDI_Files(QtGui.QWidget): def __init__(self): super(Get_EDI_Files, self).__init__() @@ -16,10 +18,15 @@ def __init__(self): self.edi_list = [] for fn in fn_list: self.edi_list.append(str(fn)) - -if __name__ == '__main__': - - import sys + +def main(): app = QtGui.QApplication(sys.argv) window = Get_EDI_Files() - sys.exit(app.exec_()) \ No newline at end of file + sys.exit(app.exec_()) + +#if __name__ == '__main__': +# +# import sys +# app = QtGui.QApplication(sys.argv) +# window = Get_EDI_Files() +# sys.exit(app.exec_()) \ No newline at end of file diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 55131a13..0301f40e 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -22,6 +22,7 @@ from matplotlib.colors import Normalize import matplotlib.colorbar as mcb import mtpy.imaging.mtcolors as mtcl +from mtpy.gui.get_edi_files import Get_EDI_Files class ModEM_Mesh_Window(QtGui.QMainWindow): """ @@ -35,6 +36,8 @@ def __init__(self): self.period_list = [] self.period_dict = {} + self.modem_model = modem.Model() + self.ui_setup() def ui_setup(self): @@ -43,44 +46,114 @@ def ui_setup(self): self.resize(1920, 1080) #-------------- MENU BAR --------------------------------- + # add a menu bar to the top of the window + menu_bar = QtGui.QMenuBar(self) + menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 38)) + menu_bar.setObjectName("menu_bar") + # --> Data + menu_data = QtGui.QMenu(menu_bar) + menu_data.setTitle("Data File") + # create an action to the data tab - self.action_data_open = QtGui.QAction(self) - self.action_data_open.setText('Open') - self.action_data_open.triggered.connect(self.get_data_fn) + action_data_open = QtGui.QAction(self) + action_data_open.setText('Open') + action_data_open.triggered.connect(self.get_data_fn) # add the action to the data tap - self.menu_data.addAction(self.action_data_open) - self.menu_bar.addAction(self.menu_data.menuAction()) + menu_data.addAction(action_data_open) + menu_bar.addAction(menu_data.menuAction()) #----------> Model ------------------------------------- - self.menu_model = QtGui.QMenu(self.menu_bar) - self.menu_model.setTitle("Model File") + menu_model = QtGui.QMenu(menu_bar) + menu_model.setTitle("Model File") # create an action to the model tab - self.action_model_open = QtGui.QAction(self) - self.action_model_open.setText('Open') - self.action_model_open.triggered.connect(self.get_model_fn) + action_model_open = QtGui.QAction(self) + action_model_open.setText('Open') + action_model_open.triggered.connect(self.get_model_fn) - self.action_model_save = QtGui.QAction(self) - self.action_model_save.setText('Save') - self.action_model_save.triggered.connect(self.save_model_fn) + action_model_save = QtGui.QAction(self) + action_model_save.setText('Save') + action_model_save.triggered.connect(self.save_model_fn) # add the action to the model tap - self.menu_model.addAction(self.action_model_open) - self.menu_bar.addAction(self.menu_model.menuAction()) + menu_model.addAction(action_model_open) + menu_bar.addAction(menu_model.menuAction()) - self.setMenuBar(self.menu_bar) + self.setMenuBar(menu_bar) + + #------------------Layout of main window------------------------------ + #need to have a central widget + self.central_widget = QtGui.QWidget() + self.setCentralWidget(self.central_widget) - #------------------Layout------------------------------------- #--> list widget + self.list_qmodel = QtGui.QStandardItemModel() # make a widget that will be the station list self.list_widget = QtGui.QListWidget() + self.list_widget.itemSelectionChanged self.list_widget.itemClicked.connect(self.locate_station) self.list_widget.setMaximumWidth(150) - self.load_edi_button = QtGui.QPushButton('Load .edi Files') - self.load_edi_button.clicked.connect(self.load_edi_files) + #Load edi button + load_edi_button = QtGui.QPushButton('Load .edi Files') + load_edi_button.clicked.connect(self.load_edi_files) + + edi_layout = QtGui.QVBoxLayout() + edi_layout.addWidget(self.list_widget) + edi_layout.addWidget(load_edi_button) + + #add edit fields for mesh properties + cell_size_label = QtGui.QLabel('Cell Size [East, North] (m)') + cell_size_east_edit = QtGui.QLineEdit() + cell_size_east_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_east)) + cell_size_east_edit.textChanged[str].connect(self.set_cell_size_east) + + cell_size_north_edit = QtGui.QLineEdit() + cell_size_north_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_north)) + cell_size_north_edit.textChanged[str].connect(self.set_cell_size_north) + + cell_size_grid = QtGui.QHBoxLayout() + cell_size_grid.addWidget(cell_size_label) + cell_size_grid.addWidget(cell_size_east_edit) + cell_size_grid.addWidget(cell_size_north_edit) + # this is the Canvas Widget that displays the `figure` + # it takes the `figure` instance as a parameter to __init__ + self.figure = Figure(dpi=150) + self.mpl_widget = FigureCanvas(self.figure) + +# self.figure.subplots_adjust(left=self.subplot_left, +# right=self.subplot_right, +# bottom=self.subplot_bottom, +# top=self.subplot_top, +# hspace=self.subplot_hspace, +# wspace=self.subplot_wspace) + + #make sure the figure takes up the entire plottable space + self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + + # this is the Navigation widget + # it takes the Canvas widget and a parent + self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) + + # set the layout for the plot + mpl_vbox = QtGui.QVBoxLayout() + mpl_vbox.addWidget(self.mpl_toolbar) + mpl_vbox.addWidget(self.mpl_widget) + mpl_vbox.addLayout(cell_size_grid) + + # set the layout the main window + layout = QtGui.QHBoxLayout() + layout.addLayout(edi_layout) + layout.addLayout(mpl_vbox) + self.central_widget.setLayout(layout) + + #set the geometry of each widget + self.list_widget.setObjectName("listWidget") + self.mpl_widget.setObjectName("mpl_widget") + self.mpl_widget.updateGeometry() QtCore.QMetaObject.connectSlotsByName(self) @@ -112,6 +185,38 @@ def get_data_fn(self): self.plot_period = self.period_list[0] + + + def get_model_fn(self): + """ + read in an existing model file + """ + + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM model file', + filter='*.rho')) + + self.modem_model = modem.Model() + self.modem_model.read_model_file(fn) + + self.dir_path = os.path.dirname(fn) + + def save_model_fn(self): + """ + save the current mesh settings to a file + """ + + fn_dialog = QtGui.QFileDialog() + save_fn = str(fn_dialog.getSaveFileName( + caption='Choose ModEM model file', + filter='*.rho')) + + sv_path = os.path.dirname(save_fn) + sv_basename = os.path.basename(save_fn) + self.modem_model.write_model_file(save_path=sv_path, + model_fn_basename=sv_basename) + + def locate_station(self): pass @@ -119,15 +224,44 @@ def get_period(self, widget_item): """ get the station name from the clicked station """ - self.plot_period = str(widget_item.text()) + self.plot_period = str(widget_item.text()) + + def load_edi_files(self): + edi_obj = Get_EDI_Files() + self.edi_list = edi_obj.edi_list + + self.modem_model = modem.Model(edi_list=self.edi_list) + + self.modem_model.get_station_locations() + + #self.make_checkable_list(self.modem_model.station_locations['station']) + + for station in self.modem_model.station_locations['station']: + item = QtGui.QListWidgetItem() + item.setText(station) + item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) + item.setCheckState(QtCore.Qt.Checked) + self.list_widget.addItem(item) + + def set_cell_size_east(self, text): + try: + self.modem_model.cell_size_east = float(text) + except ValueError: + print 'Enter floating point number' + + def set_cell_size_north(self, text): + try: + self.modem_model.cell_size_north = float(text) + except ValueError: + print 'Enter floating point number' + #def main(): def main(): -#if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) - ui = ModEM_Main_Window() + ui = ModEM_Mesh_Window() ui.ui_setup() ui.show() sys.exit(app.exec_()) From 53b83affb477600fd1b3da94a6c2d754174c32ee Mon Sep 17 00:00:00 2001 From: JP Date: Sun, 16 Nov 2014 14:49:18 -0800 Subject: [PATCH 005/124] added plot to mesh_builder --- mtpy/gui/modem_mesh_builder.py | 256 ++++++++++++++++++++++++++++++++- 1 file changed, 252 insertions(+), 4 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 0301f40e..1b77a7f6 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -100,24 +100,92 @@ def ui_setup(self): load_edi_button = QtGui.QPushButton('Load .edi Files') load_edi_button.clicked.connect(self.load_edi_files) + make_mesh_button = QtGui.QPushButton('Plot Mesh') + make_mesh_button.clicked.connect(self.plot_mesh) + edi_layout = QtGui.QVBoxLayout() edi_layout.addWidget(self.list_widget) edi_layout.addWidget(load_edi_button) + edi_layout.addWidget(make_mesh_button) #add edit fields for mesh properties cell_size_label = QtGui.QLabel('Cell Size [East, North] (m)') cell_size_east_edit = QtGui.QLineEdit() cell_size_east_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_east)) - cell_size_east_edit.textChanged[str].connect(self.set_cell_size_east) + cell_size_east_edit.textEdited[str].connect(self.set_cell_size_east) cell_size_north_edit = QtGui.QLineEdit() cell_size_north_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_north)) - cell_size_north_edit.textChanged[str].connect(self.set_cell_size_north) + cell_size_north_edit.textEdited[str].connect(self.set_cell_size_north) cell_size_grid = QtGui.QHBoxLayout() cell_size_grid.addWidget(cell_size_label) cell_size_grid.addWidget(cell_size_east_edit) cell_size_grid.addWidget(cell_size_north_edit) + + pad_label = QtGui.QLabel('# of padding cells [East, North, Z]') + pad_east_edit = QtGui.QLineEdit() + pad_east_edit.setText('{0:.0f}'.format(self.modem_model.pad_east)) + pad_east_edit.textEdited[str].connect(self.set_pad_east) + + pad_north_edit = QtGui.QLineEdit() + pad_north_edit.setText('{0:.0f}'.format(self.modem_model.pad_north)) + pad_north_edit.textEdited[str].connect(self.set_pad_north) + + pad_z_edit = QtGui.QLineEdit() + pad_z_edit.setText('{0:.0f}'.format(self.modem_model.pad_z)) + pad_z_edit.textEdited[str].connect(self.set_pad_z) + + #add to cell size grid + cell_size_grid.addWidget(pad_label) + cell_size_grid.addWidget(pad_east_edit) + cell_size_grid.addWidget(pad_north_edit) + cell_size_grid.addWidget(pad_z_edit) + + pad_stretch_label = QtGui.QLabel('Stretch factor [H, V]') + pad_stretch_h_edit = QtGui.QLineEdit() + pad_stretch_h_edit.setText('{0:.2f}'.format(self.modem_model.pad_stretch_h)) + pad_stretch_h_edit.textEdited[str].connect(self.set_pad_stretch_h) + + pad_stretch_v_edit = QtGui.QLineEdit() + pad_stretch_v_edit.setText('{0:.2f}'.format(self.modem_model.pad_stretch_v)) + pad_stretch_v_edit.textEdited[str].connect(self.set_pad_stretch_v) + + #add to cell size grid + cell_size_grid.addWidget(pad_stretch_label) + cell_size_grid.addWidget(pad_stretch_h_edit) + cell_size_grid.addWidget(pad_stretch_v_edit) + + num_z_layers_label = QtGui.QLabel('No. Z-layers') + num_z_layers_edit = QtGui.QLineEdit() + num_z_layers_edit.setText('{0:.0f}'.format(self.modem_model.n_layers)) + num_z_layers_edit.textEdited[str].connect(self.set_num_z_layers) + + z1_layer_label = QtGui.QLabel('Z1 Layer (m)') + z1_layer_edit = QtGui.QLineEdit() + z1_layer_edit.setText('{0:.2f}'.format(self.modem_model.z1_layer)) + z1_layer_edit.textEdited[str].connect(self.set_z1_layer) + + z_target_label = QtGui.QLabel('Target Layer (m)') + z_target_edit = QtGui.QLineEdit() + z_target_edit.setText('{0:.2f}'.format(self.modem_model.z_target_depth)) + z_target_edit.textEdited[str].connect(self.set_z_target) + + z_bottom_label = QtGui.QLabel('Bottom Layer (m)') + z_bottom_edit = QtGui.QLineEdit() + z_bottom_edit.setText('{0:.2f}'.format(self.modem_model.z_bottom)) + z_bottom_edit.textEdited[str].connect(self.set_z_bottom) + + z_grid = QtGui.QHBoxLayout() + z_grid.addWidget(num_z_layers_label) + z_grid.addWidget(num_z_layers_edit) + z_grid.addWidget(z1_layer_label) + z_grid.addWidget(z1_layer_edit) + z_grid.addWidget(z_target_label) + z_grid.addWidget(z_target_edit) + z_grid.addWidget(z_bottom_label) + z_grid.addWidget(z_bottom_edit) + # this is the Canvas Widget that displays the `figure` # it takes the `figure` instance as a parameter to __init__ self.figure = Figure(dpi=150) @@ -143,6 +211,7 @@ def ui_setup(self): mpl_vbox.addWidget(self.mpl_toolbar) mpl_vbox.addWidget(self.mpl_widget) mpl_vbox.addLayout(cell_size_grid) + mpl_vbox.addLayout(z_grid) # set the layout the main window layout = QtGui.QHBoxLayout() @@ -157,6 +226,155 @@ def ui_setup(self): QtCore.QMetaObject.connectSlotsByName(self) + def plot_mesh(self): + """ + plot mesh after a parameter is changed + """ + + try: + self.modem_model.make_mesh() + except AttributeError: + print 'No stations exist to create a mesh' + + except modem.ModEMError: + print 'No stations exist to create a mesh' + + station_marker = 'v' + marker_color = 'b' + marker_size = 2 + + line_color = 'k' + line_width = .5 + + plt.rcParams['figure.subplot.hspace'] = .3 + plt.rcParams['figure.subplot.wspace'] = .3 + plt.rcParams['figure.subplot.left'] = .12 + plt.rcParams['font.size'] = 10 + + self.figure.clf() + self.figure.subplots_adjust(left=.12, right=.98, top=.95, bottom=.12) + + #make a rotation matrix to rotate data + #cos_ang = np.cos(np.deg2rad(self.mesh_rotation_angle)) + #sin_ang = np.sin(np.deg2rad(self.mesh_rotation_angle)) + + #turns out ModEM has not accomodated rotation of the grid, so for + #now we will not rotate anything. + cos_ang = 1 + sin_ang = 0 + + #--->plot map view + ax1 = self.figure.add_subplot(1, 2, 1, aspect='equal') + + + #plot station locations + plot_east = self.modem_model.station_locations['rel_east'] + plot_north = self.modem_model.station_locations['rel_north'] + + ax1.scatter(plot_east, + plot_north, + marker=station_marker, + c=marker_color, + s=marker_size) + + + east_line_xlist = [] + east_line_ylist = [] + north_min = self.modem_model.grid_north.min() + north_max = self.modem_model.grid_north.max() + for xx in self.modem_model.grid_east: + east_line_xlist.extend([xx*cos_ang+north_min*sin_ang, + xx*cos_ang+north_max*sin_ang]) + east_line_xlist.append(None) + east_line_ylist.extend([-xx*sin_ang+north_min*cos_ang, + -xx*sin_ang+north_max*cos_ang]) + east_line_ylist.append(None) + ax1.plot(east_line_xlist, + east_line_ylist, + lw=line_width, + color=line_color) + + north_line_xlist = [] + north_line_ylist = [] + east_max = self.modem_model.grid_east.max() + east_min = self.modem_model.grid_east.min() + for yy in self.modem_model.grid_north: + north_line_xlist.extend([east_min*cos_ang+yy*sin_ang, + east_max*cos_ang+yy*sin_ang]) + north_line_xlist.append(None) + north_line_ylist.extend([-east_min*sin_ang+yy*cos_ang, + -east_max*sin_ang+yy*cos_ang]) + north_line_ylist.append(None) + ax1.plot(north_line_xlist, + north_line_ylist, + lw=line_width, + color=line_color) + +# ax1.set_xlim(plot_east.min()-10*self.modem_model.cell_size_east, +# plot_east.max()+10*self.modem_model.cell_size_east) +# +# ax1.set_ylim(plot_north.min()-10*self.modem_model.cell_size_north, +# plot_north.max()+ 10*self.modem_model.cell_size_east) + + ax1.set_ylabel('Northing (m)', fontdict={'size':9,'weight':'bold'}) + ax1.set_xlabel('Easting (m)', fontdict={'size':9,'weight':'bold'}) + ax1.axis('tight') + + ##----plot depth view + ax2 = self.figure.add_subplot(1, 2, 2, aspect='auto', sharex=ax1) + + + #plot the grid + east_line_xlist = [] + east_line_ylist = [] + for xx in self.modem_model.grid_east: + east_line_xlist.extend([xx, xx]) + east_line_xlist.append(None) + east_line_ylist.extend([0, + self.modem_model.grid_z.max()]) + east_line_ylist.append(None) + ax2.plot(east_line_xlist, + east_line_ylist, + lw=line_width, + color=line_color) + + z_line_xlist = [] + z_line_ylist = [] + for zz in self.modem_model.grid_z: + z_line_xlist.extend([self.modem_model.grid_east.min(), + self.modem_model.grid_east.max()]) + z_line_xlist.append(None) + z_line_ylist.extend([zz, zz]) + z_line_ylist.append(None) + ax2.plot(z_line_xlist, + z_line_ylist, + lw=line_width, + color=line_color) + + + #--> plot stations + ax2.scatter(plot_east, + [0]*self.modem_model.station_locations.shape[0], + marker=station_marker, + c=marker_color, + s=marker_size) + + + + ax2.set_ylim(self.modem_model.grid_z.max(), -200) + + +# ax1.set_xlim(plot_east.min()-10*self.modem_model.cell_size_east, +# plot_east.max()+10*self.modem_model.cell_size_east) + + ax2.set_ylabel('Depth (m)', fontdict={'size':11, 'weight':'bold'}) + ax2.set_xlabel('Easting (m)', fontdict={'size':11, 'weight':'bold'}) + + ax2.axis('tight') + + # --> be sure to draw the plot + self.mpl_widget.draw() + def get_data_fn(self): """ get the filename from a file dialogue @@ -215,6 +433,8 @@ def save_model_fn(self): sv_basename = os.path.basename(save_fn) self.modem_model.write_model_file(save_path=sv_path, model_fn_basename=sv_basename) + + self.ui_setup() def locate_station(self): @@ -239,8 +459,8 @@ def load_edi_files(self): for station in self.modem_model.station_locations['station']: item = QtGui.QListWidgetItem() item.setText(station) - item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) - item.setCheckState(QtCore.Qt.Checked) + #item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) + #item.setCheckState(QtCore.Qt.Checked) self.list_widget.addItem(item) def set_cell_size_east(self, text): @@ -249,13 +469,41 @@ def set_cell_size_east(self, text): except ValueError: print 'Enter floating point number' + def set_cell_size_north(self, text): try: self.modem_model.cell_size_north = float(text) except ValueError: print 'Enter floating point number' + + + def set_pad_east(self, text): + self.modem_model.pad_east = int(text) + + def set_pad_north(self, text): + self.modem_model.pad_north = int(text) + + def set_pad_z(self, text): + self.modem_model.pad_z = int(text) + + def set_pad_stretch_h(self, text): + self.modem_model.pad_stretch_h = float(text) + + def set_pad_stretch_v(self, text): + self.modem_model.pad_stretch_v = float(text) + def set_num_z_layers(self, text): + self.modem_model.n_layers = int(text) + + def set_z1_layer(self, text): + self.modem_model.z1_layer = float(text) + + def set_z_target(self, text): + self.modem_model.z_target_depth = float(text) + def set_z_bottom(self, text): + self.modem_model.z_bottom = float(text) + #def main(): def main(): From 551ff8bdb2966448a452a1a4985b8c81a5f58649 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 6 Jan 2015 14:01:47 -0800 Subject: [PATCH 006/124] fixed covariance in modem to out put the correct file. --- mtpy/modeling/modem_new.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 5eb8cee1..4f99b20c 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -2549,15 +2549,15 @@ def write_covariance_file(self, cov_fn=None, save_path=None, #--> smoothing in north direction n_smooth_line = '' - for zz in range(self.grid_dimensions[2]): + for zz in range(self.grid_dimensions[0]): n_smooth_line += ' {0:<5.1f}'.format(self.smoothing_north) clines.append(n_smooth_line+'\n') #--> smoothing in east direction e_smooth_line = '' - for zz in range(self.grid_dimensions[2]): + for zz in range(self.grid_dimensions[1]): e_smooth_line += ' {0:<5.1f}'.format(self.smoothing_east) - clines.append(n_smooth_line+'\n') + clines.append(e_smooth_line+'\n') #--> smoothing in vertical direction clines.append(' {0:<5.1f}\n'.format(self.smoothing_z)) From d3367e1baf9115d6a0d8f7c0111c512a29d937bb Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 8 Jan 2015 18:29:24 -0800 Subject: [PATCH 007/124] adding mesh builder gui for modem --- mtpy/gui/modem_mesh_builder.py | 356 ++++++++++++++++++++++++++++++--- 1 file changed, 329 insertions(+), 27 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index b0095b14..20c50f37 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -23,6 +23,20 @@ import matplotlib.colorbar as mcb import mtpy.imaging.mtcolors as mtcl import mtpy.gui.get_edi_files as mt_get_edi_files +import sys + + +class MyStream(QtCore.QObject): + """ + this class will emit a signal + """ + message = QtCore.pyqtSignal(str) + def __init__(self, parent=None): + super(MyStream, self).__init__(parent) + + def write(self, message): + self.message.emit(str(message)) + class Ui_Mesh_Window(QtGui.QMainWindow): """ @@ -45,6 +59,10 @@ def ui_setup(self): self.mesh_widget = MeshWidget() self.central_widget = self.setCentralWidget(self.mesh_widget) #self.central_widget.setLayout(self.v_layout) + self.my_stream = MyStream() + self.my_stream.message.connect(self.mesh_widget.normal_output) + + sys.stdout = self.my_stream QtCore.QMetaObject.connectSlotsByName(self) @@ -58,14 +76,31 @@ class MeshWidget(QtGui.QWidget): def __init__(self): super(MeshWidget, self).__init__() self.model_obj = modem.Model() + self.mpl_widget = MeshPlot() + + #sys.stdout = MyStream() + self.setup_ui() def setup_ui(self): - + # get edi files edi_button = QtGui.QPushButton('Get EDI Files') edi_button.clicked.connect(self.get_edi_files) + self.list_widget = QtGui.QListWidget() + self.list_widget.itemClicked.connect(self.select_station) + self.list_widget.setMaximumWidth(250) + + self.plot_mesh_button = QtGui.QPushButton('Make Mesh') + self.plot_mesh_button.clicked.connect(self.plot_mesh) + + self.save_mesh_button = QtGui.QPushButton('Save Mesh') + self.save_mesh_button.clicked.connect(self.save_mesh) + + self.output_box = QtGui.QTextEdit() + + #make a label for the mesh parameters parameters_label = QtGui.QLabel('Mesh Parameters') header_font = QtGui.QFont() header_font.setBold = True @@ -97,22 +132,85 @@ def setup_ui(self): self.cell_pad_z_edit.setText('{0:.0f}'.format(self.model_obj.pad_z)) self.cell_pad_z_edit.editingFinished.connect(self.set_cell_pad_z) + self.pad_h_label = QtGui.QLabel('Padding Factor [H, V]') + self.pad_h_edit = QtGui.QLineEdit() + self.pad_h_edit.setText('{0:.2f}'.format(self.model_obj.pad_stretch_h)) + self.pad_h_edit.editingFinished.connect(self.set_pad_h) + + self.pad_v_edit = QtGui.QLineEdit() + self.pad_v_edit.setText('{0:.2f}'.format(self.model_obj.pad_stretch_v)) + self.pad_v_edit.editingFinished.connect(self.set_pad_v) + + # vertical layer parameters + self.n_layers_label = QtGui.QLabel('Number of Vertical Layers') + self.n_layers_edit = QtGui.QLineEdit() + self.n_layers_edit.setText('{0:.0f}'.format(self.model_obj.n_layers)) + self.n_layers_edit.editingFinished.connect(self.set_n_layers) + + self.z1_layer_label = QtGui.QLabel('Thicknes of 1st layer (m)') + self.z1_layer_edit = QtGui.QLineEdit() + self.z1_layer_edit.setText('{0:.2f}'.format(self.model_obj.z1_layer)) + self.z1_layer_edit.editingFinished.connect(self.set_z1_layer) + + self.z_target_label = QtGui.QLabel('Target Depth (m)') + self.z_target_edit = QtGui.QLineEdit() + self.z_target_edit.setText('{0:.2f}'.format(self.model_obj.z_target_depth)) + self.z_target_edit.editingFinished.connect(self.set_z_target) + + self.z_bottom_label = QtGui.QLabel('Bottom of the Model (m)') + self.z_bottom_edit = QtGui.QLineEdit() + self.z_bottom_edit.setText('{0:.2f}'.format(self.model_obj.z_bottom)) + self.z_bottom_edit.editingFinished.connect(self.set_z_bottom) + + # rotation angle + self.rot_ang_label = QtGui.QLabel('Station Rotation Angle (deg)') + self.rot_ang_hint = QtGui.QLabel('[N=0, E=90]') + self.rot_ang_edit = QtGui.QLineEdit() + self.rot_ang_edit.setText('{0:.2f}'.format(self.model_obj.mesh_rotation_angle)) + self.rot_ang_edit.editingFinished.connect(self.set_rotation_angle) + + + #--- Set the layout ---------- self.grid_layout = QtGui.QGridLayout() self.grid_layout.addWidget(edi_button, 1, 0) - self.grid_layout.addWidget(parameters_label, 2, 0) + self.grid_layout.addWidget(self.plot_mesh_button, 1, 1, 1, 2) + self.grid_layout.addWidget(self.save_mesh_button, 1, 3) - self.grid_layout.addWidget(self.cell_size_label, 3, 0) - self.grid_layout.addWidget(self.cell_size_edit_east, 3, 1) - self.grid_layout.addWidget(self.cell_size_edit_north, 3, 2) + self.grid_layout.addWidget(self.list_widget, 2, 0) + self.grid_layout.addWidget(self.output_box, 2, 1, 1, 3) - self.grid_layout.addWidget(self.cell_pad_label, 4, 0) - self.grid_layout.addWidget(self.cell_pad_east_edit, 4, 1) - self.grid_layout.addWidget(self.cell_pad_north_edit, 4, 2) - self.grid_layout.addWidget(self.cell_pad_z_edit, 4, 3) + self.grid_layout.addWidget(parameters_label, 3, 0) + self.grid_layout.addWidget(self.cell_size_label, 4, 0) + self.grid_layout.addWidget(self.cell_size_edit_east, 4, 1) + self.grid_layout.addWidget(self.cell_size_edit_north, 4, 2) - self.mpl_widget = MeshPlot() + self.grid_layout.addWidget(self.cell_pad_label, 5, 0) + self.grid_layout.addWidget(self.cell_pad_east_edit, 5, 1) + self.grid_layout.addWidget(self.cell_pad_north_edit, 5, 2) + self.grid_layout.addWidget(self.cell_pad_z_edit, 5, 3) + + self.grid_layout.addWidget(self.pad_h_label, 6, 0) + self.grid_layout.addWidget(self.pad_h_edit, 6, 1) + self.grid_layout.addWidget(self.pad_v_edit, 6, 2) + + self.grid_layout.addWidget(self.n_layers_label, 7, 0) + self.grid_layout.addWidget(self.n_layers_edit, 7, 1) + + self.grid_layout.addWidget(self.z1_layer_label, 8, 0) + self.grid_layout.addWidget(self.z1_layer_edit, 8, 1) + + self.grid_layout.addWidget(self.z_target_label, 9, 0) + self.grid_layout.addWidget(self.z_target_edit, 9, 1) + + self.grid_layout.addWidget(self.z_bottom_label, 10, 0) + self.grid_layout.addWidget(self.z_bottom_edit, 10, 1) + + self.grid_layout.addWidget(self.rot_ang_label, 11, 0) + self.grid_layout.addWidget(self.rot_ang_edit, 11, 1) + self.grid_layout.addWidget(self.rot_ang_hint, 11, 2) + self.h_layout = QtGui.QHBoxLayout() self.h_layout.addLayout(self.grid_layout) self.h_layout.addWidget(self.mpl_widget) @@ -127,35 +225,84 @@ def get_edi_files(self): fn_list = self.dialog_box.getOpenFileNames( caption='Choose EDI Files', filter='*.edi') - self.edi_list = [] + edi_list = [] + self.list_widget.clear() for fn in fn_list: - self.edi_list.append(str(fn)) - print os.path.basename(str(fn)) + self.list_widget.addItem(os.path.basename(str(fn))[:-4]) + edi_list.append(str(fn)) + + self.model_obj.edi_list = edi_list def set_cell_size_east_return(self): self.model_obj.cell_size_east = float(str(self.cell_size_edit_east.text())) self.cell_size_edit_east.setText('{0:.2f}'.format(self.model_obj.cell_size_east)) - print self.model_obj.cell_size_east def set_cell_size_north_return(self): self.model_obj.cell_size_north = float(str(self.cell_size_edit_north.text())) self.cell_size_edit_north.setText('{0:.2f}'.format(self.model_obj.cell_size_north)) - print self.model_obj.cell_size_north def set_cell_pad_east(self): - self.model_obj.pad_east = float(str(self.cell_pad_east_edit.text())) - self.cell_pad_east_edit.setText('{0:.2f}'.format(self.model_obj.cell_pad_east)) - print self.model_obj.pad_east + self.model_obj.pad_east = int(str(self.cell_pad_east_edit.text())) + self.cell_pad_east_edit.setText('{0:.0f}'.format(self.model_obj.pad_east)) def set_cell_pad_north(self): - self.model_obj.pad_north = float(str(self.cell_pad_north_edit.text())) - self.cell_pad_north_edit.setText('{0:.2f}'.format(self.model_obj.cell_pad_north)) - print self.model_obj.pad_north + self.model_obj.pad_north = int(str(self.cell_pad_north_edit.text())) + self.cell_pad_north_edit.setText('{0:.0f}'.format(self.model_obj.pad_north)) def set_cell_pad_z(self): - self.model_obj.pad_z = float(str(self.cell_pad_z_edit.text())) - self.cell_pad_z_edit.setText('{0:.2f}'.format(self.model_obj.cell_pad_z)) - print self.model_obj.pad_z + self.model_obj.pad_z = int(str(self.cell_pad_z_edit.text())) + self.cell_pad_z_edit.setText('{0:.0f}'.format(self.model_obj.pad_z)) + + def set_pad_h(self): + self.model_obj.pad_stretch_h = float(str(self.pad_h_edit.text())) + self.pad_h_edit.setText('{0:.2f}'.format(self.model_obj.pad_stretch_h)) + + def set_pad_v(self): + self.model_obj.pad_stretch_v = float(str(self.pad_v_edit.text())) + self.pad_v_edit.setText('{0:.2f}'.format(self.model_obj.pad_stretch_v)) + + def set_n_layers(self): + self.model_obj.n_layers = int(str(self.n_layers_edit.text())) + self.n_layers_edit.setText('{0:.0f}'.format(self.model_obj.n_layers)) + + def set_z1_layer(self): + self.model_obj.z1_layer = float(str(self.z1_layer_edit.text())) + self.z1_layer_edit.setText('{0:.2f}'.format(self.model_obj.z1_layer)) + + def set_z_target(self): + self.model_obj.z_target_depth = float(str(self.z_target_edit.text())) + self.z_target_edit.setText('{0:.2f}'.format(self.model_obj.z_target_depth)) + + def set_z_bottom(self): + self.model_obj.z_bottom = float(str(self.z_bottom_edit.text())) + self.z_bottom_edit.setText('{0:.2f}'.format(self.model_obj.z_bottom)) + + def set_rotation_angle(self): + self.model_obj.mesh_rotation_angle = float(str(self.rot_ang_edit.text())) + self.rot_ang_edit.setText('{0:.2f}'.format(self.model_obj.mesh_rotation_angle)) + + def select_station(self): + pass + + def plot_mesh(self): + self.mpl_widget.plot_mesh(self.model_obj) + + def save_mesh(self): + fn = QtGui.QFileDialog.getOpenFileNames(self, + caption='Choose Model File', + directory=os.getcwd()) + + self.model_obj.write_model_file(save_path=os.path.dirname(fn), + model_fn_basename=os.path.basename(fn)) + + + @QtCore.pyqtSlot(str) + def normal_output(self, message): + self.output_box.moveCursor(QtGui.QTextCursor.End) + self.output_box.insertPlainText(message) + + + #============================================================================== # Mesh Plot #============================================================================== @@ -168,11 +315,20 @@ def __init__(self): super(MeshPlot, self).__init__() self.subplot_right = .99 - self.subplot_left = .085 + self.subplot_left = .12 self.subplot_top = .92 self.subplot_bottom = .1 - self.subplot_hspace = .2 - self.subplot_wspace = .05 + self.subplot_hspace = .3 + self.subplot_wspace = .3 + + self.station_marker = 'v' + self.marker_color = 'b' + self.marker_size = 2 + + self.line_color = 'k' + self.line_width = .5 + + self.fs = 10 self.setup_ui() @@ -204,6 +360,152 @@ def setup_ui(self): self.mpl_widget.updateGeometry() + def plot_mesh(self, model_obj, east_limits=None, north_limits=None, + z_limits=None): + + try: + model_obj.make_mesh() + except AttributeError: + QtGui.QMessageBox.warning(self, + 'Cannot Make Mesh -- Need EDI Files', + "Please press the 'Get EDI Files' button to get files", + QtGui.QMessageBox.Cancel, + ) + return + + + self.figure.clf() + + #make a rotation matrix to rotate data + #cos_ang = np.cos(np.deg2rad(self.mesh_rotation_angle)) + #sin_ang = np.sin(np.deg2rad(self.mesh_rotation_angle)) + + #turns out ModEM has not accomodated rotation of the grid, so for + #now we will not rotate anything. + cos_ang = 1 + sin_ang = 0 + + #--->plot map view + ax1 = self.figure.add_subplot(1, 2, 1, aspect='equal') + + + #plot station locations + plot_east = model_obj.station_locations['rel_east'] + plot_north = model_obj.station_locations['rel_north'] + + ax1.scatter(plot_east, + plot_north, + marker=self.station_marker, + c=self.marker_color, + s=self.marker_size) + + + east_line_xlist = [] + east_line_ylist = [] + north_min = model_obj.grid_north.min() + north_max = model_obj.grid_north.max() + for xx in model_obj.grid_east: + east_line_xlist.extend([xx*cos_ang+north_min*sin_ang, + xx*cos_ang+north_max*sin_ang]) + east_line_xlist.append(None) + east_line_ylist.extend([-xx*sin_ang+north_min*cos_ang, + -xx*sin_ang+north_max*cos_ang]) + east_line_ylist.append(None) + ax1.plot(east_line_xlist, + east_line_ylist, + lw=self.line_width, + color=self.line_color) + + north_line_xlist = [] + north_line_ylist = [] + east_max = model_obj.grid_east.max() + east_min = model_obj.grid_east.min() + for yy in model_obj.grid_north: + north_line_xlist.extend([east_min*cos_ang+yy*sin_ang, + east_max*cos_ang+yy*sin_ang]) + north_line_xlist.append(None) + north_line_ylist.extend([-east_min*sin_ang+yy*cos_ang, + -east_max*sin_ang+yy*cos_ang]) + north_line_ylist.append(None) + ax1.plot(north_line_xlist, + north_line_ylist, + lw=self.line_width, + color=self.line_color) + + if east_limits == None: +# ax1.set_xlim(plot_east.min()-10*model_obj.cell_size_east, +# plot_east.max()+10*model_obj.cell_size_east) + pass + else: + ax1.set_xlim(east_limits) + + if north_limits == None: +# ax1.set_ylim(plot_north.min()-10*model_obj.cell_size_north, +# plot_north.max()+ 10*model_obj.cell_size_east) + pass + else: + ax1.set_ylim(north_limits) + + ax1.set_ylabel('Northing (m)', fontdict={'size':12, 'weight':'bold'}) + ax1.set_xlabel('Easting (m)', fontdict={'size':12, 'weight':'bold'}) + + ##----plot depth view + ax2 = self.figure.add_subplot(1, 2, 2, aspect='auto') + + + #plot the grid + east_line_xlist = [] + east_line_ylist = [] + for xx in model_obj.grid_east: + east_line_xlist.extend([xx, xx]) + east_line_xlist.append(None) + east_line_ylist.extend([0, + model_obj.grid_z.max()]) + east_line_ylist.append(None) + ax2.plot(east_line_xlist, + east_line_ylist, + lw=self.line_width, + color=self.line_color) + + z_line_xlist = [] + z_line_ylist = [] + for zz in model_obj.grid_z: + z_line_xlist.extend([model_obj.grid_east.min(), + model_obj.grid_east.max()]) + z_line_xlist.append(None) + z_line_ylist.extend([zz, zz]) + z_line_ylist.append(None) + ax2.plot(z_line_xlist, + z_line_ylist, + lw=self.line_width, + color=self.line_color) + + + #--> plot stations + ax2.scatter(plot_east, + [0]*model_obj.station_locations.shape[0], + marker=self.station_marker, + c=self.marker_color, + s=self.marker_size) + + + if z_limits == None: + ax2.set_ylim(model_obj.z_target_depth, -200) + else: + ax2.set_ylim(z_limits) + + if east_limits == None: + ax2.set_xlim(plot_east.min()-10*model_obj.cell_size_east, + plot_east.max()+10*model_obj.cell_size_east) + else: + ax2.set_xlim(east_limits) + + ax2.set_ylabel('Depth (m)', fontdict={'size':9, 'weight':'bold'}) + ax2.set_xlabel('Easting (m)', fontdict={'size':9, 'weight':'bold'}) + + self.mpl_widget.draw() + + def main(): #if __name__ == "__main__": import sys From ba7ea5e9f6f4131c171438b827accaf7a980d3db Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 9 Jan 2015 14:45:48 -0800 Subject: [PATCH 008/124] adding mesh builder gui for modem --- mtpy/gui/modem_mesh_builder.py | 727 ++++++++------------------------- 1 file changed, 162 insertions(+), 565 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index a0934cee..e88a17fe 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -22,7 +22,6 @@ from matplotlib.colors import Normalize import matplotlib.colorbar as mcb import mtpy.imaging.mtcolors as mtcl -<<<<<<< HEAD import mtpy.gui.get_edi_files as mt_get_edi_files import sys @@ -37,10 +36,6 @@ def __init__(self, parent=None): def write(self, message): self.message.emit(str(message)) - -======= -from mtpy.gui.get_edi_files import Get_EDI_Files ->>>>>>> 53b83affb477600fd1b3da94a6c2d754174c32ee class ModEM_Mesh_Window(QtGui.QMainWindow): """ @@ -94,12 +89,12 @@ def __init__(self): def setup_ui(self): # get edi files - edi_button = QtGui.QPushButton('Get EDI Files') - edi_button.clicked.connect(self.get_edi_files) + self.edi_button = QtGui.QPushButton('Get EDI Files') + self.edi_button.clicked.connect(self.get_edi_files) self.list_widget = QtGui.QListWidget() self.list_widget.itemClicked.connect(self.select_station) - self.list_widget.setMaximumWidth(250) + self.list_widget.setMaximumWidth(200) self.plot_mesh_button = QtGui.QPushButton('Make Mesh') self.plot_mesh_button.clicked.connect(self.plot_mesh) @@ -107,28 +102,33 @@ def setup_ui(self): self.save_mesh_button = QtGui.QPushButton('Save Mesh') self.save_mesh_button.clicked.connect(self.save_mesh) + self.output_box = QtGui.QTextEdit() #make a label for the mesh parameters - parameters_label = QtGui.QLabel('Mesh Parameters') + self.parameters_label = QtGui.QLabel('Mesh Parameters') header_font = QtGui.QFont() header_font.setBold = True header_font.setPointSize (16) - parameters_label.setFont(header_font) + self.parameters_label.setFont(header_font) # cell size - self.cell_size_label = QtGui.QLabel('Cell Size [E, N] (m)') + self.cell_size_label_east = QtGui.QLabel('Cell Size East (m)') + self.cell_size_label_north = QtGui.QLabel('Cell Size North (m)') self.cell_size_edit_east = QtGui.QLineEdit() self.cell_size_edit_east.setText('{0:.2f}'.format(self.model_obj.cell_size_east)) - self.cell_size_edit_east.editingFinished.connect(self.set_cell_size_east_return) + self.cell_size_edit_east.editingFinished.connect(self.set_cell_size_east) self.cell_size_edit_north = QtGui.QLineEdit() self.cell_size_edit_north.setText('{0:.2f}'.format(self.model_obj.cell_size_north)) - self.cell_size_edit_north.editingFinished.connect(self.set_cell_size_north_return) + self.cell_size_edit_north.editingFinished.connect(self.set_cell_size_north) # cell padding - self.cell_pad_label = QtGui.QLabel('# of Pad cells [E, N, V]') + self.cell_pad_label_east = QtGui.QLabel('# of Pad cells E') + self.cell_pad_label_north = QtGui.QLabel('# of Pad cells N') + self.cell_pad_label_z = QtGui.QLabel('# of Pad cells Z') + self.cell_pad_east_edit = QtGui.QLineEdit() self.cell_pad_east_edit.setText('{0:.0f}'.format(self.model_obj.pad_east)) self.cell_pad_east_edit.editingFinished.connect(self.set_cell_pad_east) @@ -141,7 +141,9 @@ def setup_ui(self): self.cell_pad_z_edit.setText('{0:.0f}'.format(self.model_obj.pad_z)) self.cell_pad_z_edit.editingFinished.connect(self.set_cell_pad_z) - self.pad_h_label = QtGui.QLabel('Padding Factor [H, V]') + self.pad_h_label = QtGui.QLabel('Horiz. Padding Factor') + self.pad_v_label = QtGui.QLabel('Vert. Padding Factor') + self.pad_h_edit = QtGui.QLineEdit() self.pad_h_edit.setText('{0:.2f}'.format(self.model_obj.pad_stretch_h)) self.pad_h_edit.editingFinished.connect(self.set_pad_h) @@ -172,61 +174,124 @@ def setup_ui(self): self.z_bottom_edit.editingFinished.connect(self.set_z_bottom) # rotation angle - self.rot_ang_label = QtGui.QLabel('Station Rotation Angle (deg)') + self.rot_ang_label = QtGui.QLabel('Mesh Rotation (deg)') self.rot_ang_hint = QtGui.QLabel('[N=0, E=90]') self.rot_ang_edit = QtGui.QLineEdit() self.rot_ang_edit.setText('{0:.2f}'.format(self.model_obj.mesh_rotation_angle)) self.rot_ang_edit.editingFinished.connect(self.set_rotation_angle) + # starting resistivity + self.rho_start_label = QtGui.QLabel('Starting rho (Ohmm)') + self.rho_start_edit = QtGui.QLineEdit() + self.rho_start_edit.setText('{0:.2f}'.format(100)) + self.rho_start_edit.editingFinished.connect(self.set_rho) #--- Set the layout ---------- + self.edi_grid = QtGui.QVBoxLayout() + self.edi_grid.addWidget(self.edi_button) + self.edi_grid.addWidget(self.list_widget) + self.grid_layout = QtGui.QGridLayout() - self.grid_layout.addWidget(edi_button, 1, 0) - self.grid_layout.addWidget(self.plot_mesh_button, 1, 1, 1, 2) - self.grid_layout.addWidget(self.save_mesh_button, 1, 3) - self.grid_layout.addWidget(self.list_widget, 2, 0) - self.grid_layout.addWidget(self.output_box, 2, 1, 1, 3) + self.grid_layout.addWidget(self.plot_mesh_button, 0, 0) + self.grid_layout.addWidget(self.save_mesh_button, 0, 1) - self.grid_layout.addWidget(parameters_label, 3, 0) + self.grid_layout.addWidget(self.parameters_label, 2, 0, 1, 2) + + self.grid_layout.addWidget(self.cell_size_label_east, 3, 0) + self.grid_layout.addWidget(self.cell_size_edit_east, 3, 1) - self.grid_layout.addWidget(self.cell_size_label, 4, 0) - self.grid_layout.addWidget(self.cell_size_edit_east, 4, 1) - self.grid_layout.addWidget(self.cell_size_edit_north, 4, 2) + self.grid_layout.addWidget(self.cell_size_label_north, 4, 0) + self.grid_layout.addWidget(self.cell_size_edit_north, 4, 1) - self.grid_layout.addWidget(self.cell_pad_label, 5, 0) + self.grid_layout.addWidget(self.cell_pad_label_east, 5, 0) self.grid_layout.addWidget(self.cell_pad_east_edit, 5, 1) - self.grid_layout.addWidget(self.cell_pad_north_edit, 5, 2) - self.grid_layout.addWidget(self.cell_pad_z_edit, 5, 3) - self.grid_layout.addWidget(self.pad_h_label, 6, 0) - self.grid_layout.addWidget(self.pad_h_edit, 6, 1) - self.grid_layout.addWidget(self.pad_v_edit, 6, 2) + self.grid_layout.addWidget(self.cell_pad_label_north, 6, 0) + self.grid_layout.addWidget(self.cell_pad_north_edit, 6, 1) + + self.grid_layout.addWidget(self.cell_pad_label_z, 7, 0) + self.grid_layout.addWidget(self.cell_pad_z_edit, 7, 1) - self.grid_layout.addWidget(self.n_layers_label, 7, 0) - self.grid_layout.addWidget(self.n_layers_edit, 7, 1) + self.grid_layout.addWidget(self.pad_h_label, 8, 0) + self.grid_layout.addWidget(self.pad_h_edit, 8, 1) - self.grid_layout.addWidget(self.z1_layer_label, 8, 0) - self.grid_layout.addWidget(self.z1_layer_edit, 8, 1) + self.grid_layout.addWidget(self.pad_v_label, 9, 0 ) + self.grid_layout.addWidget(self.pad_v_edit, 9, 1) - self.grid_layout.addWidget(self.z_target_label, 9, 0) - self.grid_layout.addWidget(self.z_target_edit, 9, 1) + self.grid_layout.addWidget(self.n_layers_label, 10, 0) + self.grid_layout.addWidget(self.n_layers_edit, 10, 1) - self.grid_layout.addWidget(self.z_bottom_label, 10, 0) - self.grid_layout.addWidget(self.z_bottom_edit, 10, 1) + self.grid_layout.addWidget(self.z1_layer_label, 11, 0) + self.grid_layout.addWidget(self.z1_layer_edit, 11, 1) - self.grid_layout.addWidget(self.rot_ang_label, 11, 0) - self.grid_layout.addWidget(self.rot_ang_edit, 11, 1) - self.grid_layout.addWidget(self.rot_ang_hint, 11, 2) + self.grid_layout.addWidget(self.z_target_label, 12, 0) + self.grid_layout.addWidget(self.z_target_edit, 12, 1) + + self.grid_layout.addWidget(self.z_bottom_label, 13, 0) + self.grid_layout.addWidget(self.z_bottom_edit, 13, 1) + + self.grid_layout.addWidget(self.rot_ang_label, 14, 0) + self.grid_layout.addWidget(self.rot_ang_edit, 14, 1) + self.grid_layout.addWidget(self.rot_ang_hint, 15, 1) + + self.grid_layout.addWidget(self.rho_start_label, 16, 0) + self.grid_layout.addWidget(self.rho_start_edit, 16, 1) +# self.grid_layout.addWidget(self.rot_ang_hint, 11, 2) + +# self.grid_layout.addWidget(self.edi_button, 1, 0) +# self.grid_layout.addWidget(self.plot_mesh_button, 1, 1, 1, 2) +# self.grid_layout.addWidget(self.save_mesh_button, 1, 3) +# +# self.grid_layout.addWidget(self.list_widget, 2, 0) +# self.grid_layout.addWidget(self.output_box, 2, 1, 1, 3) +# +# self.grid_layout.addWidget(self.parameters_label, 3, 0) +# +# self.grid_layout.addWidget(self.cell_size_label, 4, 0) +# self.grid_layout.addWidget(self.cell_size_edit_east, 4, 1) +# self.grid_layout.addWidget(self.cell_size_edit_north, 4, 2) +# +# self.grid_layout.addWidget(self.cell_pad_label, 5, 0) +# self.grid_layout.addWidget(self.cell_pad_east_edit, 5, 1) +# self.grid_layout.addWidget(self.cell_pad_north_edit, 5, 2) +# self.grid_layout.addWidget(self.cell_pad_z_edit, 5, 3) +# +# self.grid_layout.addWidget(self.pad_h_label, 6, 0) +# self.grid_layout.addWidget(self.pad_h_edit, 6, 1) +# self.grid_layout.addWidget(self.pad_v_edit, 6, 2) +# +# self.grid_layout.addWidget(self.n_layers_label, 7, 0) +# self.grid_layout.addWidget(self.n_layers_edit, 7, 1) +# +# self.grid_layout.addWidget(self.z1_layer_label, 8, 0) +# self.grid_layout.addWidget(self.z1_layer_edit, 8, 1) +# +# self.grid_layout.addWidget(self.z_target_label, 9, 0) +# self.grid_layout.addWidget(self.z_target_edit, 9, 1) +# +# self.grid_layout.addWidget(self.z_bottom_label, 10, 0) +# self.grid_layout.addWidget(self.z_bottom_edit, 10, 1) +# +# self.grid_layout.addWidget(self.rot_ang_label, 11, 0) +# self.grid_layout.addWidget(self.rot_ang_edit, 11, 1) +# self.grid_layout.addWidget(self.rot_ang_hint, 11, 2) self.h_layout = QtGui.QHBoxLayout() + self.h_layout.addLayout(self.edi_grid) self.h_layout.addLayout(self.grid_layout) - self.h_layout.addWidget(self.mpl_widget) - self.setLayout(self.h_layout) + self.v_layout = QtGui.QVBoxLayout() + self.v_layout.addLayout(self.h_layout) + self.v_layout.addWidget(self.output_box) + + self.full_layout = QtGui.QHBoxLayout() + self.full_layout.addLayout(self.v_layout) + self.full_layout.addWidget(self.mpl_widget) + + self.setLayout(self.full_layout) -<<<<<<< HEAD def get_edi_files(self): """ get a list of edi files @@ -243,497 +308,15 @@ def get_edi_files(self): self.model_obj.edi_list = edi_list - def set_cell_size_east_return(self): + def set_cell_size_east(self): self.model_obj.cell_size_east = float(str(self.cell_size_edit_east.text())) self.cell_size_edit_east.setText('{0:.2f}'.format(self.model_obj.cell_size_east)) - def set_cell_size_north_return(self): + def set_cell_size_north(self): self.model_obj.cell_size_north = float(str(self.cell_size_edit_north.text())) self.cell_size_edit_north.setText('{0:.2f}'.format(self.model_obj.cell_size_north)) -======= - self.setWindowTitle('Make ModEM Mesh') - self.resize(1920, 1080) - - #-------------- MENU BAR --------------------------------- - # add a menu bar to the top of the window - menu_bar = QtGui.QMenuBar(self) - menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 38)) - menu_bar.setObjectName("menu_bar") - - # --> Data - menu_data = QtGui.QMenu(menu_bar) - menu_data.setTitle("Data File") - - # create an action to the data tab - action_data_open = QtGui.QAction(self) - action_data_open.setText('Open') - action_data_open.triggered.connect(self.get_data_fn) - - # add the action to the data tap - menu_data.addAction(action_data_open) - menu_bar.addAction(menu_data.menuAction()) - - #----------> Model ------------------------------------- - menu_model = QtGui.QMenu(menu_bar) - menu_model.setTitle("Model File") - - # create an action to the model tab - action_model_open = QtGui.QAction(self) - action_model_open.setText('Open') - action_model_open.triggered.connect(self.get_model_fn) - - action_model_save = QtGui.QAction(self) - action_model_save.setText('Save') - action_model_save.triggered.connect(self.save_model_fn) - - # add the action to the model tap - menu_model.addAction(action_model_open) - menu_bar.addAction(menu_model.menuAction()) - - self.setMenuBar(menu_bar) - - #------------------Layout of main window------------------------------ - #need to have a central widget - self.central_widget = QtGui.QWidget() - self.setCentralWidget(self.central_widget) - - #--> list widget - self.list_qmodel = QtGui.QStandardItemModel() - # make a widget that will be the station list - self.list_widget = QtGui.QListWidget() - self.list_widget.itemSelectionChanged - self.list_widget.itemClicked.connect(self.locate_station) - self.list_widget.setMaximumWidth(150) - - #Load edi button - load_edi_button = QtGui.QPushButton('Load .edi Files') - load_edi_button.clicked.connect(self.load_edi_files) - - make_mesh_button = QtGui.QPushButton('Plot Mesh') - make_mesh_button.clicked.connect(self.plot_mesh) - - edi_layout = QtGui.QVBoxLayout() - edi_layout.addWidget(self.list_widget) - edi_layout.addWidget(load_edi_button) - edi_layout.addWidget(make_mesh_button) - - #add edit fields for mesh properties - cell_size_label = QtGui.QLabel('Cell Size [East, North] (m)') - cell_size_east_edit = QtGui.QLineEdit() - cell_size_east_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_east)) - cell_size_east_edit.textEdited[str].connect(self.set_cell_size_east) - - cell_size_north_edit = QtGui.QLineEdit() - cell_size_north_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_north)) - cell_size_north_edit.textEdited[str].connect(self.set_cell_size_north) - - cell_size_grid = QtGui.QHBoxLayout() - cell_size_grid.addWidget(cell_size_label) - cell_size_grid.addWidget(cell_size_east_edit) - cell_size_grid.addWidget(cell_size_north_edit) - - pad_label = QtGui.QLabel('# of padding cells [East, North, Z]') - pad_east_edit = QtGui.QLineEdit() - pad_east_edit.setText('{0:.0f}'.format(self.modem_model.pad_east)) - pad_east_edit.textEdited[str].connect(self.set_pad_east) - - pad_north_edit = QtGui.QLineEdit() - pad_north_edit.setText('{0:.0f}'.format(self.modem_model.pad_north)) - pad_north_edit.textEdited[str].connect(self.set_pad_north) - - pad_z_edit = QtGui.QLineEdit() - pad_z_edit.setText('{0:.0f}'.format(self.modem_model.pad_z)) - pad_z_edit.textEdited[str].connect(self.set_pad_z) - - #add to cell size grid - cell_size_grid.addWidget(pad_label) - cell_size_grid.addWidget(pad_east_edit) - cell_size_grid.addWidget(pad_north_edit) - cell_size_grid.addWidget(pad_z_edit) - - pad_stretch_label = QtGui.QLabel('Stretch factor [H, V]') - pad_stretch_h_edit = QtGui.QLineEdit() - pad_stretch_h_edit.setText('{0:.2f}'.format(self.modem_model.pad_stretch_h)) - pad_stretch_h_edit.textEdited[str].connect(self.set_pad_stretch_h) - - pad_stretch_v_edit = QtGui.QLineEdit() - pad_stretch_v_edit.setText('{0:.2f}'.format(self.modem_model.pad_stretch_v)) - pad_stretch_v_edit.textEdited[str].connect(self.set_pad_stretch_v) - - #add to cell size grid - cell_size_grid.addWidget(pad_stretch_label) - cell_size_grid.addWidget(pad_stretch_h_edit) - cell_size_grid.addWidget(pad_stretch_v_edit) - - num_z_layers_label = QtGui.QLabel('No. Z-layers') - num_z_layers_edit = QtGui.QLineEdit() - num_z_layers_edit.setText('{0:.0f}'.format(self.modem_model.n_layers)) - num_z_layers_edit.textEdited[str].connect(self.set_num_z_layers) - - z1_layer_label = QtGui.QLabel('Z1 Layer (m)') - z1_layer_edit = QtGui.QLineEdit() - z1_layer_edit.setText('{0:.2f}'.format(self.modem_model.z1_layer)) - z1_layer_edit.textEdited[str].connect(self.set_z1_layer) - - z_target_label = QtGui.QLabel('Target Layer (m)') - z_target_edit = QtGui.QLineEdit() - z_target_edit.setText('{0:.2f}'.format(self.modem_model.z_target_depth)) - z_target_edit.textEdited[str].connect(self.set_z_target) - - z_bottom_label = QtGui.QLabel('Bottom Layer (m)') - z_bottom_edit = QtGui.QLineEdit() - z_bottom_edit.setText('{0:.2f}'.format(self.modem_model.z_bottom)) - z_bottom_edit.textEdited[str].connect(self.set_z_bottom) - - z_grid = QtGui.QHBoxLayout() - z_grid.addWidget(num_z_layers_label) - z_grid.addWidget(num_z_layers_edit) - z_grid.addWidget(z1_layer_label) - z_grid.addWidget(z1_layer_edit) - z_grid.addWidget(z_target_label) - z_grid.addWidget(z_target_edit) - z_grid.addWidget(z_bottom_label) - z_grid.addWidget(z_bottom_edit) - - # this is the Canvas Widget that displays the `figure` - # it takes the `figure` instance as a parameter to __init__ - self.figure = Figure(dpi=150) - self.mpl_widget = FigureCanvas(self.figure) - -# self.figure.subplots_adjust(left=self.subplot_left, -# right=self.subplot_right, -# bottom=self.subplot_bottom, -# top=self.subplot_top, -# hspace=self.subplot_hspace, -# wspace=self.subplot_wspace) - - #make sure the figure takes up the entire plottable space - self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Expanding) - - # this is the Navigation widget - # it takes the Canvas widget and a parent - self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) - - # set the layout for the plot - mpl_vbox = QtGui.QVBoxLayout() - mpl_vbox.addWidget(self.mpl_toolbar) - mpl_vbox.addWidget(self.mpl_widget) - mpl_vbox.addLayout(cell_size_grid) - mpl_vbox.addLayout(z_grid) - - # set the layout the main window - layout = QtGui.QHBoxLayout() - layout.addLayout(edi_layout) - layout.addLayout(mpl_vbox) - self.central_widget.setLayout(layout) - - #set the geometry of each widget - self.list_widget.setObjectName("listWidget") - self.mpl_widget.setObjectName("mpl_widget") - self.mpl_widget.updateGeometry() - - QtCore.QMetaObject.connectSlotsByName(self) - - def plot_mesh(self): - """ - plot mesh after a parameter is changed - """ - - try: - self.modem_model.make_mesh() - except AttributeError: - print 'No stations exist to create a mesh' - - except modem.ModEMError: - print 'No stations exist to create a mesh' - - station_marker = 'v' - marker_color = 'b' - marker_size = 2 - - line_color = 'k' - line_width = .5 - - plt.rcParams['figure.subplot.hspace'] = .3 - plt.rcParams['figure.subplot.wspace'] = .3 - plt.rcParams['figure.subplot.left'] = .12 - plt.rcParams['font.size'] = 10 - - self.figure.clf() - self.figure.subplots_adjust(left=.12, right=.98, top=.95, bottom=.12) - - #make a rotation matrix to rotate data - #cos_ang = np.cos(np.deg2rad(self.mesh_rotation_angle)) - #sin_ang = np.sin(np.deg2rad(self.mesh_rotation_angle)) - - #turns out ModEM has not accomodated rotation of the grid, so for - #now we will not rotate anything. - cos_ang = 1 - sin_ang = 0 - - #--->plot map view - ax1 = self.figure.add_subplot(1, 2, 1, aspect='equal') - - - #plot station locations - plot_east = self.modem_model.station_locations['rel_east'] - plot_north = self.modem_model.station_locations['rel_north'] - - ax1.scatter(plot_east, - plot_north, - marker=station_marker, - c=marker_color, - s=marker_size) - - - east_line_xlist = [] - east_line_ylist = [] - north_min = self.modem_model.grid_north.min() - north_max = self.modem_model.grid_north.max() - for xx in self.modem_model.grid_east: - east_line_xlist.extend([xx*cos_ang+north_min*sin_ang, - xx*cos_ang+north_max*sin_ang]) - east_line_xlist.append(None) - east_line_ylist.extend([-xx*sin_ang+north_min*cos_ang, - -xx*sin_ang+north_max*cos_ang]) - east_line_ylist.append(None) - ax1.plot(east_line_xlist, - east_line_ylist, - lw=line_width, - color=line_color) - - north_line_xlist = [] - north_line_ylist = [] - east_max = self.modem_model.grid_east.max() - east_min = self.modem_model.grid_east.min() - for yy in self.modem_model.grid_north: - north_line_xlist.extend([east_min*cos_ang+yy*sin_ang, - east_max*cos_ang+yy*sin_ang]) - north_line_xlist.append(None) - north_line_ylist.extend([-east_min*sin_ang+yy*cos_ang, - -east_max*sin_ang+yy*cos_ang]) - north_line_ylist.append(None) - ax1.plot(north_line_xlist, - north_line_ylist, - lw=line_width, - color=line_color) - -# ax1.set_xlim(plot_east.min()-10*self.modem_model.cell_size_east, -# plot_east.max()+10*self.modem_model.cell_size_east) -# -# ax1.set_ylim(plot_north.min()-10*self.modem_model.cell_size_north, -# plot_north.max()+ 10*self.modem_model.cell_size_east) - - ax1.set_ylabel('Northing (m)', fontdict={'size':9,'weight':'bold'}) - ax1.set_xlabel('Easting (m)', fontdict={'size':9,'weight':'bold'}) - ax1.axis('tight') - - ##----plot depth view - ax2 = self.figure.add_subplot(1, 2, 2, aspect='auto', sharex=ax1) - - - #plot the grid - east_line_xlist = [] - east_line_ylist = [] - for xx in self.modem_model.grid_east: - east_line_xlist.extend([xx, xx]) - east_line_xlist.append(None) - east_line_ylist.extend([0, - self.modem_model.grid_z.max()]) - east_line_ylist.append(None) - ax2.plot(east_line_xlist, - east_line_ylist, - lw=line_width, - color=line_color) - - z_line_xlist = [] - z_line_ylist = [] - for zz in self.modem_model.grid_z: - z_line_xlist.extend([self.modem_model.grid_east.min(), - self.modem_model.grid_east.max()]) - z_line_xlist.append(None) - z_line_ylist.extend([zz, zz]) - z_line_ylist.append(None) - ax2.plot(z_line_xlist, - z_line_ylist, - lw=line_width, - color=line_color) - - - #--> plot stations - ax2.scatter(plot_east, - [0]*self.modem_model.station_locations.shape[0], - marker=station_marker, - c=marker_color, - s=marker_size) - - ax2.set_ylim(self.modem_model.grid_z.max(), -200) - - -# ax1.set_xlim(plot_east.min()-10*self.modem_model.cell_size_east, -# plot_east.max()+10*self.modem_model.cell_size_east) - - ax2.set_ylabel('Depth (m)', fontdict={'size':11, 'weight':'bold'}) - ax2.set_xlabel('Easting (m)', fontdict={'size':11, 'weight':'bold'}) - - ax2.axis('tight') - - # --> be sure to draw the plot - self.mpl_widget.draw() - - def get_data_fn(self): - """ - get the filename from a file dialogue - - """ - - fn_dialog = QtGui.QFileDialog() - fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM data file', - filter='(*.dat);; (*.data)')) - - self.modem_data = modem.Data() - self.modem_data.read_data_file(fn) - self.modem_data_fn = fn - - self.dir_path = os.path.dirname(fn) - - self.period_list = sorted(self.modem_data.period_list) - self.period_dict = dict([('{0:.5f}'.format(key), value) for value, key - in enumerate(self.period_list)]) - - self.list_widget.clear() - - #this will add the station name for each station to the qwidget list - for period in self.period_list: - self.list_widget.addItem('{0:.5f}'.format(period)) - - self.plot_period = self.period_list[0] - - - - def get_model_fn(self): - """ - read in an existing model file - """ - - fn_dialog = QtGui.QFileDialog() - fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM model file', - filter='*.rho')) - - self.modem_model = modem.Model() - self.modem_model.read_model_file(fn) - - self.dir_path = os.path.dirname(fn) - - def save_model_fn(self): - """ - save the current mesh settings to a file - """ - - fn_dialog = QtGui.QFileDialog() - save_fn = str(fn_dialog.getSaveFileName( - caption='Choose ModEM model file', - filter='*.rho')) - - sv_path = os.path.dirname(save_fn) - sv_basename = os.path.basename(save_fn) - self.modem_model.write_model_file(save_path=sv_path, - model_fn_basename=sv_basename) - - self.ui_setup() - - - def locate_station(self): - pass - - def get_period(self, widget_item): - """ - get the station name from the clicked station - """ - self.plot_period = str(widget_item.text()) - - def load_edi_files(self): - edi_obj = Get_EDI_Files() - self.edi_list = edi_obj.edi_list - - self.modem_model = modem.Model(edi_list=self.edi_list) - - self.modem_model.get_station_locations() - - #self.make_checkable_list(self.modem_model.station_locations['station']) - - for station in self.modem_model.station_locations['station']: - item = QtGui.QListWidgetItem() - item.setText(station) - #item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) - #item.setCheckState(QtCore.Qt.Checked) - self.list_widget.addItem(item) - - def set_cell_size_east(self, text): - try: - self.modem_model.cell_size_east = float(text) - except ValueError: - print 'Enter floating point number' - - - def set_cell_size_north(self, text): - try: - self.modem_model.cell_size_north = float(text) - except ValueError: - print 'Enter floating point number' - - - def set_pad_east(self, text): - self.modem_model.pad_east = int(text) - - def set_pad_north(self, text): - self.modem_model.pad_north = int(text) - - def set_pad_z(self, text): - self.modem_model.pad_z = int(text) - - def set_pad_stretch_h(self, text): - self.modem_model.pad_stretch_h = float(text) - - def set_pad_stretch_v(self, text): - self.modem_model.pad_stretch_v = float(text) - - def set_num_z_layers(self, text): - self.modem_model.n_layers = int(text) - - def set_z1_layer(self, text): - self.modem_model.z1_layer = float(text) - - def set_z_target(self, text): - self.modem_model.z_target_depth = float(text) - - def set_z_bottom(self, text): - self.modem_model.z_bottom = float(text) - -#def main(): - -def main(): - import sys - app = QtGui.QApplication(sys.argv) - ui = ModEM_Mesh_Window() - ui.ui_setup() - ui.show() - sys.exit(app.exec_()) - -if __name__ == '__main__': - - main() - - - - - - ->>>>>>> 53b83affb477600fd1b3da94a6c2d754174c32ee - def set_cell_pad_east(self): self.model_obj.pad_east = int(str(self.cell_pad_east_edit.text())) self.cell_pad_east_edit.setText('{0:.0f}'.format(self.model_obj.pad_east)) @@ -781,19 +364,28 @@ def plot_mesh(self): self.mpl_widget.plot_mesh(self.model_obj) def save_mesh(self): - fn = QtGui.QFileDialog.getOpenFileNames(self, + fn = str(QtGui.QFileDialog.getSaveFileName(self, caption='Choose Model File', - directory=os.getcwd()) + directory=os.getcwd())) self.model_obj.write_model_file(save_path=os.path.dirname(fn), model_fn_basename=os.path.basename(fn)) - + def set_rho(self): + if self.model_obj.res_model is None: + self.model_obj.res_model = np.zeros(self.model_obj.grid_north.shape[0], + self.model_obj.grid_east.shape[0], + self.model_obj.grid_z.shape[0]) + + self.model_obj.res_model[:, :, :] = float(str(self.rho_start_edit.text())) + self.rho_start_edit.setText('{0:.2f}'.format(self.rho_start_edit.text())) + @QtCore.pyqtSlot(str) def normal_output(self, message): self.output_box.moveCursor(QtGui.QTextCursor.End) self.output_box.insertPlainText(message) + #============================================================================== @@ -878,13 +470,19 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, cos_ang = 1 sin_ang = 0 + gs = gridspec.GridSpec(1, 2, width_ratios=[10, 1]) + #--->plot map view - ax1 = self.figure.add_subplot(1, 2, 1, aspect='equal') + ax1 = self.figure.add_subplot(gs[0], aspect='equal') #plot station locations - plot_east = model_obj.station_locations['rel_east'] - plot_north = model_obj.station_locations['rel_north'] + plot_east = model_obj.station_locations['rel_east']/1000. + plot_north = model_obj.station_locations['rel_north']/1000. + + plot_grid_east = model_obj.grid_east.copy()/1000. + plot_grid_north = model_obj.grid_north.copy()/1000. + plot_grid_z = model_obj.grid_z.copy()/1000. ax1.scatter(plot_east, plot_north, @@ -895,9 +493,9 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, east_line_xlist = [] east_line_ylist = [] - north_min = model_obj.grid_north.min() - north_max = model_obj.grid_north.max() - for xx in model_obj.grid_east: + north_min = plot_grid_north.min() + north_max = plot_grid_north.max() + for xx in plot_grid_east: east_line_xlist.extend([xx*cos_ang+north_min*sin_ang, xx*cos_ang+north_max*sin_ang]) east_line_xlist.append(None) @@ -911,9 +509,9 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, north_line_xlist = [] north_line_ylist = [] - east_max = model_obj.grid_east.max() - east_min = model_obj.grid_east.min() - for yy in model_obj.grid_north: + east_max = plot_grid_east.max() + east_min = plot_grid_east.min() + for yy in plot_grid_north: north_line_xlist.extend([east_min*cos_ang+yy*sin_ang, east_max*cos_ang+yy*sin_ang]) north_line_xlist.append(None) @@ -926,34 +524,34 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, color=self.line_color) if east_limits == None: -# ax1.set_xlim(plot_east.min()-10*model_obj.cell_size_east, -# plot_east.max()+10*model_obj.cell_size_east) + ax1.set_xlim(plot_grid_east.min(), + plot_grid_east.max()) pass else: ax1.set_xlim(east_limits) if north_limits == None: -# ax1.set_ylim(plot_north.min()-10*model_obj.cell_size_north, -# plot_north.max()+ 10*model_obj.cell_size_east) + ax1.set_ylim(plot_grid_north.min(), + plot_grid_north.max()) pass else: ax1.set_ylim(north_limits) - ax1.set_ylabel('Northing (m)', fontdict={'size':12, 'weight':'bold'}) - ax1.set_xlabel('Easting (m)', fontdict={'size':12, 'weight':'bold'}) + ax1.set_ylabel('Northing (km)', fontdict={'size':12, 'weight':'bold'}) + ax1.set_xlabel('Easting (km)', fontdict={'size':12, 'weight':'bold'}) ##----plot depth view - ax2 = self.figure.add_subplot(1, 2, 2, aspect='auto') + ax2 = self.figure.add_subplot(gs[1], aspect='auto') #plot the grid east_line_xlist = [] east_line_ylist = [] - for xx in model_obj.grid_east: + for xx in plot_grid_east: east_line_xlist.extend([xx, xx]) east_line_xlist.append(None) east_line_ylist.extend([0, - model_obj.grid_z.max()]) + plot_grid_z.max()]) east_line_ylist.append(None) ax2.plot(east_line_xlist, east_line_ylist, @@ -962,9 +560,9 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, z_line_xlist = [] z_line_ylist = [] - for zz in model_obj.grid_z: - z_line_xlist.extend([model_obj.grid_east.min(), - model_obj.grid_east.max()]) + for zz in plot_grid_z: + z_line_xlist.extend([plot_grid_east.min(), + plot_grid_east.max()]) z_line_xlist.append(None) z_line_ylist.extend([zz, zz]) z_line_ylist.append(None) @@ -983,32 +581,31 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, if z_limits == None: - ax2.set_ylim(model_obj.z_target_depth, -200) + ax2.set_ylim(model_obj.z_target_depth/1000., -1) else: ax2.set_ylim(z_limits) - if east_limits == None: - ax2.set_xlim(plot_east.min()-10*model_obj.cell_size_east, - plot_east.max()+10*model_obj.cell_size_east) - else: - ax2.set_xlim(east_limits) + ax2.set_xlim(-model_obj.cell_size_east/6000., + model_obj.cell_size_east/6000.) + plt.setp(ax2.xaxis.get_ticklabels(), visible=False) - ax2.set_ylabel('Depth (m)', fontdict={'size':9, 'weight':'bold'}) - ax2.set_xlabel('Easting (m)', fontdict={'size':9, 'weight':'bold'}) + ax2.set_ylabel('Depth (km)', fontdict={'size':9, 'weight':'bold'}) +# ax2.set_xlabel('Easting (m)', fontdict={'size':9, 'weight':'bold'}) self.mpl_widget.draw() - +#============================================================================== +# DEFINE MAIN +#============================================================================== def main(): -#if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) - ui = Ui_Mesh_Window() + ui = ModEM_Mesh_Window() ui.ui_setup() ui.show() sys.exit(app.exec_()) if __name__ == '__main__': - main() + main() \ No newline at end of file From 74dfb45d7c904ed8276d4d5050276a11c64a52ed Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 15 Jan 2015 18:05:48 -0800 Subject: [PATCH 009/124] trying to make the plot responses faster --- mtpy/gui/modem_plot_pt_maps.py | 29 + mtpy/gui/modem_plot_response_faster.py | 1347 ++++++++++++++++++++++++ 2 files changed, 1376 insertions(+) create mode 100644 mtpy/gui/modem_plot_response_faster.py diff --git a/mtpy/gui/modem_plot_pt_maps.py b/mtpy/gui/modem_plot_pt_maps.py index e87dd205..ebbf40f0 100644 --- a/mtpy/gui/modem_plot_pt_maps.py +++ b/mtpy/gui/modem_plot_pt_maps.py @@ -87,6 +87,7 @@ def __init__(self): self.pad_north = 2*self.ellipse_size self.plot_grid = 'n' + self.plot_stations = False self.xminorticks = 1000/self.dscale @@ -254,6 +255,13 @@ def setupUi(self, MainWindow): self.action_plot_settings.setText('Settings') self.action_plot_settings.triggered.connect(self.show_settings) self.menu_display.addAction(self.action_plot_settings) + + self.action_plot_stations = QtGui.QAction(MainWindow) + self.action_plot_stations.setText('Plot Stations') + self.action_plot_stations.setCheckable(True) + self.action_plot_stations.toggled.connect(self.set_plot_stations) + self.menu_display.addAction(self.action_plot_stations) + self.menubar.addAction(self.menu_display.menuAction()) # self.menuDisplay.addAction(self.menu_plot_style.menuAction()) @@ -347,6 +355,16 @@ def update_settings(self): self.plot() + def set_plot_stations(self, toggled): + """ + plot station names if desired + """ + + self.plot_stations = toggled + + self.plot() + + def _get_pt(self): """ put pt parameters into something useful for plotting @@ -924,6 +942,17 @@ def plot(self): cb.set_ticks(cb_ticks) cb.set_ticklabels([mtplottools.labeldict[ctk] for ctk in cb_ticks]) + if self.plot_stations == True: + for ax in ax_list: + for s_arr in self.modem_data.station_locations: + ax.text(s_arr['rel_east']/self.dscale, + s_arr['rel_north']/self.dscale, + s_arr['station'], + horizontalalignment='center', + verticalalignment='baseline', + fontdict={'size':self.font_size}) + + self.mpl_widget.draw() class PlotSettings(QtGui.QWidget): diff --git a/mtpy/gui/modem_plot_response_faster.py b/mtpy/gui/modem_plot_response_faster.py new file mode 100644 index 00000000..ec5b04bf --- /dev/null +++ b/mtpy/gui/modem_plot_response_faster.py @@ -0,0 +1,1347 @@ +# -*- coding: utf-8 -*- +""" +ModEM data and response visualization with a gui. + +The user will be able to choose from stations within the data to look at +in either impedance or apparent resistivity and phase. + +The functionality is quite simple at the moment + +JP 2014 +""" +# + +from PyQt4 import QtCore, QtGui +import mtpy.modeling.modem_new as modem +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar +from matplotlib.figure import Figure +import mtpy.imaging.mtplottools as mtplottools +import matplotlib.gridspec as gridspec +import numpy as np +import matplotlib.pyplot as plt +import os + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + + +class Ui_MainWindow(object): + def __init__(self): + + self.ms = 5 + self.lw = 1.1 + self.e_capthick = 1 + self.e_capsize = 5 + + #color mode + self.cted = (0, 0, 1) + self.ctmd = (1, 0, 0) + self.ctrd = (.5, .5, 0) + self.ctid = (0, .5, .5) + self.mted = 's' + self.mtmd = 'o' + + #color for occam2d model + self.ctem = (0, .6, .3) + self.ctmm = (.9, 0, .8) + self.ctrm = (.9, .4, .2) + self.ctim = (.2, .4, .9) + + self.mtem = self.mted + self.mtmm = self.mtmd + + self.res_xx_limits = None + self.res_xy_limits = None + self.res_yx_limits = None + self.res_yy_limits = None + + self.phase_xx_limits = None + self.phase_xy_limits = None + self.phase_yx_limits = None + self.phase_yy_limits = None + + + self.subplot_wspace = .25 + self.subplot_hspace = .0 + self.subplot_right = .98 + self.subplot_left = .08 + self.subplot_top = .90 + self.subplot_bottom = .08 + + self.legend_loc = 'upper center' + self.legend_pos = (.5, 1.22) + self.legend_marker_scale = 1 + self.legend_border_axes_pad = .01 + self.legend_label_spacing = 0.07 + self.legend_handle_text_pad = .2 + self.legend_border_pad = .15 + + self.fs = 11 + + self.plot_component = 4 + self.plot_tipper = True + self.plot_z = True + self.ylabel_pad = 1.25 + self.station = None + + self.modem_data = None + self.modem_resp = None + self.dirpath = os.getcwd() + + def setupUi(self, MainWindow): + MainWindow.setWindowTitle("Plot ModEM MT Response") + MainWindow.resize(1920, 1080) + + #make a central widget that everything is tied to. + self.central_widget = QtGui.QWidget(MainWindow) + self.central_widget.setWindowTitle("Plot MT Response") + + #make a widget that will be the station list + self.list_widget = QtGui.QListWidget() + self.list_widget.itemClicked.connect(self.get_station) + self.list_widget.setMaximumWidth(150) + + # this is the Canvas Widget that displays the `figure` + # it takes the `figure` instance as a parameter to __init__ + self.figure = Figure(dpi=150) + self.mpl_widget = FigureCanvas(self.figure) + + #make sure the figure takes up the entire plottable space + self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + + # this is the Navigation widget + # it takes the Canvas widget and a parent + self.mpl_toolbar = NavigationToolbar(self.mpl_widget, MainWindow) + + # set the layout for the plot + mpl_vbox = QtGui.QVBoxLayout() + mpl_vbox.addWidget(self.mpl_toolbar) + mpl_vbox.addWidget(self.mpl_widget) + + # set the layout the main window + layout = QtGui.QHBoxLayout() + layout.addWidget(self.list_widget) + layout.addLayout(mpl_vbox) + self.central_widget.setLayout(layout) + + #set the geometry of each widget + self.list_widget.setObjectName(_fromUtf8("listWidget")) + self.mpl_widget.setObjectName(_fromUtf8("mpl_widget")) + self.mpl_widget.updateGeometry() + + #set the central widget + MainWindow.setCentralWidget(self.central_widget) + + #create a menu bar on the window + self.menubar = QtGui.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1920, 38)) + self.menubar.setObjectName(_fromUtf8("menubar")) + + # add a tab for File --> open, close, save + self.menuFile = QtGui.QMenu(self.menubar) + self.menuFile.setTitle("Data File") + + self.menuModelFile = QtGui.QMenu(self.menubar) + self.menuModelFile.setTitle("Response File") + + # add a tab for chaning the display + self.menuDisplay = QtGui.QMenu(self.menubar) + self.menuDisplay.setTitle("Display") + + MainWindow.setMenuBar(self.menubar) + + # add a status bar on the bottom of the main window + self.statusbar = QtGui.QStatusBar(MainWindow) + self.statusbar.setObjectName(_fromUtf8("statusbar")) + + MainWindow.setStatusBar(self.statusbar) + + # set an open option that on click opens a modem file + self.actionOpen = QtGui.QAction(MainWindow) + self.actionOpen.setText("Open") + self.actionOpen.triggered.connect(self.get_filename) + + # set a close that closes the main window + self.actionClose = QtGui.QAction(MainWindow) + self.actionClose.setText("Close") + self.actionClose.triggered.connect(MainWindow.close) + + # set a save option that will eventually save the masked data + self.actionSave = QtGui.QAction(MainWindow) + self.actionSave.setText("Save") + + # add the action on the menu tab + self.menuFile.addAction(self.actionOpen) + self.menuFile.addAction(self.actionClose) + self.menuFile.addAction(self.actionSave) + self.menubar.addAction(self.menuFile.menuAction()) + + self.actionModelOpen = QtGui.QAction(MainWindow) + self.actionModelOpen.setText("Open") + self.actionModelOpen.triggered.connect(self.get_resp_fn) + self.menuModelFile.addAction(self.actionModelOpen) + self.menubar.addAction(self.menuModelFile.menuAction()) +# + #adding options for display plot type + self.menu_plot_type = QtGui.QMenu(MainWindow) + self.menu_plot_type.setTitle("Plot Type") + self.menuDisplay.addMenu(self.menu_plot_type) + self.menubar.addAction(self.menuDisplay.menuAction()) + + #set plot impedance or resistivity and phase + self.action_plot_z = QtGui.QAction(MainWindow) + self.action_plot_z.setText('Impedance') + self.action_plot_z.setCheckable(True) + self.menu_plot_type.addAction(self.action_plot_z) + self.action_plot_z.toggled.connect(self.status_checked_ptz) + + self.action_plot_rp = QtGui.QAction(MainWindow) + self.action_plot_rp.setText('Resistivity-Phase') + self.action_plot_rp.setCheckable(True) + self.menu_plot_type.addAction(self.action_plot_rp) + self.action_plot_rp.toggled.connect(self.status_checked_ptrp) + + self.action_plot_settings = QtGui.QAction(MainWindow) + self.action_plot_settings.setText('Settings') + self.action_plot_settings.triggered.connect(self.show_settings) + self.menuDisplay.addAction(self.action_plot_settings) + self.menubar.addAction(self.menuDisplay.menuAction()) + +# self.menuDisplay.addAction(self.menu_plot_style.menuAction()) + self.menuDisplay.addAction(self.menu_plot_type.menuAction()) + + #self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def status_checked_ptz(self, toggled): + """ + be sure that only one plot style is checked + """ + + self.plot_z = toggled + if toggled == True: + untoggled = False + elif toggled == False: + untoggled = True + + self.action_plot_z.setChecked(toggled) + self.action_plot_rp.setChecked(untoggled) + + self.plot() + + def status_checked_ptrp(self, toggled): + """ + be sure that only one plot style is checked + """ + + if toggled == True: + untoggled = False + self.plot_z = False + elif toggled == False: + untoggled = True + self.plot_z = True + + self.action_plot_z.setChecked(untoggled) + self.action_plot_rp.setChecked(toggled) + + self.plot() + + + def get_filename(self): + """ + get the filename from a file dialogue + + """ + + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM data file', + filter='(*.dat);; (*.data)')) + + self.modem_data = modem.Data() + self.modem_data.read_data_file(fn) + + self.dirpath = os.path.dirname(fn) + + print self.dirpath + + station_list = sorted(self.modem_data.mt_dict.keys()) + + self.list_widget.clear() + + #this will add the station name for each station to the qwidget list + for station in station_list: + self.list_widget.addItem(station) + + self.station = str(station_list[0]) + self.plot() + + + def get_station(self, widget_item): + """ + get the station name from the clicked station + """ + self.station = str(widget_item.text()) + self.plot() + + def get_resp_fn(self): + """ + get response file name + """ + print self.dirpath + fn_dialog = QtGui.QFileDialog(directory=self.dirpath) + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM response file', + filter='*.dat')) + + if fn is None: + return + + self.modem_resp = modem.Data() + self.modem_resp.read_data_file(fn) + self.plot() + + def show_settings(self): + + self.settings_window = PlotSettings(None, **self.__dict__) + self.settings_window.show() + self.settings_window.settings_updated.connect(self.update_settings) + + def update_settings(self): + + for attr in sorted(self.settings_window.__dict__.keys()): + setattr(self, attr, self.settings_window.__dict__[attr]) + + self.plot() + + def plot(self): + """ + plot the data + """ + + if self.station is None: + return + + z_obj = self.modem_data.mt_dict[self.station].Z + t_obj = self.modem_data.mt_dict[self.station].Tipper + period = self.modem_data.period_list + + plt.rcParams['font.size'] = self.fs + + fontdict = {'size':self.fs+2, 'weight':'bold'} + + #--> make key word dictionaries for plotting + kw_xx = {'color':self.cted, + 'marker':self.mted, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + kw_yy = {'color':self.ctmd, + 'marker':self.mtmd, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + kw_tr = {'color':self.ctrd, + 'marker':self.mtmd, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + kw_ti = {'color':self.ctid, + 'marker':self.mtmd, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + + + #convert to apparent resistivity and phase + rp = mtplottools.ResPhase(z_object=z_obj) + + #find locations where points have been masked + nzxx = np.nonzero(z_obj.z[:, 0, 0])[0] + nzxy = np.nonzero(z_obj.z[:, 0, 1])[0] + nzyx = np.nonzero(z_obj.z[:, 1, 0])[0] + nzyy = np.nonzero(z_obj.z[:, 1, 1])[0] + ntx = np.nonzero(t_obj.tipper[:, 0, 0])[0] + nty = np.nonzero(t_obj.tipper[:, 0, 1])[0] + + + self.figure.clf() + self.figure.suptitle(str(self.station), fontdict=fontdict) + + #set the grid of subplots + gs = gridspec.GridSpec(3, 2, + wspace=self.subplot_wspace, + left=self.subplot_left, + top=self.subplot_top, + bottom=self.subplot_bottom, + right=self.subplot_right, + hspace=self.subplot_hspace, + height_ratios=[1, 1, .4]) + + # od for off diagonal components, d for diagonal + axrod = self.figure.add_subplot(gs[0, 0]) + axrd = self.figure.add_subplot(gs[0, 1], sharex=axrod) + + axpod = self.figure.add_subplot(gs[1, 0]) + axpd = self.figure.add_subplot(gs[1, 1], sharex=axrod) + + axtx = self.figure.add_subplot(gs[2, 0], sharex=axrod) + axty = self.figure.add_subplot(gs[2, 1], sharex=axrod) + + if self.plot_z == False: + #plot resistivity + erxx= mtplottools.plot_errorbar(axrd, + period[nzxx], + rp.resxx[nzxx], + rp.resxx_err[nzxx], + **kw_xx) + erxy = mtplottools.plot_errorbar(axrod, + period[nzxy], + rp.resxy[nzxy], + rp.resxy_err[nzxy], + **kw_xx) + eryx = mtplottools.plot_errorbar(axrod, + period[nzyx], + rp.resyx[nzyx], + rp.resyx_err[nzyx], + **kw_yy) + eryy = mtplottools.plot_errorbar(axrd, + period[nzyy], + rp.resyy[nzyy], + rp.resyy_err[nzyy], + **kw_yy) + #plot phase + erxx= mtplottools.plot_errorbar(axpd, + period[nzxx], + rp.phasexx[nzxx], + rp.phasexx_err[nzxx], + **kw_xx) + erxy = mtplottools.plot_errorbar(axpod, + period[nzxy], + rp.phasexy[nzxy], + rp.phasexy_err[nzxy], + **kw_xx) + eryx = mtplottools.plot_errorbar(axpod, + period[nzyx], + rp.phaseyx[nzyx], + rp.phaseyx_err[nzyx], + **kw_yy) + eryy = mtplottools.plot_errorbar(axpd, + period[nzyy], + rp.phaseyy[nzyy], + rp.phaseyy_err[nzyy], + **kw_yy) + elif self.plot_z == True: + #plot real + erxx = mtplottools.plot_errorbar(axrd, + period[nzxx], + z_obj.z[nzxx,0,0].real, + z_obj.zerr[nzxx,0,0].real, + **kw_xx) + erxy = mtplottools.plot_errorbar(axrod, + period[nzxy], + z_obj.z[nzxy,0,1].real, + z_obj.zerr[nzxy,0,1].real, + **kw_xx) + eryx = mtplottools.plot_errorbar(axrod, + period[nzyx], + z_obj.z[nzyx,1,0].real, + z_obj.zerr[nzyx,1,0].real, + **kw_yy) + eryy = mtplottools.plot_errorbar(axrd, + period[nzyy], + z_obj.z[nzyy,1,1].real, + z_obj.zerr[nzyy,1,1].real, + **kw_yy) + #plot phase + erxx = mtplottools.plot_errorbar(axpd, + period[nzxx], + z_obj.z[nzxx,0,0].imag, + z_obj.zerr[nzxx,0,0].real, + **kw_xx) + erxy = mtplottools.plot_errorbar(axpod, + period[nzxy], + z_obj.z[nzxy,0,1].imag, + z_obj.zerr[nzxy,0,1].real, + **kw_xx) + eryx = mtplottools.plot_errorbar(axpod, + period[nzyx], + z_obj.z[nzyx,1,0].imag, + z_obj.zerr[nzyx,1,0].real, + **kw_yy) + eryy = mtplottools.plot_errorbar(axpd, + period[nzyy], + z_obj.z[nzyy,1,1].imag, + z_obj.zerr[nzyy,1,1].real, + **kw_yy) + + #plot tipper + ertxr = mtplottools.plot_errorbar(axtx, + period[ntx], + t_obj.tipper[ntx, 0, 0].real, + t_obj.tippererr[ntx, 0, 0], + **kw_tr) + ertxi = mtplottools.plot_errorbar(axtx, + period[ntx], + t_obj.tipper[ntx, 0, 0].imag, + t_obj.tippererr[ntx, 0, 1], + **kw_ti) + ertyr = mtplottools.plot_errorbar(axty, + period[nty], + t_obj.tipper[nty, 0, 1].real, + t_obj.tippererr[nty, 0, 0], + **kw_tr) + + + ertyi = mtplottools.plot_errorbar(axty, + period[nty], + t_obj.tipper[nty, 0, 1].imag, + t_obj.tippererr[nty, 0, 1], + **kw_ti) + ax_list = [axrod, axrd, + axpod, axpd, + axtx, axty] + + od_line_list = [erxy[0], eryx[0], ertxr[0], ertxi[0]] + d_line_list = [erxx[0], eryy[0], ertyr[0], ertyi[0]] + + od_label_list = ['$Z_{xy}$', '$Z_{yx}$', 'Re{$T_{x}$}', 'Im{$T_{x}$}'] + d_label_list = ['$Z_{xx}$', '$Z_{yy}$', 'Re{$T_{y}$}', 'Im{$T_{y}$}'] + + #--> set limits if input + if self.res_xx_limits is not None: + axrd.set_ylim(self.res_xx_limits) + if self.res_xy_limits is not None: + axrod.set_ylim(self.res_xy_limits) + + if self.phase_xx_limits is not None: + axpd.set_ylim(self.phase_xx_limits) + if self.phase_xy_limits is not None: + axpod.set_ylim(self.phase_xy_limits) + +# axtx.set_ylim((-1.1, 1.1)) +# axty.set_ylim((-1.1, 1.1)) + + #set axis properties + for aa, ax in enumerate(ax_list): + ax.tick_params(axis='y', pad=self.ylabel_pad) + ylabels = ax.get_yticks().tolist() + if aa == 2 or aa == 3 or aa == 4 or aa == 5: + ylabels[-1] = '' + ylabels[0] = '' + ax.set_yticklabels(ylabels) + + if aa < 2: + if self.plot_z == False: + ax.set_yscale('log') + + if aa < 4: + plt.setp(ax.get_xticklabels(), visible=False) + + else: + ax.set_xlabel('Period (s)', fontdict=fontdict) + + #set axes labels + if aa == 0: + if self.plot_z == False: + ax.set_ylabel('App. Res. ($\mathbf{\Omega \cdot m}$)', + fontdict=fontdict) + elif self.plot_z == True: + ax.set_ylabel('Re[Z (mV/km nT)]', + fontdict=fontdict) + + ax.legend(od_line_list, od_label_list, + loc=self.legend_loc, + ncol=2, + bbox_to_anchor=self.legend_pos, + markerscale=self.legend_marker_scale, + borderaxespad=self.legend_border_axes_pad, + labelspacing=self.legend_label_spacing, + handletextpad=self.legend_handle_text_pad, + borderpad=self.legend_border_pad, + prop={'size':max([self.fs-1, 5])}) + + elif aa == 1: + ax.legend(d_line_list, d_label_list, + loc=self.legend_loc, + ncol=2, + bbox_to_anchor=self.legend_pos, + markerscale=self.legend_marker_scale, + borderaxespad=self.legend_border_axes_pad, + labelspacing=self.legend_label_spacing, + handletextpad=self.legend_handle_text_pad, + borderpad=self.legend_border_pad, + prop={'size':max([self.fs-1, 5])}) + elif aa == 2: + if self.plot_z == False: + ax.set_ylabel('Phase (deg)', + fontdict=fontdict) + elif self.plot_z == True: + ax.set_ylabel('Im[Z (mV/km nT)]', + fontdict=fontdict) + + + elif aa == 4: + ax.set_ylabel(r'W$_x$', fontdict=fontdict) + + elif aa == 5: + ax.set_ylabel(r'W$_y$', fontdict=fontdict) + + + ax.set_xscale('log') + ax.set_xlim(xmin=10**(np.floor(np.log10(period[0])))*1.01, + xmax=10**(np.ceil(np.log10(period[-1])))*.99) + ax.grid(True, alpha=.25) + + #plot model response + if self.modem_resp is not None: + resp_z_obj = self.modem_resp.mt_dict[self.station].Z + resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.zerr) + + resp_t_obj = self.modem_resp.mt_dict[self.station].Tipper + + rrp = mtplottools.ResPhase(resp_z_obj) + + rms = resp_z_err.std() + rms_xx = resp_z_err[:, 0, 0].std() + rms_xy = resp_z_err[:, 0, 1].std() + rms_yx = resp_z_err[:, 1, 0].std() + rms_yy = resp_z_err[:, 1, 1].std() + + #--> make key word dictionaries for plotting + kw_xx = {'color':self.ctem, + 'marker':self.mtem, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + kw_yy = {'color':self.ctmm, + 'marker':self.mtmm, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + + kw_tr = {'color':self.ctrm, + 'marker':self.mtmd, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + kw_ti = {'color':self.ctim, + 'marker':self.mtmd, + 'ms':self.ms, + 'ls':':', + 'lw':self.lw, + 'e_capsize':self.e_capsize, + 'e_capthick':self.e_capthick} + + if self.plot_z == False: + #plot resistivity + rerxx = mtplottools.plot_errorbar(axrd, + period[nzxx], + rrp.resxx[nzxx], + **kw_xx) + rerxy = mtplottools.plot_errorbar(axrod, + period[nzxy], + rrp.resxy[nzxy], + **kw_xx) + reryx = mtplottools.plot_errorbar(axrod, + period[nzyx], + rrp.resyx[nzyx], + **kw_yy) + reryy = mtplottools.plot_errorbar(axrd, + period[nzyy], + rrp.resyy[nzyy], + **kw_yy) + #plot phase + rerxx= mtplottools.plot_errorbar(axpd, + period[nzxx], + rrp.phasexx[nzxx], + **kw_xx) + rerxy = mtplottools.plot_errorbar(axpod, + period[nzxy], + rrp.phasexy[nzxy], + **kw_xx) + reryx = mtplottools.plot_errorbar(axpod, + period[nzyx], + rrp.phaseyx[nzyx], + **kw_yy) + reryy = mtplottools.plot_errorbar(axpd, + period[nzyy], + rrp.phaseyy[nzyy], + **kw_yy) + elif self.plot_z == True: + #plot real + rerxx = mtplottools.plot_errorbar(axrd, + period[nzxx], + resp_z_obj.z[nzxx,0,0].real, + **kw_xx) + rerxy = mtplottools.plot_errorbar(axrod, + period[nzxy], + resp_z_obj.z[nzxy,0,1].real, + **kw_xx) + reryx = mtplottools.plot_errorbar(axrod, + period[nzyx], + resp_z_obj.z[nzyx,1,0].real, + **kw_yy) + reryy = mtplottools.plot_errorbar(axrd, + period[nzyy], + resp_z_obj.z[nzyy,1,1].real, + **kw_yy) + #plot phase + rerxx = mtplottools.plot_errorbar(axpd, + period[nzxx], + resp_z_obj.z[nzxx,0,0].imag, + **kw_xx) + rerxy = mtplottools.plot_errorbar(axpod, + period[nzxy], + resp_z_obj.z[nzxy,0,1].imag, + **kw_xx) + reryx = mtplottools.plot_errorbar(axpod, + period[nzyx], + resp_z_obj.z[nzyx,1,0].imag, + **kw_yy) + reryy = mtplottools.plot_errorbar(axpd, + period[nzyy], + resp_z_obj.z[nzyy,1,1].imag, + **kw_yy) + + rertx = mtplottools.plot_errorbar(axtx, + period[ntx], + resp_t_obj.tipper[ntx, 0, 0].real, + **kw_tr) + rerty = mtplottools.plot_errorbar(axtx, + period[ntx], + resp_t_obj.tipper[ntx, 0, 1].imag, + **kw_ti) + + rertx = mtplottools.plot_errorbar(axty, + period[nty], + resp_t_obj.tipper[nty, 0, 0].real, + **kw_tr) + rerty = mtplottools.plot_errorbar(axty, + period[nty], + resp_t_obj.tipper[nty, 0, 1].imag, + **kw_ti) + + # add laines and labels + od_line_list += [rerxy[0], reryx[0], rertx[0], rerty[0]] + d_line_list += [rerxx[0], reryy[0], rertx[0], rerty[0]] + + od_label_list += ['$Z^m_{xy}$'+'rms={0:.2f}'.format(rms_xy), + '$Z^m_{yx}$'+'rms={0:.2f}'.format(rms_yx), + 'Re{$T^m_{x}$}', 'Im{$T^m_{x}$}'] + d_label_list += ['$Z^m_{xx}$'+'rms={0:.2f}'.format(rms_xx), + '$Z^m_{yy}$'+'rms={0:.2f}'.format(rms_yy), + 'Re{$T^m_{x}$}', 'Im{$T^m_{x}$}'] + + legend_ax_list = [axrod, axrd] + od_label_list = od_label_list[0:2]+od_label_list[4:6]+\ + od_label_list[2:4]+od_label_list[6:8] + d_label_list = d_label_list[0:2]+d_label_list[4:6]+\ + d_label_list[2:4]+d_label_list[6:8] + + od_line_list = od_line_list[0:2]+od_line_list[4:6]+\ + od_line_list[2:4]+od_line_list[6:8] + d_line_list = d_line_list[0:2]+d_line_list[4:6]+\ + d_line_list[2:4]+d_line_list[6:8] + + legend_ll = [od_line_list, d_line_list] + legend_tl = [od_label_list, d_label_list] + + for ax, ll, tl in zip(legend_ax_list, legend_ll, legend_tl): + ax.legend(ll, + tl, + loc=self.legend_loc, + ncol=4, + bbox_to_anchor=self.legend_pos, + markerscale=self.legend_marker_scale, + borderaxespad=self.legend_border_axes_pad, + labelspacing=self.legend_label_spacing, + handletextpad=self.legend_handle_text_pad, + borderpad=self.legend_border_pad, + prop={'size':max([self.fs-1, 5])}) + + self.mpl_widget.draw() + +class PlotSettings(QtGui.QWidget): + settings_updated = QtCore.pyqtSignal() + def __init__(self, parent, **kwargs): + super(PlotSettings, self).__init__(parent) + + self.fs = kwargs.pop('fs', 10) + self.lw = kwargs.pop('lw', 1.5) + self.ms = kwargs.pop('ms', 5) + + self.e_capthick = kwargs.pop('e_capthick', 1) + self.e_capsize = kwargs.pop('e_capsize', 5) + + #color mode + self.cted = kwargs.pop('cted', (0, 0, 1)) + self.ctmd = kwargs.pop('ctmd', (1, 0, 0)) + self.ctrd = kwargs.pop('ctrd', (.5, .5, 0)) + self.ctid = kwargs.pop('ctid', (0, .5, .5)) + self.mted = kwargs.pop('mted', 's') + self.mtmd = kwargs.pop('mtmd', 'o') + + #color for occam2d model + self.ctem = kwargs.pop('ctem', (0, .6, .3)) + self.ctmm = kwargs.pop('ctmm', (.9, 0, .8)) + self.ctrm = kwargs.pop('ctrm', (.5, .5, .1)) + self.ctim = kwargs.pop('ctim', (.1, .5, .5)) + self.mtem = kwargs.pop('mtem', '+') + self.mtmm = kwargs.pop('mtmm', '+') + + self.res_xx_limits = kwargs.pop('res_xx_limits', None) + self.res_xy_limits = kwargs.pop('res_xy_limits', None) + self.res_yx_limits = kwargs.pop('res_yx_limits', None) + self.res_yy_limits = kwargs.pop('res_yy_limits', None) + + self.phase_xx_limits = kwargs.pop('phase_xx_limits', None) + self.phase_xy_limits = kwargs.pop('phase_xy_limits', None) + self.phase_yx_limits = kwargs.pop('phase_yx_limits', None) + self.phase_yy_limits = kwargs.pop('phase_yy_limits', None) + + self.subplot_wspace = kwargs.pop('subplot_wspace', .2) + self.subplot_hspace = kwargs.pop('subplot_hspace', .0) + self.subplot_right = kwargs.pop('subplot_right', .98) + self.subplot_left = kwargs.pop('subplot_left', .08) + self.subplot_top = kwargs.pop('subplot_top', .93) + self.subplot_bottom = kwargs.pop('subplot_bottom', .08) + + self.legend_loc = kwargs.pop('legend_loc', 'upper center') + self.legend_pos = kwargs.pop('legend_pos', (.5, 1.11)) + self.legend_marker_scale = kwargs.pop('legend_marker_scale', 1) + self.legend_border_axes_pad = kwargs.pop('legend_border_axes_pad', .01) + self.legend_label_spacing = kwargs.pop('legend_label_spacing', 0.07) + self.legend_handle_text_pad = kwargs.pop('legend_handle_text_pad', .2) + self.legend_border_pad = kwargs.pop('legend_border_pad', .15) + + self.initUI() + + def initUI(self): + #--> line properties + fs_label = QtGui.QLabel('Font Size') + fs_edit = QtGui.QLineEdit() + fs_edit.setText('{0:.1f}'.format(self.fs)) + fs_edit.textChanged[str].connect(self.set_text_fs) + + lw_label = QtGui.QLabel('Line Width') + lw_edit = QtGui.QLineEdit() + lw_edit.setText('{0:.1f}'.format(self.lw)) + lw_edit.textChanged[str].connect(self.set_text_lw) + + e_capthick_label = QtGui.QLabel('Error cap thickness') + e_capthick_edit = QtGui.QLineEdit() + e_capthick_edit.setText('{0:.1f}'.format(self.e_capthick)) + e_capthick_edit.textChanged[str].connect(self.set_text_e_capthick) + + e_capsize_label = QtGui.QLabel('Error cap size') + e_capsize_edit = QtGui.QLineEdit() + e_capsize_edit.setText('{0:.1f}'.format(self.e_capsize)) + e_capsize_edit.textChanged[str].connect(self.set_text_e_capsize) + + grid_line = QtGui.QGridLayout() + grid_line.setSpacing(10) + + grid_line.addWidget(fs_label, 1, 0) + grid_line.addWidget(fs_edit, 1, 1) + + grid_line.addWidget(lw_label, 1, 2) + grid_line.addWidget(lw_edit, 1, 3) + + grid_line.addWidget(e_capthick_label, 1, 4) + grid_line.addWidget(e_capthick_edit, 1, 5) + + grid_line.addWidget(e_capsize_label, 1, 6) + grid_line.addWidget(e_capsize_edit, 1, 7) + + #--> marker properties + ms_label = QtGui.QLabel('Marker Size') + ms_edit = QtGui.QLineEdit() + ms_edit.setText('{0:.1f}'.format(self.ms)) + ms_edit.textChanged[str].connect(self.set_text_ms) + + dcxy_button = QtGui.QPushButton('Data Color xy', self) + dcxy_button.clicked.connect(self.set_cted) + + dcyx_button = QtGui.QPushButton('Data Color yx', self) + dcyx_button.clicked.connect(self.set_ctmd) + + dctr_button = QtGui.QPushButton('Data Color Re{T}', self) + dctr_button.clicked.connect(self.set_ctrd) + + dcti_button = QtGui.QPushButton('Data Color Im{T}', self) + dcti_button.clicked.connect(self.set_ctid) + + mcxy_button = QtGui.QPushButton('Model Color xy', self) + mcxy_button.clicked.connect(self.set_ctem) + + mcyx_button = QtGui.QPushButton('Model Color yx', self) + mcyx_button.clicked.connect(self.set_ctmm) + + mctr_button = QtGui.QPushButton('Model Color Re{T}', self) + mctr_button.clicked.connect(self.set_ctrm) + + mcti_button = QtGui.QPushButton('Model Color Im{T}', self) + mcti_button.clicked.connect(self.set_ctim) + + dmxy_label = QtGui.QLabel('Data Marker xy') + dmxy_edit = QtGui.QLineEdit() + dmxy_edit.setText('{0}'.format(self.mted)) + dmxy_edit.textChanged[str].connect(self.set_text_mted) + + dmyx_label = QtGui.QLabel('Data Marker yx') + dmyx_edit = QtGui.QLineEdit() + dmyx_edit.setText('{0}'.format(self.mtmd)) + dmyx_edit.textChanged[str].connect(self.set_text_mtmd) + + mmxy_label = QtGui.QLabel('Model Marker xy') + mmxy_edit = QtGui.QLineEdit() + mmxy_edit.setText('{0}'.format(self.mtem)) + mmxy_edit.textChanged[str].connect(self.set_text_mtem) + + mmyx_label = QtGui.QLabel('Model Marker yx') + mmyx_edit = QtGui.QLineEdit() + mmyx_edit.setText('{0}'.format(self.mtmm)) + mmyx_edit.textChanged[str].connect(self.set_text_mtmm) + + marker_label = QtGui.QLabel('Maker Properties:') + + marker_grid = QtGui.QGridLayout() + marker_grid.setSpacing(10) + + marker_grid.addWidget(marker_label, 1, 0) + marker_grid.addWidget(ms_label, 1, 2) + marker_grid.addWidget(ms_edit, 1, 3) + + marker_grid.addWidget(dcxy_button, 2, 0) + marker_grid.addWidget(dcyx_button, 2, 1) + marker_grid.addWidget(dctr_button, 2, 2) + marker_grid.addWidget(dcti_button, 2, 3) + + marker_grid.addWidget(dmxy_label, 2, 4) + marker_grid.addWidget(dmxy_edit, 2, 5) + + marker_grid.addWidget(dmyx_label, 2, 6) + marker_grid.addWidget(dmyx_edit, 2, 7) + + marker_grid.addWidget(mcxy_button, 3, 0) + marker_grid.addWidget(mcyx_button, 3, 1) + marker_grid.addWidget(mctr_button, 3, 2) + marker_grid.addWidget(mcti_button, 3, 3) + + marker_grid.addWidget(mmxy_label, 3, 4) + marker_grid.addWidget(mmxy_edit, 3, 5) + + marker_grid.addWidget(mmyx_label, 3, 6) + marker_grid.addWidget(mmyx_edit, 3, 7) + + #--> plot limits + ylimr_xx_label = QtGui.QLabel('Res_xx') + ylimr_xx_edit = QtGui.QLineEdit() + ylimr_xx_edit.setText('{0}'.format(self.res_xx_limits)) + ylimr_xx_edit.textChanged[str].connect(self.set_text_res_xx) + + ylimr_xy_label = QtGui.QLabel('Res_xy') + ylimr_xy_edit = QtGui.QLineEdit() + ylimr_xy_edit.setText('{0}'.format(self.res_xy_limits)) + ylimr_xy_edit.textChanged[str].connect(self.set_text_res_xy) + + ylimr_yx_label = QtGui.QLabel('Res_yx') + ylimr_yx_edit = QtGui.QLineEdit() + ylimr_yx_edit.setText('{0}'.format(self.res_yx_limits)) + ylimr_yx_edit.textChanged[str].connect(self.set_text_res_yx) + + ylimr_yy_label = QtGui.QLabel('Res_yy') + ylimr_yy_edit = QtGui.QLineEdit() + ylimr_yy_edit.setText('{0}'.format(self.res_yy_limits)) + ylimr_yy_edit.textChanged[str].connect(self.set_text_res_yy) + + ylimp_xx_label = QtGui.QLabel('phase_xx') + ylimp_xx_edit = QtGui.QLineEdit() + ylimp_xx_edit.setText('{0}'.format(self.phase_xx_limits)) + ylimp_xx_edit.textChanged[str].connect(self.set_text_phase_xx) + + ylimp_xy_label = QtGui.QLabel('phase_xy') + ylimp_xy_edit = QtGui.QLineEdit() + ylimp_xy_edit.setText('{0}'.format(self.phase_xy_limits)) + ylimp_xy_edit.textChanged[str].connect(self.set_text_phase_xy) + + ylimp_yx_label = QtGui.QLabel('phase_yx') + ylimp_yx_edit = QtGui.QLineEdit() + ylimp_yx_edit.setText('{0}'.format(self.phase_yx_limits)) + ylimp_yx_edit.textChanged[str].connect(self.set_text_phase_yx) + + ylimp_yy_label = QtGui.QLabel('phase_yy') + ylimp_yy_edit = QtGui.QLineEdit() + ylimp_yy_edit.setText('{0}'.format(self.phase_yy_limits)) + ylimp_yy_edit.textChanged[str].connect(self.set_text_phase_yy) + + limits_grid = QtGui.QGridLayout() + limits_grid.setSpacing(10) + + limits_label = QtGui.QLabel('Plot Limits: (Res=Real, Phase=Imaginary)' + ' --> input on a linear scale') + + limits_grid.addWidget(limits_label, 1, 0, 1, 7) + + limits_grid.addWidget(ylimr_xx_label, 2, 0) + limits_grid.addWidget(ylimr_xx_edit, 2, 1) + limits_grid.addWidget(ylimr_xy_label, 2, 2) + limits_grid.addWidget(ylimr_xy_edit, 2, 3) + limits_grid.addWidget(ylimr_yx_label, 2, 4) + limits_grid.addWidget(ylimr_yx_edit, 2, 5) + limits_grid.addWidget(ylimr_yy_label, 2, 6) + limits_grid.addWidget(ylimr_yy_edit, 2, 7) + + limits_grid.addWidget(ylimp_xx_label, 3, 0) + limits_grid.addWidget(ylimp_xx_edit, 3, 1) + limits_grid.addWidget(ylimp_xy_label, 3, 2) + limits_grid.addWidget(ylimp_xy_edit, 3, 3) + limits_grid.addWidget(ylimp_yx_label, 3, 4) + limits_grid.addWidget(ylimp_yx_edit, 3, 5) + limits_grid.addWidget(ylimp_yy_label, 3, 6) + limits_grid.addWidget(ylimp_yy_edit, 3, 7) + + #--> legend properties + legend_pos_label = QtGui.QLabel('Legend Position') + legend_pos_edit = QtGui.QLineEdit() + legend_pos_edit.setText('{0}'.format(self.legend_pos)) + legend_pos_edit.textChanged[str].connect(self.set_text_legend_pos) + + legend_grid = QtGui.QGridLayout() + legend_grid.setSpacing(10) + + legend_grid.addWidget(QtGui.QLabel('Legend Properties:'), 1, 0) + legend_grid.addWidget(legend_pos_label, 1, 2,) + legend_grid.addWidget(legend_pos_edit, 1, 3) + + update_button = QtGui.QPushButton('Update') + update_button.clicked.connect(self.update_settings) + + vbox = QtGui.QVBoxLayout() + vbox.addLayout(grid_line) + vbox.addLayout(marker_grid) + vbox.addLayout(limits_grid) + vbox.addLayout(legend_grid) + vbox.addWidget(update_button) + + self.setLayout(vbox) + + self.setGeometry(300, 300, 350, 300) + self.resize(1350, 500) + self.setWindowTitle('Plot Settings') + self.show() + + def set_text_fs(self, text): + try: + self.fs = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_e_capthick(self, text): + try: + self.e_capthick = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_e_capsize(self, text): + try: + self.e_capsize = float(text) + except ValueError: + print "Enter a float point number" + + + def set_text_lw(self, text): + try: + self.lw = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_ms(self, text): + try: + self.ms = float(text) + except ValueError: + print "Enter a float point number" + + def set_cted(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.cted = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctmd(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctmd = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctrd(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctrd = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctid(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctid = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_text_mted(self, text): + try: + self.mted = str(text) + except ValueError: + print "Enter a string" + + def set_text_mtmd(self, text): + try: + self.mtmd = str(text) + except ValueError: + print "Enter a string" + + def set_ctem(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctem = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctmm(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctmm = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctrm(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctrm = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_ctim(self): + imag_color = QtGui.QColorDialog().getColor() + + if imag_color.isValid(): + self.ctim = imag_color.getRgbF() + else: + print 'Not a valid color' + + def set_text_mtem(self, text): + try: + self.mtem = str(text) + except ValueError: + print "Enter a string" + + def set_text_mtmm(self, text): + try: + self.mtmm = str(text) + except ValueError: + print "Enter a string" + + def set_text_res_xx(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_xx_limits = tuple(l_list) + + def set_text_res_xy(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_xy_limits = tuple(l_list) + + def set_text_res_yx(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_yx_limits = tuple(l_list) + + def set_text_res_yy(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_yy_limits = tuple(l_list) + + def set_text_phase_xx(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_xx_limits = tuple(l_list) + + def set_text_phase_xy(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_xy_limits = tuple(l_list) + + def set_text_phase_yx(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_yx_limits = tuple(l_list) + + def set_text_phase_yy(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_yy_limits = tuple(l_list) + + def set_text_legend_pos(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.legend_pos = tuple(l_list) + + def update_settings(self): + self.settings_updated.emit() + +#def main(): + +def main(): +#if __name__ == "__main__": + import sys + app = QtGui.QApplication(sys.argv) + MainWindow = QtGui.QMainWindow() + ui = Ui_MainWindow() + ui.setupUi(MainWindow) + MainWindow.show() + sys.exit(app.exec_()) + +if __name__ == '__main__': + + main() \ No newline at end of file From 2cea82e7e93bcde8d91e8db5856e715210ad9ba1 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 10 Apr 2015 13:25:22 -0700 Subject: [PATCH 010/124] fixed the plotting of residual induction vectors and get file directory path --- mtpy/gui/modem_plot_pt_maps.py | 246 +++++++++++++++++++-------------- 1 file changed, 145 insertions(+), 101 deletions(-) diff --git a/mtpy/gui/modem_plot_pt_maps.py b/mtpy/gui/modem_plot_pt_maps.py index ebbf40f0..c969a238 100644 --- a/mtpy/gui/modem_plot_pt_maps.py +++ b/mtpy/gui/modem_plot_pt_maps.py @@ -28,7 +28,7 @@ from matplotlib.colors import Normalize import matplotlib.colorbar as mcb import mtpy.imaging.mtcolors as mtcl -import mtpy.modeling.ws3dinv as ws +import mtpy.analysis.niblettbostick as mtnb try: _fromUtf8 = QtCore.QString.fromUtf8 @@ -287,6 +287,7 @@ def get_data_fn(self): self.modem_data_fn = fn self.dir_path = os.path.dirname(fn) + print self.dir_path, os.path.abspath(self.dir_path) self.period_list = sorted(self.modem_data.period_list) self.period_dict = dict([('{0:.5f}'.format(key), value) for value, key @@ -298,7 +299,9 @@ def get_data_fn(self): for period in self.period_list: self.list_widget.addItem('{0:.5f}'.format(period)) - self.plot_period = self.period_list[0] + self.plot_period = '{0:.5f}'.format(self.period_list[0]) + + self.get_depth() def get_model_fn(self): """ @@ -306,9 +309,10 @@ def get_model_fn(self): """ - fn_dialog = QtGui.QFileDialog(directory=self.dir_path) + fn_dialog = QtGui.QFileDialog() fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM model file', - filter='(*.rho);; (*.ws)')) + filter='(*.rho);; (*.ws)', + directory=self.dir_path)) self.modem_model = modem.Model() self.modem_model.read_model_file(fn) @@ -320,17 +324,18 @@ def get_period(self, widget_item): """ get the station name from the clicked station """ - self.plot_period = str(widget_item.text()) + self.plot_period = '{0:.5f}'.format(float(str(widget_item.text()))) self.plot() def get_resp_fn(self): """ get response file name """ - - fn_dialog = QtGui.QFileDialog(directory=self.dir_path) + print self.dir_path + fn_dialog = QtGui.QFileDialog() fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM response file', - filter='*.dat')) + filter='*.dat', + directory=self.dir_path)) self.modem_resp = modem.Data() self.modem_resp.read_data_file(fn) @@ -455,8 +460,7 @@ def _get_pt(self): rpt = mtpt.ResidualPhaseTensor(pt_object1=dpt, pt_object2=mpt) rpt = rpt.residual_pt - res_pt_arr[:, ii]['east'] = east - res_pt_arr[:, ii]['north'] = north + res_pt_arr[:, ii]['phimin'] = rpt.phimin[0] res_pt_arr[:, ii]['phimax'] = rpt.phimax[0] res_pt_arr[:, ii]['azimuth'] = rpt.azimuth[0] @@ -466,7 +470,10 @@ def _get_pt(self): except mtex.MTpyError_PT: - print key, dpt.pt.shape, mpt.pt.shape + print 'Could not calculate residual PT for {0}'.format(key) + + res_pt_arr[:, ii]['east'] = east + res_pt_arr[:, ii]['north'] = north res_pt_arr[:, ii]['txr'] = data_pt_arr[:, ii]['txr']-\ model_pt_arr[:, ii]['txr'] @@ -483,6 +490,33 @@ def _get_pt(self): if self.modem_resp_fn is not None: self.pt_resp_arr = model_pt_arr self.pt_resid_arr = res_pt_arr + + def get_depth(self): + """ + estimate a niblett-bostick depth from the impedance tensors + """ + if self.modem_data.mt_dict is None: + return + + d_arr_min = np.zeros((self.modem_data.period_list.shape[0], + len(self.modem_data.mt_dict.keys()))) + d_arr_max = np.zeros((self.modem_data.period_list.shape[0], + len(self.modem_data.mt_dict.keys()))) + + for ii, mt_key in enumerate(sorted(self.modem_data.mt_dict.keys())): + mt_obj = self.modem_data.mt_dict[mt_key] + d_arr = mtnb.calculate_depth_nb(z_array=mt_obj.Z.z, + periods=1./mt_obj.Z.freq) + + d_arr_min[:, ii] = d_arr['depth_min'] + d_arr_max[:, ii] = d_arr['depth_max'] + + d_avg_min = np.array([d_arr_min[kk, np.nonzero(d_arr_min[kk, :])].mean() + for kk in range(len(self.modem_data.period_list))]) + d_avg_max = np.array([d_arr_max[kk, np.nonzero(d_arr_max[kk, :])].mean() + for kk in range(len(self.modem_data.period_list))]) + + self.depth_array = ((d_avg_min+d_avg_max)/2)/self.dscale def plot(self): """ @@ -554,10 +588,11 @@ def plot(self): #plot model below the phase tensors if self.modem_model_fn is not None: - approx_depth, d_index = ws.estimate_skin_depth(self.modem_model.res_model.copy(), - self.modem_model.grid_z.copy()/self.dscale, - float(self.plot_period), - dscale=self.dscale) + d_index = np.where(self.modem_model.grid_z >= + self.depth_array[data_ii])[0][0] + + print 'Estimated depth for period {0:.5g} is {1:.2f} m'.format( + float(self.plot_period, self.depth_array[data_ii])) #need to add an extra row and column to east and north to make sure #all is plotted see pcolor for details. plot_east = np.append(self.modem_model.grid_east, @@ -585,35 +620,38 @@ def plot(self): #--> plot data phase tensors for pt in self.pt_data_arr[data_ii]: - eheight = pt['phimin']/\ - self.pt_data_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - ewidth = pt['phimax']/\ - self.pt_data_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - - ellipse = Ellipse((pt['east'], - pt['north']), - width=ewidth, - height=eheight, - angle=90-pt['azimuth']) - - #get ellipse color - if self.ellipse_cmap.find('seg')>0: - ellipse.set_facecolor(mtcl.get_plot_color(pt[self.ellipse_colorby], - self.ellipse_colorby, - self.ellipse_cmap, - ckmin, - ckmax, - bounds=bounds)) + if pt['phimin'] == 0 and pt['phimax'] == 0: + pass else: - ellipse.set_facecolor(mtcl.get_plot_color(pt[self.ellipse_colorby], - self.ellipse_colorby, - self.ellipse_cmap, - ckmin, - ckmax)) - - axd.add_artist(ellipse) + eheight = pt['phimin']/\ + self.pt_data_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + ewidth = pt['phimax']/\ + self.pt_data_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + + ellipse = Ellipse((pt['east'], + pt['north']), + width=ewidth, + height=eheight, + angle=90-pt['azimuth']) + + #get ellipse color + if self.ellipse_cmap.find('seg')>0: + ellipse.set_facecolor(mtcl.get_plot_color(pt[self.ellipse_colorby], + self.ellipse_colorby, + self.ellipse_cmap, + ckmin, + ckmax, + bounds=bounds)) + else: + ellipse.set_facecolor(mtcl.get_plot_color(pt[self.ellipse_colorby], + self.ellipse_colorby, + self.ellipse_cmap, + ckmin, + ckmax)) + + axd.add_artist(ellipse) #-----------Plot Induction Arrows--------------------------- if pt['txr'] != 0.0: @@ -655,35 +693,38 @@ def plot(self): rcmax = np.floor(self.pt_resid_arr['geometric_mean'].max()) for mpt, rpt in zip(self.pt_resp_arr[data_ii], self.pt_resid_arr[data_ii]): - eheight = mpt['phimin']/\ - self.pt_resp_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - ewidth = mpt['phimax']/\ - self.pt_resp_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - - ellipsem = Ellipse((mpt['east'], - mpt['north']), - width=ewidth, - height=eheight, - angle=90-mpt['azimuth']) - - #get ellipse color - if self.ellipse_cmap.find('seg')>0: - ellipsem.set_facecolor(mtcl.get_plot_color(mpt[self.ellipse_colorby], - self.ellipse_colorby, - self.ellipse_cmap, - ckmin, - ckmax, - bounds=bounds)) + if mpt['phimin'] == 0 and mpt['phimax'] == 0: + pass else: - ellipsem.set_facecolor(mtcl.get_plot_color(mpt[self.ellipse_colorby], - self.ellipse_colorby, - self.ellipse_cmap, - ckmin, - ckmax)) - - axm.add_artist(ellipsem) + eheight = mpt['phimin']/\ + self.pt_resp_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + ewidth = mpt['phimax']/\ + self.pt_resp_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + + ellipsem = Ellipse((mpt['east'], + mpt['north']), + width=ewidth, + height=eheight, + angle=90-mpt['azimuth']) + + #get ellipse color + if self.ellipse_cmap.find('seg')>0: + ellipsem.set_facecolor(mtcl.get_plot_color(mpt[self.ellipse_colorby], + self.ellipse_colorby, + self.ellipse_cmap, + ckmin, + ckmax, + bounds=bounds)) + else: + ellipsem.set_facecolor(mtcl.get_plot_color(mpt[self.ellipse_colorby], + self.ellipse_colorby, + self.ellipse_cmap, + ckmin, + ckmax)) + + axm.add_artist(ellipsem) #-----------Plot Induction Arrows--------------------------- if mpt['txr'] != 0.0: @@ -720,37 +761,40 @@ def plot(self): pass #-----------plot residual phase tensors--------------- - eheight = rpt['phimin']/\ - self.pt_resid_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - ewidth = rpt['phimax']/\ - self.pt_resid_arr[data_ii]['phimax'].max()*\ - self.ellipse_size - - ellipser = Ellipse((rpt['east'], - rpt['north']), - width=ewidth, - height=eheight, - angle=rpt['azimuth']) - - #get ellipse color - rpt_color = np.sqrt(abs(rpt['phimin']*rpt['phimax'])) - if self.ellipse_cmap.find('seg')>0: - ellipser.set_facecolor(mtcl.get_plot_color(rpt_color, - 'geometric_mean', - self.residual_cmap, - ckmin, - ckmax, - bounds=bounds)) + if mpt['phimin'] == 0 and mpt['phimax'] == 0: + pass else: - ellipser.set_facecolor(mtcl.get_plot_color(rpt_color, - 'geometric_mean', - self.residual_cmap, - ckmin, - ckmax)) - - - axr.add_artist(ellipser) + eheight = rpt['phimin']/\ + self.pt_resid_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + ewidth = rpt['phimax']/\ + self.pt_resid_arr[data_ii]['phimax'].max()*\ + self.ellipse_size + + ellipser = Ellipse((rpt['east'], + rpt['north']), + width=ewidth, + height=eheight, + angle=rpt['azimuth']) + + #get ellipse color + rpt_color = np.sqrt(abs(rpt['phimin']*rpt['phimax'])) + if self.ellipse_cmap.find('seg')>0: + ellipser.set_facecolor(mtcl.get_plot_color(rpt_color, + 'geometric_mean', + self.residual_cmap, + ckmin, + ckmax, + bounds=bounds)) + else: + ellipser.set_facecolor(mtcl.get_plot_color(rpt_color, + 'geometric_mean', + self.residual_cmap, + ckmin, + ckmax)) + + + axr.add_artist(ellipser) #-----------Plot Induction Arrows--------------------------- if rpt['txr'] != 0.0: From ef0ab5db080f510eb012ba7fee940ec0154d2925 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 10 Apr 2015 14:33:52 -0700 Subject: [PATCH 011/124] added depth label to modem_plot_pt_maps, estimated from nb --- mtpy/gui/modem_plot_pt_maps.py | 67 ++++++++++++++++++++++++++-------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/mtpy/gui/modem_plot_pt_maps.py b/mtpy/gui/modem_plot_pt_maps.py index c969a238..0c41f481 100644 --- a/mtpy/gui/modem_plot_pt_maps.py +++ b/mtpy/gui/modem_plot_pt_maps.py @@ -129,10 +129,24 @@ def setupUi(self, MainWindow): self.central_widget = QtGui.QWidget(MainWindow) self.central_widget.setWindowTitle("Plot MT Response") - #make a widget that will be the station list + #make a widget that will be the period list self.list_widget = QtGui.QListWidget() self.list_widget.itemClicked.connect(self.get_period) self.list_widget.setMaximumWidth(150) + + # make a depth text bar + self.depth_label = QtGui.QLabel('Depth (m):') + depth_font = QtGui.QFont() + depth_font.setBold = True + depth_font.setPointSize (16) + self.depth_label.setFont(depth_font) + + self.depth_text = QtGui.QLabel('0.0') + self.depth_text.setFont(depth_font) + self.depth_text.setAlignment(QtCore.Qt.AlignCenter) + depth_vbox = QtGui.QVBoxLayout() + depth_vbox.addWidget(self.depth_label) + depth_vbox.addWidget(self.depth_text) # this is the Canvas Widget that displays the `figure` # it takes the `figure` instance as a parameter to __init__ @@ -159,9 +173,13 @@ def setupUi(self, MainWindow): mpl_vbox.addWidget(self.mpl_toolbar) mpl_vbox.addWidget(self.mpl_widget) + left_layout = QtGui.QVBoxLayout() + left_layout.addWidget(self.list_widget) + left_layout.addLayout(depth_vbox) + # set the layout the main window layout = QtGui.QHBoxLayout() - layout.addWidget(self.list_widget) + layout.addLayout(left_layout) layout.addLayout(mpl_vbox) self.central_widget.setLayout(layout) @@ -301,7 +319,7 @@ def get_data_fn(self): self.plot_period = '{0:.5f}'.format(self.period_list[0]) - self.get_depth() + self.get_depth_array() def get_model_fn(self): """ @@ -491,9 +509,11 @@ def _get_pt(self): self.pt_resp_arr = model_pt_arr self.pt_resid_arr = res_pt_arr - def get_depth(self): + def get_depth_array(self): """ estimate a niblett-bostick depth from the impedance tensors + + find the average depth for each station at each period """ if self.modem_data.mt_dict is None: return @@ -502,21 +522,24 @@ def get_depth(self): len(self.modem_data.mt_dict.keys()))) d_arr_max = np.zeros((self.modem_data.period_list.shape[0], len(self.modem_data.mt_dict.keys()))) - + print self.modem_data.mt_dict[self.modem_data.mt_dict.keys()[0]].Z.z for ii, mt_key in enumerate(sorted(self.modem_data.mt_dict.keys())): mt_obj = self.modem_data.mt_dict[mt_key] - d_arr = mtnb.calculate_depth_nb(z_array=mt_obj.Z.z, - periods=1./mt_obj.Z.freq) + d_arr = mtnb.calculate_depth_nb(z_object=mt_obj.Z) d_arr_min[:, ii] = d_arr['depth_min'] d_arr_max[:, ii] = d_arr['depth_max'] + # average only the non zero terms d_avg_min = np.array([d_arr_min[kk, np.nonzero(d_arr_min[kk, :])].mean() - for kk in range(len(self.modem_data.period_list))]) + for kk in range(d_arr_min.shape[0])]) d_avg_max = np.array([d_arr_max[kk, np.nonzero(d_arr_max[kk, :])].mean() - for kk in range(len(self.modem_data.period_list))]) + for kk in range(d_arr_min.shape[0])]) + + # find the average and leave in meters cause grid_z is in meters + d_avg = np.nan_to_num(((d_avg_min+d_avg_max)/2.)) - self.depth_array = ((d_avg_min+d_avg_max)/2)/self.dscale + self.depth_array = d_avg def plot(self): """ @@ -588,11 +611,25 @@ def plot(self): #plot model below the phase tensors if self.modem_model_fn is not None: - d_index = np.where(self.modem_model.grid_z >= - self.depth_array[data_ii])[0][0] - - print 'Estimated depth for period {0:.5g} is {1:.2f} m'.format( - float(self.plot_period, self.depth_array[data_ii])) + if self.depth_array[data_ii] == 0: + print 'Could not estimate depth for period {0:.5g}'.format( + float(self.plot_period)) + d_index = 0 + else: + try: + d_index = np.where(self.modem_model.grid_z >= + self.depth_array[data_ii])[0][0] + + print 'Estimated depth for period {0:.5g} is {1:.2f} m'.format( + float(self.plot_period), self.depth_array[data_ii]) + + self.depth_text.setText('{0:.5g}'.format(self.depth_array[data_ii])) + + except IndexError: + print 'Could not estimate depth for period {0:.2f}'.format( + float(self.plot_period)) + d_index = 0 + #need to add an extra row and column to east and north to make sure #all is plotted see pcolor for details. plot_east = np.append(self.modem_model.grid_east, From 87fba45b38b6c204a6706a769f132bf57de77b47 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 24 Nov 2015 17:18:52 -0800 Subject: [PATCH 012/124] working on an occam 1d gui --- mtpy/gui/occam1d_gui.py | 383 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 383 insertions(+) create mode 100644 mtpy/gui/occam1d_gui.py diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py new file mode 100644 index 00000000..8c88988c --- /dev/null +++ b/mtpy/gui/occam1d_gui.py @@ -0,0 +1,383 @@ +# -*- coding: utf-8 -*- +""" +Occam 1D +----------------- + +All encompassing ploting data, model and model response. + + +JP 2015 +""" +# + +from PyQt4 import QtCore, QtGui +import mtpy.modeling.occam1d as occam1d +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar +from matplotlib.figure import Figure +import mtpy.imaging.mtplottools as mtplottools +import matplotlib.gridspec as gridspec +import numpy as np +import matplotlib.pyplot as plt +import os +import sys + +class MyStream(QtCore.QObject): + """ + this class will emit a signal + """ + message = QtCore.pyqtSignal(str) + def __init__(self, parent=None): + super(MyStream, self).__init__(parent) + + def write(self, message): + self.message.emit(str(message)) + +class Occam1D_GUI(QtGui.QMainWindow): + def __init__(self): + super(Occam1D_GUI, self).__init__() + self.ms = 5 + self.lw = 1.5 + self.data_marker_color = (0, 0, 0) + self.data_marker = 's' + self.model_marker_color = (1, 0, 0) + self.model_marker = 'x' + self.e_capthick = 1 + self.e_capsize = 5 + + self.res_limits = None + self.phase_limits = None + + self.subplot_wspace = .25 + self.subplot_hspace = .0 + self.subplot_right = .98 + self.subplot_left = .08 + self.subplot_top = .93 + self.subplot_bottom = .08 + + self.legend_loc = 'upper center' + self.legend_pos = (.5, 1.15) + self.legend_marker_scale = 1 + self.legend_border_axes_pad = .01 + self.legend_label_spacing = 0.07 + self.legend_handle_text_pad = .2 + self.legend_border_pad = .15 + + self.fs = 11 + self.ylabel_pad = 1.25 + self.station = None + + self.occam_data = None + self.occam_resp = None + self.dir_path = os.getcwd() + + self.ui_setup() + + def ui_setup(self): + """ + setup the window layout + """ + + self.setWindowTitle("Run Occam 1D") + self.resize(1920, 1080) + + self.occam_widget = OccamWidget() + self.central_widget = self.setCentralWidget(self.occam_widget) + + #-------------------------------------------------------- + # stream the output of occam 1D + self.my_stream = MyStream() + self.my_stream.message.connect(self.occam_widget.normal_output) + + sys.stdout = self.my_stream + + QtCore.QMetaObject.connectSlotsByName(self) + +#============================================================================== +# Occam 1D widget +#============================================================================== +class OccamWidget(QtGui.QWidget): + """ + occam 1D widget + """ + + def __init__(self): + super(OccamWidget, self).__init__() + + self.occam_data = occam1d.Data() + self.occam_model = occam1d.Model() + self.occam_startup = occam1d.Startup() + self.mpl_widget = OccamPlot() + + self.res_err = 10 + self.phase_err = 5 + self.data_mode = 'TE' + + self.setup_ui() + + def setup_ui(self): + """ + setup the user interface + """ + # font type to use for labels + label_font = QtGui.QFont() + label_font.setBold = True + label_font.setPointSize (16) + + #--------------------------------------------------- + # menu bar +# self.menu_bar = QtGui.QMenuBar(self) +# self.menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 40)) +# +# self.menu_data = QtGui.QMenu(self.menu_bar) +# self.menu_data.setTitle("Data") +# +# self.menu_model = QtGui.QMenu(self.menu_bar) +# self.menu_model.setTitle("Model") +# +# self.menu_startup = QtGui.QMenu(self.menu_bar) +# self.menu_startup.setTitle('Startup') +# +# self.setMenuBar(self.menu_bar) + + self.get_edi_button = QtGui.QPushButton('Get EDI File') + self.get_edi_button.clicked.connect(self.get_edi_file) + + self.data_label = QtGui.QLabel('Data Parameters') + self.data_label.setFont(label_font) + + self.data_res_err_label = QtGui.QLabel('Res. Error (%)') + self.data_res_err_edit = QtGui.QLineEdit() + self.data_res_err_edit.setText('{0:.2f}'.format(self.res_err)) + self.data_res_err_edit.editingFinished.connect(self.set_res_err) + + self.data_phase_err_label = QtGui.QLabel('Phase Error (%)') + self.data_phase_err_edit = QtGui.QLineEdit() + self.data_phase_err_edit.setText('{0:.2f}'.format(self.phase_err)) + self.data_phase_err_edit.editingFinished.connect(self.set_phase_err) + + self.data_mode_label = QtGui.QLabel('Mode') + self.data_mode_combo = QtGui.QComboBox() + self.data_mode_combo.addItem('TE') + self.data_mode_combo.addItem('TM') + self.data_mode_combo.addItem('Det') + self.data_mode_combo.activated[str].connect(self.set_data_mode) + + # vertical layer parameters + self.model_label = QtGui.QLabel('Model Parameters') + self.model_label.setFont(label_font) + + self.n_layers_label = QtGui.QLabel('Number of Vertical Layers') + self.n_layers_edit = QtGui.QLineEdit() + self.n_layers_edit.setText('{0:.0f}'.format(self.occam_model.n_layers)) + self.n_layers_edit.editingFinished.connect(self.set_n_layers) + + self.z1_layer_label = QtGui.QLabel('Thicknes of 1st layer (m)') + self.z1_layer_edit = QtGui.QLineEdit() + self.z1_layer_edit.setText('{0:.2f}'.format(self.occam_model.z1_layer)) + self.z1_layer_edit.editingFinished.connect(self.set_z1_layer) + + self.z_target_label = QtGui.QLabel('Target Depth (m)') + self.z_target_edit = QtGui.QLineEdit() + self.z_target_edit.setText('{0:.2f}'.format(self.occam_model.target_depth)) + self.z_target_edit.editingFinished.connect(self.set_z_target) + + self.z_bottom_label = QtGui.QLabel('Bottom of the Model (m)') + self.z_bottom_edit = QtGui.QLineEdit() + self.z_bottom_edit.setText('{0:.2f}'.format(self.occam_model.bottom_layer)) + self.z_bottom_edit.editingFinished.connect(self.set_z_bottom) + + # starting resistivity + self.rho_start_label = QtGui.QLabel('Starting rho (Ohmm)') + self.rho_start_edit = QtGui.QLineEdit() + self.rho_start_edit.setText('{0:.2f}'.format(100)) + self.rho_start_edit.editingFinished.connect(self.set_rho) + + #---set the layout--------------- + data_grid = QtGui.QGridLayout() + data_grid.addWidget(self.data_label, 0, 0) + + data_grid.addWidget(self.data_res_err_label, 1, 0) + data_grid.addWidget(self.data_res_err_edit, 1, 1) + + data_grid.addWidget(self.data_phase_err_label, 2, 0) + data_grid.addWidget(self.data_phase_err_edit, 2, 1) + + data_grid.addWidget(self.data_mode_label, 3, 0) + data_grid.addWidget(self.data_mode_combo, 3, 1) + + model_grid = QtGui.QGridLayout() + model_grid.addWidget(self.model_label, 0, 0) + + model_grid.addWidget(self.n_layers_label, 1, 0) + model_grid.addWidget(self.n_layers_edit, 1, 1) + + model_grid.addWidget(self.z1_layer_label, 2, 0) + model_grid.addWidget(self.z1_layer_edit, 2, 1) + + model_grid.addWidget(self.z_target_label, 3, 0) + model_grid.addWidget(self.z_target_edit, 3, 1) + + model_grid.addWidget(self.z_bottom_label, 4, 0) + model_grid.addWidget(self.z_bottom_edit, 4, 1) + + + model_grid.addWidget(self.rho_start_label, 5, 0) + model_grid.addWidget(self.rho_start_edit, 5, 1) + + edit_layout = QtGui.QVBoxLayout() + edit_layout.addWidget(self.get_edi_button) + edit_layout.addLayout(data_grid) + edit_layout.addLayout(model_grid) + + self.output_box = QtGui.QTextEdit() + + plot_layout = QtGui.QVBoxLayout() + plot_layout.addWidget(self.mpl_widget) + plot_layout.addWidget(self.output_box) + + window_layout = QtGui.QHBoxLayout() + window_layout.addLayout(edit_layout) + window_layout.addLayout(plot_layout) + + self.setLayout(window_layout) + + QtCore.QMetaObject.connectSlotsByName(self) + + def get_edi_file(self): + """ + get edi file to invert + """ + + edi_dialog = QtGui.QFileDialog() + fn = str(edi_dialog.getOpenFileName(caption='Pick .edi file', + filter='*.edi')) + self.edi_fn = fn + + self.mpl_widget.plot_mesh() + + def set_res_err(self): + self.res_err = float(str(self.data_res_err_edit.text())) + + def set_phase_err(self): + self.phase_err = float(str(self.data_phase_err_edit.text())) + + def set_data_mode(self, text): + self.data_mode = text + + def set_n_layers(self): + self.occam_model.n_layers = int(str(self.n_layers_edit.text())) + self.n_layers_edit.setText('{0:.0f}'.format(self.occam_model.n_layers)) + + def set_z1_layer(self): + self.occam_model.z1_layer = float(str(self.z1_layer_edit.text())) + self.z1_layer_edit.setText('{0:.2f}'.format(self.occam_model.z1_layer)) + + def set_z_target(self): + self.occam_model.target_depth = float(str(self.z_target_edit.text())) + self.z_target_edit.setText('{0:.2f}'.format(self.occam_model.target_depth)) + + def set_z_bottom(self): + self.occam_model.bottom_layer = float(str(self.z_bottom_edit.text())) + self.z_bottom_edit.setText('{0:.2f}'.format(self.occam_model.bottom_layer)) + + def set_rho(self): + self.occam_startup.start_rho = float(str(self.rho_start_edit.text())) + self.rho_start_edit.setText('{0:.2f}'.format(self.occam_startup.start_rho)) + + @QtCore.pyqtSlot(str) + def normal_output(self, message): + self.output_box.moveCursor(QtGui.QTextCursor.End) + self.output_box.insertPlainText(message) + +#============================================================================== +# Mesh Plot +#============================================================================== +class OccamPlot(QtGui.QWidget): + """ + plotting the mesh + """ + + def __init__(self): + super(OccamPlot, self).__init__() + + self.subplot_wspace = .25 + self.subplot_hspace = .15 + self.subplot_right = .92 + self.subplot_left = .085 + self.subplot_top = .93 + self.subplot_bottom = .1 + + self.station_marker = 'v' + self.marker_color = 'b' + self.marker_size = 2 + + self.line_color = 'k' + self.line_width = .5 + + self.fs = 10 + + self.setup_ui() + + def setup_ui(self): + + self.figure = Figure(dpi=150) + self.mpl_widget = FigureCanvas(self.figure) + + self.figure.subplots_adjust(left=self.subplot_left, + right=self.subplot_right, + bottom=self.subplot_bottom, + top=self.subplot_top, + hspace=self.subplot_hspace, + wspace=self.subplot_wspace) + + #make sure the figure takes up the entire plottable space + self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + + # this is the Navigation widget + # it takes the Canvas widget and a parent + self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) + # set the layout for the plot + mpl_vbox = QtGui.QVBoxLayout() + mpl_vbox.addWidget(self.mpl_toolbar) + mpl_vbox.addWidget(self.mpl_widget) + + self.setLayout(mpl_vbox) + + self.mpl_widget.updateGeometry() + + def plot_mesh(self): + """ + plot response and depth model + """ + self.figure.clf() + + #make a grid of subplots + gs=gridspec.GridSpec(6, 5, hspace=self.subplot_hspace, + wspace=self.subplot_wspace) + #subplot resistivity + self.axr = self.figure.add_subplot(gs[:4, :4]) + + #subplot for phase + self.axp = self.figure.add_subplot(gs[4:,:4], sharex=self.axr) + + #subplot for model + self.axm = self.figure.add_subplot(gs[:, 4]) + + self.mpl_widget.draw() + +#============================================================================== +# Main execution +#============================================================================== +def main(): +#if __name__ == "__main__": + import sys + app = QtGui.QApplication(sys.argv) + ui = Occam1D_GUI() + ui.show() + sys.exit(app.exec_()) + +if __name__ == '__main__': + + main() \ No newline at end of file From c6e8dfd1e6bc453e3c5875b6e9af40c894d5480f Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 30 Nov 2015 17:50:22 -0800 Subject: [PATCH 013/124] creating an occam 1D gui --- mtpy/gui/occam1d_gui.py | 650 +++++++++++++++++++++++++++++++++++++-- mtpy/modeling/occam1d.py | 2 +- 2 files changed, 624 insertions(+), 28 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 8c88988c..33d6c347 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -15,6 +15,7 @@ from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure +from matplotlib.ticker import MultipleLocator import mtpy.imaging.mtplottools as mtplottools import matplotlib.gridspec as gridspec import numpy as np @@ -107,11 +108,15 @@ def __init__(self): self.occam_data = occam1d.Data() self.occam_model = occam1d.Model() self.occam_startup = occam1d.Startup() - self.mpl_widget = OccamPlot() + self.occam_exec = None + self.mpl_widget = OccamPlot() - self.res_err = 10 - self.phase_err = 5 + self.l2_widget = PlotL2() + + self.res_err = 10. + self.phase_err = 5. self.data_mode = 'TE' + self.edi_fn = None self.setup_ui() @@ -140,9 +145,20 @@ def setup_ui(self): # # self.setMenuBar(self.menu_bar) + self.get_occam_path_button = QtGui.QPushButton('Occam1D Path') + self.get_occam_path_button.clicked.connect(self.get_occam_path) + + self.get_occam_path_edit = QtGui.QLineEdit() + self.get_occam_path_edit.setText(self.occam_exec) + self.get_occam_path_edit.editingFinished.connect(self.get_occam_path) + self.get_edi_button = QtGui.QPushButton('Get EDI File') self.get_edi_button.clicked.connect(self.get_edi_file) + self.get_edi_edit = QtGui.QLineEdit() + self.get_edi_edit.setText(self.edi_fn) + self.get_edi_edit.editingFinished.connect(self.get_edi_file) + self.data_label = QtGui.QLabel('Data Parameters') self.data_label.setFont(label_font) @@ -188,12 +204,39 @@ def setup_ui(self): self.z_bottom_edit.editingFinished.connect(self.set_z_bottom) # starting resistivity - self.rho_start_label = QtGui.QLabel('Starting rho (Ohmm)') - self.rho_start_edit = QtGui.QLineEdit() - self.rho_start_edit.setText('{0:.2f}'.format(100)) - self.rho_start_edit.editingFinished.connect(self.set_rho) + self.startup_label = QtGui.QLabel('Startup Parameters') + self.startup_label.setFont(label_font) + + self.start_rho_label = QtGui.QLabel('Starting rho (Ohmm)') + self.start_rho_edit = QtGui.QLineEdit() + self.start_rho_edit.setText('{0:.2f}'.format(self.occam_startup.start_rho)) + self.start_rho_edit.editingFinished.connect(self.set_rho) + + self.max_iter_label = QtGui.QLabel('Num of Iterations') + self.max_iter_edit = QtGui.QLineEdit() + self.max_iter_edit.setText('{0:.0f}'.format(self.occam_startup.max_iter)) + self.max_iter_edit.editingFinished.connect(self.set_max_iter) + + self.target_rms_label = QtGui.QLabel('Target RMS') + self.target_rms_edit = QtGui.QLineEdit() + self.target_rms_edit.setText('{0:.2f}'.format(self.occam_startup.target_rms)) + self.target_rms_edit.editingFinished.connect(self.set_target_rms) + + self.start_roughness_label = QtGui.QLabel('Starting Roughness') + self.start_roughness_edit = QtGui.QLineEdit() + self.start_roughness_edit.setText('{0:.2f}'.format(self.occam_startup.start_rough)) + self.start_roughness_edit.editingFinished.connect(self.set_start_rough) + self.start_lagrange_label = QtGui.QLabel('Starting Lagrange') + self.start_lagrange_edit = QtGui.QLineEdit() + self.start_lagrange_edit.setText('{0:.2f}'.format(self.occam_startup.start_lagrange)) + self.start_lagrange_edit.editingFinished.connect(self.set_start_lagrange) + #---set the layout--------------- + path_layout = QtGui.QHBoxLayout() + path_layout.addWidget(self.get_occam_path_button) + path_layout.addWidget(self.get_occam_path_edit) + data_grid = QtGui.QGridLayout() data_grid.addWidget(self.data_label, 0, 0) @@ -220,15 +263,42 @@ def setup_ui(self): model_grid.addWidget(self.z_bottom_label, 4, 0) model_grid.addWidget(self.z_bottom_edit, 4, 1) + + startup_grid = QtGui.QGridLayout() + startup_grid.addWidget(self.startup_label, 0, 0) - model_grid.addWidget(self.rho_start_label, 5, 0) - model_grid.addWidget(self.rho_start_edit, 5, 1) + startup_grid.addWidget(self.target_rms_label, 1, 0) + startup_grid.addWidget(self.target_rms_edit, 1, 1) + + startup_grid.addWidget(self.max_iter_label, 2, 0) + startup_grid.addWidget(self.max_iter_edit, 2, 1) + + startup_grid.addWidget(self.start_rho_label, 3, 0) + startup_grid.addWidget(self.start_rho_edit, 3, 1) + + startup_grid.addWidget(self.start_lagrange_label, 4, 0) + startup_grid.addWidget(self.start_lagrange_edit, 4, 1) + + startup_grid.addWidget(self.start_roughness_label, 5, 0) + startup_grid.addWidget(self.start_roughness_edit, 5, 1) + + run_button = QtGui.QPushButton() + run_button.setText('Run') + run_button.clicked.connect(self.run_occam) + + edi_layout = QtGui.QHBoxLayout() + edi_layout.addWidget(self.get_edi_button) + edi_layout.addWidget(self.get_edi_edit) edit_layout = QtGui.QVBoxLayout() - edit_layout.addWidget(self.get_edi_button) + edit_layout.addLayout(edi_layout) edit_layout.addLayout(data_grid) edit_layout.addLayout(model_grid) + edit_layout.addLayout(startup_grid) + edit_layout.addWidget(self.l2_widget) + edit_layout.addLayout(path_layout) + edit_layout.addWidget(run_button) self.output_box = QtGui.QTextEdit() @@ -236,14 +306,30 @@ def setup_ui(self): plot_layout.addWidget(self.mpl_widget) plot_layout.addWidget(self.output_box) - window_layout = QtGui.QHBoxLayout() - window_layout.addLayout(edit_layout) - window_layout.addLayout(plot_layout) +# window_layout = QtGui.QHBoxLayout() +# window_layout.addLayout(edit_layout) +# window_layout.addLayout(plot_layout) + + window_grid = QtGui.QGridLayout() + window_grid.addLayout(edit_layout, 0, 0, 1, 5) + window_grid.addLayout(plot_layout, 0, 5, 1, 1) - self.setLayout(window_layout) + self.setLayout(window_grid) QtCore.QMetaObject.connectSlotsByName(self) + def get_occam_path(self): + """ + get occam path + """ + + occam_path_dialog = QtGui.QFileDialog() + fn = str(occam_path_dialog.getOpenFileName( + caption='Locate Occam1D executable')) + + self.occam_exec = os.path.abspath(fn) + self.get_occam_path_edit.setText(self.occam_exec) + def get_edi_file(self): """ get edi file to invert @@ -253,8 +339,23 @@ def get_edi_file(self): fn = str(edi_dialog.getOpenFileName(caption='Pick .edi file', filter='*.edi')) self.edi_fn = fn + self.get_edi_edit.setText(self.edi_fn) + + self.save_dir = os.path.join(os.path.dirname(self.edi_fn), + self.data_mode) - self.mpl_widget.plot_mesh() + if not os.path.isdir(self.save_dir): + os.mkdir(self.save_dir) + print 'Made directory {0}'.format(self.save_dir) + + self.occam_data.write_data_file(edi_file=self.edi_fn, + save_path=self.save_dir, + mode=self.data_mode, + res_err=self.res_err, + phase_err=self.phase_err, + thetar=0) + + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) def set_res_err(self): self.res_err = float(str(self.data_res_err_edit.text())) @@ -282,8 +383,65 @@ def set_z_bottom(self): self.z_bottom_edit.setText('{0:.2f}'.format(self.occam_model.bottom_layer)) def set_rho(self): - self.occam_startup.start_rho = float(str(self.rho_start_edit.text())) - self.rho_start_edit.setText('{0:.2f}'.format(self.occam_startup.start_rho)) + self.occam_startup.start_rho = float(str(self.start_rho_edit.text())) + self.start_rho_edit.setText('{0:.2f}'.format(self.occam_startup.start_rho)) + + def set_max_iter(self): + self.occam_startup.max_iter = int(str(self.max_iter_edit.text())) + self.max_iter_edit.setText('{0:.0f}'.format(self.occam_startup.max_iter)) + + def set_target_rms(self): + self.occam_startup.target_rms = float(str(self.target_rms_edit.text())) + self.target_rms_edit.setText('{0:.2f}'.format(self.occam_startup.target_rms)) + + def set_start_rough(self): + self.occam_startup.start_rough = float(str(self.start_roughness_edit.text())) + self.start_rough_edit.setText('{0:.2f}'.format(self.occam_startup.start_rough)) + + def set_start_lagrange(self): + self.occam_startup.start_lagrange = float(str(self.start_lagrange_edit.text())) + self.start_lagrange_edit.setText('{0:.2f}'.format(self.occam_startup.start_lagrange)) + + def run_occam(self): + """ + write all the needed files and run occam then plot + """ + + # write data file + self.occam_data.write_data_file(edi_file=self.edi_fn, + save_path=self.save_dir, + mode=self.data_mode, + res_err=self.res_err, + phase_err=self.phase_err, + thetar=0) + + # write model file + self.occam_model.write_model_file(save_path=self.save_dir) + + # write startup file + self.occam_startup.data_fn = self.occam_data.data_fn + self.occam_startup.model_fn = self.occam_model.model_fn + self.occam_startup.write_startup_file(save_path=self.save_dir) + + # run occam + occam_run = occam1d.Run(startup_fn=self.occam_startup.startup_fn, + occam_path=self.occam_exec, + mode=self.data_mode) + + ini_resp_fn = os.path.join(self.save_dir, + '{0}_{1}.resp'.format(self.data_mode, 1)) + ini_model_fn = os.path.join(self.save_dir, + '{0}_{1}.iter'.format(self.data_mode, 1)) + + ini_resp_fn = os.path.abspath(ini_resp_fn) + ini_model_fn = os.path.abspath(ini_model_fn) + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn, + resp_fn=ini_resp_fn, + iter_fn=ini_model_fn, + model_fn=self.occam_model.model_fn) + + self.l2_widget.plot_l2(dir_path=self.save_dir, + model_fn=self.occam_model.model_fn) @QtCore.pyqtSlot(str) def normal_output(self, message): @@ -301,27 +459,42 @@ class OccamPlot(QtGui.QWidget): def __init__(self): super(OccamPlot, self).__init__() - self.subplot_wspace = .25 + self.subplot_wspace = .15 self.subplot_hspace = .15 - self.subplot_right = .92 + self.subplot_right = .90 self.subplot_left = .085 self.subplot_top = .93 self.subplot_bottom = .1 - self.station_marker = 'v' - self.marker_color = 'b' - self.marker_size = 2 + self.fig = None + self.axr = None + self.axp = None + self.axm = None + + self.res_limits = None + self.phase_limits = (-5, 95) + self.depth_scale = 'log' + self.depth_units = 'km' + self.depth_limits = None + + self.marker_data = 'o' + self.marker_data_color = 'k' + self.marker_resp = 's' + self.marker_resp_color = 'b' + self.marker_size = 3 - self.line_color = 'k' - self.line_width = .5 + self.lw = .75 + self.ls = ':' + self.e_capthick = .75 + self.e_capsize = 3 - self.fs = 10 + self.font_size = 10 self.setup_ui() def setup_ui(self): - self.figure = Figure(dpi=150) + self.figure = Figure(dpi=200) self.mpl_widget = FigureCanvas(self.figure) self.figure.subplots_adjust(left=self.subplot_left, @@ -347,12 +520,39 @@ def setup_ui(self): self.mpl_widget.updateGeometry() - def plot_mesh(self): + def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, + iter_fn=None): """ plot response and depth model """ self.figure.clf() + d_kwargs = {'ls':self.ls, + 'marker':self.marker_data, + 'ms':self.marker_size, + 'mfc':self.marker_data_color, + 'mec':self.marker_data_color, + 'color':self.marker_data_color, + 'ecolor':self.marker_data_color, + 'picker':2, + 'lw':self.lw, + 'elinewidth':self.lw, + 'capsize':self.e_capsize, + 'capthick':self.e_capthick} + + r_kwargs = {'ls':self.ls, + 'marker':self.marker_resp, + 'ms':self.marker_size, + 'mfc':self.marker_resp_color, + 'mec':self.marker_resp_color, + 'color':self.marker_resp_color, + 'ecolor':self.marker_resp_color, + 'picker':2, + 'lw':self.lw, + 'elinewidth':self.lw, + 'capsize':self.e_capsize, + 'capthick':self.e_capthick} + #make a grid of subplots gs=gridspec.GridSpec(6, 5, hspace=self.subplot_hspace, wspace=self.subplot_wspace) @@ -365,8 +565,404 @@ def plot_mesh(self): #subplot for model self.axm = self.figure.add_subplot(gs[:, 4]) + #----------------------------------------------------------------- + #--> plot data apparent resistivity and phase------------------------- + if data_fn is not None: + d1 = occam1d.Data() + d1.read_data_file(data_fn) + + #--> cut out missing data + rxy = np.where(d1.res_te[0] != 0)[0] + + #--> TE mode Data + if len(rxy) > 0: + rte = self.axr.errorbar(1./d1.freq[rxy], + d1.res_te[0][rxy], + yerr=d1.res_te[1][rxy], + **d_kwargs) + #legend_marker_list_te.append(rte[0]) + #legend_label_list_te.append('$Obs_{TE}$') + else: + pass + + #--> cut out missing data + ryx = np.where(d1.res_tm[0] != 0)[0] + + #--> TE mode Data + if len(ryx) > 0: + rtm = self.axr.errorbar(1./d1.freq[ryx], + d1.res_tm[0][ryx], + yerr=d1.res_tm[1][ryx], + **d_kwargs) + #legend_marker_list_te.append(rte[0]) + #legend_label_list_te.append('$Obs_{TE}$') + else: + pass + #--------------------plot phase-------------------------------- + #cut out missing data points first + pxy = np.where(d1.phase_te[0]!=0)[0] + + #--> TE mode data + if len(pxy) > 0: + self.axp.errorbar(1./d1.freq[pxy], + d1.phase_te[0][pxy], + yerr=d1.phase_te[1][pxy], + **d_kwargs) + else: + pass + + #cut out missing data points first + pyx = np.where(d1.phase_tm[0]!=0)[0] + + #--> TE mode data + if len(pyx) > 0: + self.axp.errorbar(1./d1.freq[pyx], + d1.phase_te[0][pyx], + ls=self.ls, + yerr=d1.phase_te[1][pyx], + **d_kwargs) + else: + pass + + #----------------------------------------------------------------- + #--> plot data apparent resistivity and phase------------------------- + if resp_fn is not None: + r1 = occam1d.Data() + r1.read_resp_file(resp_fn, data_fn=data_fn) + + #--> cut out missing data + rxy = np.where(r1.res_te[2] != 0)[0] + + #--> TE mode Data + if len(rxy) > 0: + rte = self.axr.errorbar(1./r1.freq[rxy], + r1.res_te[2][rxy], + yerr=r1.res_te[3][rxy], + **r_kwargs) + #legend_marker_list_te.append(rte[0]) + #legend_label_list_te.append('$Obs_{TE}$') + else: + pass + + #--> cut out missing data + ryx = np.where(r1.res_tm[2] != 0)[0] + + #--> TE mode Data + if len(ryx) > 0: + rtm = self.axr.errorbar(1./r1.freq[ryx], + r1.res_tm[2][ryx], + yerr=r1.res_tm[3][ryx], + **r_kwargs) + #legend_marker_list_te.append(rte[0]) + #legend_label_list_te.append('$Obs_{TE}$') + else: + pass + #--------------------plot phase-------------------------------- + #cut out missing data points first + pxy = np.where(r1.phase_te[2]!=0)[0] + + #--> TE mode data + if len(pxy) > 0: + self.axp.errorbar(1./r1.freq[pxy], + r1.phase_te[2][pxy], + yerr=r1.phase_te[3][pxy], + **r_kwargs) + else: + pass + + #cut out missing data points first + pyx = np.where(r1.phase_tm[2]!=0)[0] + + #--> TE mode data + if len(pyx) > 0: + self.axp.errorbar(1./r1.freq[pyx], + r1.phase_te[2][pyx], + ls=self.ls, + yerr=r1.phase_te[3][pyx], + **r_kwargs) + else: + pass + + + #--> set axis properties----------------------------------------------- + self.axr.set_xscale('log') + self.axp.set_xscale('log') + self.axr.set_yscale('log') + self.axr.grid(True, alpha=.75, which='both', + color=(.75, .75, .75)) + plt.setp(self.axr.xaxis.get_ticklabels(),visible=False) + self.axp.grid(True, alpha=.75, which='both', + color=(.75, .75, .75)) + self.axp.yaxis.set_major_locator(MultipleLocator(15)) + self.axp.yaxis.set_minor_locator(MultipleLocator(3)) + + if self.res_limits is not None: + self.axr.set_ylim(self.res_limits) + + if self.phase_limits is not None: + self.axp.set_ylim(self.phase_limits) + + self.axr.set_ylabel('App. Res. ($\Omega \cdot m$)', + fontdict={'size':self.font_size,'weight':'bold'}) + self.axp.set_ylabel('Phase (deg)', + fontdict={'size':self.font_size,'weight':'bold'}) + self.axp.set_xlabel('Period (s)', + fontdict={'size':self.font_size,'weight':'bold'}) + #plt.suptitle(self.title_str,fontsize=self.font_size+2,fontweight='bold') + + + #--> plot depth model-------------------------------------------------- + if model_fn is not None: + if self.depth_units == 'km': + dscale = 1000. + else: + dscale = 1. + + #--> plot te models + m1 = occam1d.Model() + m1.read_iter_file(iter_fn, model_fn) + plot_depth = m1.model_depth[1:]/dscale + plot_model = abs(10**m1.model_res[1:,1]) + self.axm.semilogx(plot_model[::-1], + plot_depth[::-1], + ls='steps-', + color='b', + lw=self.lw) + + if self.depth_limits == None: + dmin = min(plot_depth) + if dmin == 0: + dmin = 1 + dmax = max(plot_depth) + self.depth_limits = (dmin, dmax) + + self.axm.set_ylim(ymin=max(self.depth_limits), + ymax=min(self.depth_limits)) + if self.depth_scale == 'log': + self.axm.set_yscale('log') + self.axm.set_ylabel('Depth ({0})'.format(self.depth_units), + fontdict={'size':self.font_size,'weight':'bold'}) + self.axm.set_xlabel('Resistivity ($\Omega \cdot m$)', + fontdict={'size':self.font_size,'weight':'bold'}) + self.axm.grid(True, which='both', alpha=.75, color=(.75, .75, .75)) + self.axm.yaxis.set_label_position('right') + self.axm.yaxis.tick_right() + self.mpl_widget.draw() + +#============================================================================== +# plot L2 +#============================================================================== +class PlotL2(QtGui.QWidget): + """ + plot the l2 curve and it will be pickable for each iteration + """ + + def __init__(self, dir_path=None, model_fn=None): + super(PlotL2, self).__init__() + self.dir_path = dir_path + self.model_fn = model_fn + + self.fig_num = 1 + self.fig_size = [6, 6] + self.fig_dpi = 300 + self.font_size = 8 + + self.subplot_right = .98 + self.subplot_left = .085 + self.subplot_top = .91 + self.subplot_bottom = .1 + + self.rms_lw = 1 + self.rms_marker = 'd' + self.rms_color = 'k' + self.rms_marker_size = 5 + self.rms_median_color = 'red' + self.rms_mean_color = 'orange' + + self.rough_lw = .75 + self.rough_marker = 'o' + self.rough_color = 'b' + self.rough_marker_size = 7 + self.rough_font_size = 6 + + self.setup_ui() + + if self.dir_path is not None: + self.plot_l2() + + def setup_ui(self): + + self.figure = Figure(dpi=200) + self.l2_widget = FigureCanvas(self.figure) + + self.figure.subplots_adjust(left=self.subplot_left, + right=self.subplot_right, + bottom=self.subplot_bottom, + top=self.subplot_top) + + #make sure the figure takes up the entire plottable space + self.l2_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + + # this is the Navigation widget + # it takes the Canvas widget and a parent + self.mpl_toolbar = NavigationToolbar(self.l2_widget, self) + # set the layout for the plot + mpl_vbox = QtGui.QVBoxLayout() + mpl_vbox.addWidget(self.mpl_toolbar) + mpl_vbox.addWidget(self.l2_widget) + + self.setLayout(mpl_vbox) + + self.l2_widget.updateGeometry() + + def _get_iter_list(self): + """ + get all iteration files in dir_path + """ + + if os.path.isdir(self.dir_path) == False: + raise IOError('Could not find {0}'.format(self.dir_path)) + + iter_list = [os.path.join(self.dir_path, fn) + for fn in os.listdir(self.dir_path) + if fn.find('.iter')>0] + + self.rms_arr = np.zeros(len(iter_list), + dtype=np.dtype([('iteration', np.int), + ('rms', np.float), + ('roughness', np.float)])) + for ii, fn in enumerate(iter_list): + m1 = occam1d.Model() + m1.read_iter_file(fn, self.model_fn) + self.rms_arr[ii]['iteration'] = int(m1.itdict['Iteration']) + self.rms_arr[ii]['rms'] = float(m1.itdict['Misfit Value']) + self.rms_arr[ii]['roughness'] = float(m1.itdict['Roughness Value']) + + self.rms_arr.sort(order='iteration') + + def plot_l2(self, dir_path=None, model_fn=None): + """ + plot l2 curve rms vs iteration + """ + + if dir_path is not None: + self.dir_path = dir_path + + if model_fn is not None: + self.model_fn = model_fn + + self._get_iter_list() + + nr = self.rms_arr.shape[0] + med_rms = np.median(self.rms_arr['rms']) + mean_rms = np.mean(self.rms_arr['rms']) + + #set the dimesions of the figure + plt.rcParams['font.size'] = self.font_size + plt.rcParams['figure.subplot.left'] = self.subplot_left + plt.rcParams['figure.subplot.right'] = self.subplot_right + plt.rcParams['figure.subplot.bottom'] = self.subplot_bottom + plt.rcParams['figure.subplot.top'] = self.subplot_top + + #make figure instance + + #make a subplot for RMS vs Iteration + self.ax1 = self.figure.add_subplot(1, 1, 1) + + #plot the rms vs iteration + l1, = self.ax1.plot(self.rms_arr['iteration'], + self.rms_arr['rms'], + '-k', + lw=1, + marker='d', + ms=5) + + #plot the median of the RMS + m1, = self.ax1.plot(self.rms_arr['iteration'], + np.repeat(med_rms, nr), + ls='--', + color=self.rms_median_color, + lw=self.rms_lw*.75) + + #plot the mean of the RMS + m2, = self.ax1.plot(self.rms_arr['iteration'], + np.repeat(mean_rms, nr), + ls='--', + color=self.rms_mean_color, + lw=self.rms_lw*.75) + + #make subplot for RMS vs Roughness Plot + self.ax2 = self.ax1.twiny() + + self.ax2.set_xlim(self.rms_arr['roughness'][1:].min(), + self.rms_arr['roughness'][1:].max()) + + self.ax1.set_ylim(0, self.rms_arr['rms'][1]) + + #plot the rms vs roughness + l2, = self.ax2.plot(self.rms_arr['roughness'], + self.rms_arr['rms'], + ls='--', + color=self.rough_color, + lw=self.rough_lw, + marker=self.rough_marker, + ms=self.rough_marker_size, + mfc='white') + + #plot the iteration number inside the roughness marker + for rms, ii, rough in zip(self.rms_arr['rms'], self.rms_arr['iteration'], + self.rms_arr['roughness']): + #need this because if the roughness is larger than this number + #matplotlib puts the text out of bounds and a draw_text_image + #error is raised and file cannot be saved, also the other + #numbers are not put in. + if rough > 1e8: + pass + else: + self.ax2.text(rough, + rms, + '{0}'.format(ii), + horizontalalignment='center', + verticalalignment='center', + fontdict={'size':self.rough_font_size, + 'weight':'bold', + 'color':self.rough_color}) + + #make a legend + self.ax1.legend([l1, l2, m1, m2], + ['RMS', 'Roughness', + 'Median_RMS={0:.2f}'.format(med_rms), + 'Mean_RMS={0:.2f}'.format(mean_rms)], + ncol=1, + loc='upper right', + columnspacing=.25, + markerscale=.75, + handletextpad=.15) + + #set the axis properties for RMS vs iteration + self.ax1.yaxis.set_minor_locator(MultipleLocator(.1)) + self.ax1.xaxis.set_minor_locator(MultipleLocator(1)) + self.ax1.set_ylabel('RMS', + fontdict={'size':self.font_size+2, + 'weight':'bold'}) + self.ax1.set_xlabel('Iteration', + fontdict={'size':self.font_size+2, + 'weight':'bold'}) + self.ax1.grid(alpha=.25, which='both', lw=self.rough_lw) + self.ax2.set_xlabel('Roughness', + fontdict={'size':self.font_size+2, + 'weight':'bold', + 'color':self.rough_color}) + + + for t2 in self.ax2.get_xticklabels(): + t2.set_color(self.rough_color) + + self.l2_widget.draw() + #============================================================================== # Main execution #============================================================================== diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index f933aa9b..70310e8b 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -292,7 +292,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, if phase_err == 'data': perr = phi_err[ii, 0, 1] else: - perr = phase_err/100*(180/np.pi) + perr = phase_err/100.*(180/np.pi) if rho[ii, 0, 1] != 0.0: dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', '{0:{1}}'.format(rho[ii, 0, 1], self._string_fmt), From 9bba23619eb59d91665cd5acf7d7babd8387d413 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 30 Nov 2015 18:09:35 -0800 Subject: [PATCH 014/124] creating an occam 1D gui --- mtpy/gui/occam1d_gui.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 33d6c347..4ec4ba1b 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -112,6 +112,7 @@ def __init__(self): self.mpl_widget = OccamPlot() self.l2_widget = PlotL2() + self.l2_widget.l2_widget.mpl_connect('pick event', self.on_click) self.res_err = 10. self.phase_err = 5. @@ -442,6 +443,22 @@ def run_occam(self): self.l2_widget.plot_l2(dir_path=self.save_dir, model_fn=self.occam_model.model_fn) + + def on_click(self, event): + print event.ind + ini_resp_fn = os.path.join(self.save_dir, + '{0}_{1}.resp'.format(self.data_mode, + event.ind)) + ini_model_fn = os.path.join(self.save_dir, + '{0}_{1}.iter'.format(self.data_mode, + event.ind)) + + ini_resp_fn = os.path.abspath(ini_resp_fn) + ini_model_fn = os.path.abspath(ini_model_fn) + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn, + resp_fn=ini_resp_fn, + iter_fn=ini_model_fn, + model_fn=self.occam_model.model_fn) @QtCore.pyqtSlot(str) def normal_output(self, message): @@ -786,6 +803,8 @@ def __init__(self, dir_path=None, model_fn=None): self.rough_marker_size = 7 self.rough_font_size = 6 + self.int = 1 + self.setup_ui() if self.dir_path is not None: From d8d2cb143ae43a3b754a98ce1de2c19ff3b7fc2b Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 1 Dec 2015 08:07:11 -0800 Subject: [PATCH 015/124] creating an occam 1D gui --- mtpy/gui/occam1d_gui.py | 145 +++++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 68 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 4ec4ba1b..347bbde5 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -112,7 +112,7 @@ def __init__(self): self.mpl_widget = OccamPlot() self.l2_widget = PlotL2() - self.l2_widget.l2_widget.mpl_connect('pick event', self.on_click) + self.l2_widget.l2_widget.mpl_connect('pick event', self.l2_widget.on_click) self.res_err = 10. self.phase_err = 5. @@ -445,13 +445,14 @@ def run_occam(self): model_fn=self.occam_model.model_fn) def on_click(self, event): - print event.ind + data_point = event.artist + iteration = data_point.get_xdata()[event.ind] ini_resp_fn = os.path.join(self.save_dir, '{0}_{1}.resp'.format(self.data_mode, - event.ind)) + iteration)) ini_model_fn = os.path.join(self.save_dir, '{0}_{1}.iter'.format(self.data_mode, - event.ind)) + iteration)) ini_resp_fn = os.path.abspath(ini_resp_fn) ini_model_fn = os.path.abspath(ini_model_fn) @@ -815,6 +816,8 @@ def setup_ui(self): self.figure = Figure(dpi=200) self.l2_widget = FigureCanvas(self.figure) + #self.l2_widget.mpl_connect('pick event', self.on_click) + self.figure.subplots_adjust(left=self.subplot_left, right=self.subplot_right, bottom=self.subplot_bottom, @@ -896,69 +899,70 @@ def plot_l2(self, dir_path=None, model_fn=None): '-k', lw=1, marker='d', - ms=5) - - #plot the median of the RMS - m1, = self.ax1.plot(self.rms_arr['iteration'], - np.repeat(med_rms, nr), - ls='--', - color=self.rms_median_color, - lw=self.rms_lw*.75) - - #plot the mean of the RMS - m2, = self.ax1.plot(self.rms_arr['iteration'], - np.repeat(mean_rms, nr), - ls='--', - color=self.rms_mean_color, - lw=self.rms_lw*.75) - - #make subplot for RMS vs Roughness Plot - self.ax2 = self.ax1.twiny() - - self.ax2.set_xlim(self.rms_arr['roughness'][1:].min(), - self.rms_arr['roughness'][1:].max()) + ms=5, + picker=3) + +# #plot the median of the RMS +# m1, = self.ax1.plot(self.rms_arr['iteration'], +# np.repeat(med_rms, nr), +# ls='--', +# color=self.rms_median_color, +# lw=self.rms_lw*.75) +# +# #plot the mean of the RMS +# m2, = self.ax1.plot(self.rms_arr['iteration'], +# np.repeat(mean_rms, nr), +# ls='--', +# color=self.rms_mean_color, +# lw=self.rms_lw*.75) +# +# #make subplot for RMS vs Roughness Plot +# self.ax2 = self.ax1.twiny() +# +# self.ax2.set_xlim(self.rms_arr['roughness'][1:].min(), +# self.rms_arr['roughness'][1:].max()) self.ax1.set_ylim(0, self.rms_arr['rms'][1]) - #plot the rms vs roughness - l2, = self.ax2.plot(self.rms_arr['roughness'], - self.rms_arr['rms'], - ls='--', - color=self.rough_color, - lw=self.rough_lw, - marker=self.rough_marker, - ms=self.rough_marker_size, - mfc='white') +# #plot the rms vs roughness +# l2, = self.ax2.plot(self.rms_arr['roughness'], +# self.rms_arr['rms'], +# ls='--', +# color=self.rough_color, +# lw=self.rough_lw, +# marker=self.rough_marker, +# ms=self.rough_marker_size, +# mfc='white') #plot the iteration number inside the roughness marker - for rms, ii, rough in zip(self.rms_arr['rms'], self.rms_arr['iteration'], - self.rms_arr['roughness']): - #need this because if the roughness is larger than this number - #matplotlib puts the text out of bounds and a draw_text_image - #error is raised and file cannot be saved, also the other - #numbers are not put in. - if rough > 1e8: - pass - else: - self.ax2.text(rough, - rms, - '{0}'.format(ii), - horizontalalignment='center', - verticalalignment='center', - fontdict={'size':self.rough_font_size, - 'weight':'bold', - 'color':self.rough_color}) - - #make a legend - self.ax1.legend([l1, l2, m1, m2], - ['RMS', 'Roughness', - 'Median_RMS={0:.2f}'.format(med_rms), - 'Mean_RMS={0:.2f}'.format(mean_rms)], - ncol=1, - loc='upper right', - columnspacing=.25, - markerscale=.75, - handletextpad=.15) +# for rms, ii, rough in zip(self.rms_arr['rms'], self.rms_arr['iteration'], +# self.rms_arr['roughness']): +# #need this because if the roughness is larger than this number +# #matplotlib puts the text out of bounds and a draw_text_image +# #error is raised and file cannot be saved, also the other +# #numbers are not put in. +# if rough > 1e8: +# pass +# else: +# self.ax2.text(rough, +# rms, +# '{0}'.format(ii), +# horizontalalignment='center', +# verticalalignment='center', +# fontdict={'size':self.rough_font_size, +# 'weight':'bold', +# 'color':self.rough_color}) +# +# #make a legend +# self.ax1.legend([l1, l2, m1, m2], +# ['RMS', 'Roughness', +# 'Median_RMS={0:.2f}'.format(med_rms), +# 'Mean_RMS={0:.2f}'.format(mean_rms)], +# ncol=1, +# loc='upper right', +# columnspacing=.25, +# markerscale=.75, +# handletextpad=.15) #set the axis properties for RMS vs iteration self.ax1.yaxis.set_minor_locator(MultipleLocator(.1)) @@ -970,18 +974,23 @@ def plot_l2(self, dir_path=None, model_fn=None): fontdict={'size':self.font_size+2, 'weight':'bold'}) self.ax1.grid(alpha=.25, which='both', lw=self.rough_lw) - self.ax2.set_xlabel('Roughness', - fontdict={'size':self.font_size+2, - 'weight':'bold', - 'color':self.rough_color}) +# self.ax2.set_xlabel('Roughness', +# fontdict={'size':self.font_size+2, +# 'weight':'bold', +# 'color':self.rough_color}) - for t2 in self.ax2.get_xticklabels(): - t2.set_color(self.rough_color) +# for t2 in self.ax2.get_xticklabels(): +# t2.set_color(self.rough_color) self.l2_widget.draw() + def on_click(self, event): + data_point = event.artist + iteration = data_point.get_xdata()[event.ind] + print iteration + #============================================================================== # Main execution #============================================================================== From 553c055aced9a33ef4d8bc10a2627a9d3c4e2a6a Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 1 Dec 2015 14:53:48 -0800 Subject: [PATCH 016/124] have a working gui for occam1d --- mtpy/gui/occam1d_gui.py | 323 +++++++++++++++++++++++++--------------- 1 file changed, 199 insertions(+), 124 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 347bbde5..cc8c23ba 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -16,7 +16,6 @@ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure from matplotlib.ticker import MultipleLocator -import mtpy.imaging.mtplottools as mtplottools import matplotlib.gridspec as gridspec import numpy as np import matplotlib.pyplot as plt @@ -108,16 +107,21 @@ def __init__(self): self.occam_data = occam1d.Data() self.occam_model = occam1d.Model() self.occam_startup = occam1d.Startup() - self.occam_exec = None + self.occam_exec = '' self.mpl_widget = OccamPlot() self.l2_widget = PlotL2() - self.l2_widget.l2_widget.mpl_connect('pick event', self.l2_widget.on_click) + self.l2_widget.l2_widget.mpl_connect('pick event', self.on_click) + self.l2_widget.l2_widget.setFocusPolicy(QtCore.Qt.ClickFocus) + self.l2_widget.l2_widget.setFocus() self.res_err = 10. self.phase_err = 5. self.data_mode = 'TE' - self.edi_fn = None + self.edi_fn = '' + + self.save_dir = None + self.station_dir = None self.setup_ui() @@ -178,6 +182,7 @@ def setup_ui(self): self.data_mode_combo.addItem('TE') self.data_mode_combo.addItem('TM') self.data_mode_combo.addItem('Det') + #self.data_mode_combo.addItem('Both') self.data_mode_combo.activated[str].connect(self.set_data_mode) # vertical layer parameters @@ -233,6 +238,14 @@ def setup_ui(self): self.start_lagrange_edit.setText('{0:.2f}'.format(self.occam_startup.start_lagrange)) self.start_lagrange_edit.editingFinished.connect(self.set_start_lagrange) + self.iter_combo_label = QtGui.QLabel('Iteration') + self.iter_combo_edit = QtGui.QComboBox() + self.iter_combo_edit.addItem('1') + self.iter_combo_edit.activated[str].connect(self.set_iteration) + self.iter_combo_edit.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents) + self.iter_combo_edit.setMinimumWidth(50) + + self.output_box = QtGui.QTextEdit() #---set the layout--------------- path_layout = QtGui.QHBoxLayout() path_layout.addWidget(self.get_occam_path_button) @@ -297,15 +310,18 @@ def setup_ui(self): edit_layout.addLayout(data_grid) edit_layout.addLayout(model_grid) edit_layout.addLayout(startup_grid) - edit_layout.addWidget(self.l2_widget) + edit_layout.addWidget(self.output_box) edit_layout.addLayout(path_layout) edit_layout.addWidget(run_button) - self.output_box = QtGui.QTextEdit() + bottom_plot_layout = QtGui.QHBoxLayout() + bottom_plot_layout.addWidget(self.iter_combo_label) + bottom_plot_layout.addWidget(self.iter_combo_edit) + bottom_plot_layout.addWidget(self.l2_widget) - plot_layout = QtGui.QVBoxLayout() - plot_layout.addWidget(self.mpl_widget) - plot_layout.addWidget(self.output_box) + plot_layout = QtGui.QGridLayout() + plot_layout.addWidget(self.mpl_widget, 0, 0, 1, 1) + plot_layout.addLayout(bottom_plot_layout, 2, 0, 2, 1) # window_layout = QtGui.QHBoxLayout() # window_layout.addLayout(edit_layout) @@ -335,20 +351,29 @@ def get_edi_file(self): """ get edi file to invert """ - - edi_dialog = QtGui.QFileDialog() - fn = str(edi_dialog.getOpenFileName(caption='Pick .edi file', - filter='*.edi')) + if self.edi_fn is not '': + edi_path = os.path.dirname(self.edi_fn) + edi_dialog = QtGui.QFileDialog() + fn = str(edi_dialog.getOpenFileName(caption='Pick .edi file', + filter='*.edi', + directory=edi_path)) + else: + edi_dialog = QtGui.QFileDialog() + fn = str(edi_dialog.getOpenFileName(caption='Pick .edi file', + filter='*.edi')) self.edi_fn = fn self.get_edi_edit.setText(self.edi_fn) - self.save_dir = os.path.join(os.path.dirname(self.edi_fn), - self.data_mode) + station = os.path.basename(self.edi_fn)[:-4] + self.station_dir = os.path.join(os.path.dirname(self.edi_fn), + station) + if not os.path.isdir(self.station_dir): + os.mkdir(self.station_dir) + print 'Made director {0}'.format(self.station_dir) - if not os.path.isdir(self.save_dir): - os.mkdir(self.save_dir) - print 'Made directory {0}'.format(self.save_dir) + self.save_dir = os.path.join(self.station_dir) + # make an initial data file self.occam_data.write_data_file(edi_file=self.edi_fn, save_path=self.save_dir, mode=self.data_mode, @@ -360,12 +385,14 @@ def get_edi_file(self): def set_res_err(self): self.res_err = float(str(self.data_res_err_edit.text())) + self.data_res_err_edit.setText('{0:.2f}'.format(self.res_err)) def set_phase_err(self): self.phase_err = float(str(self.data_phase_err_edit.text())) + self.data_phase_err_edit.setText('{0:.2f}'.format(self.phase_err)) def set_data_mode(self, text): - self.data_mode = text + self.data_mode = str(text) def set_n_layers(self): self.occam_model.n_layers = int(str(self.n_layers_edit.text())) @@ -403,11 +430,35 @@ def set_start_lagrange(self): self.occam_startup.start_lagrange = float(str(self.start_lagrange_edit.text())) self.start_lagrange_edit.setText('{0:.2f}'.format(self.occam_startup.start_lagrange)) + def _get_inv_folder(self): + """ + create an inversion folder for each run + """ + dir_path = os.path.join(self.station_dir, self.data_mode) + if not os.path.isdir(dir_path): + os.mkdir(dir_path) + print 'Made directory {0}'.format(dir_path) + + dir_list = [] + for roots, dirs, files in os.walk(dir_path): + dir_list.append(dirs) + + inv_num = len(dir_list[0])+1 + + self.save_dir = os.path.join(self.station_dir, self.data_mode, + 'Inv_{0:02}'.format(inv_num)) + def run_occam(self): """ write all the needed files and run occam then plot """ + self._get_inv_folder() + + if not os.path.isdir(self.save_dir): + os.mkdir(self.save_dir) + print 'Made directory {0}'.format(self.save_dir) + # write data file self.occam_data.write_data_file(edi_file=self.edi_fn, save_path=self.save_dir, @@ -423,7 +474,14 @@ def run_occam(self): self.occam_startup.data_fn = self.occam_data.data_fn self.occam_startup.model_fn = self.occam_model.model_fn self.occam_startup.write_startup_file(save_path=self.save_dir) - + + warning_txt = '\n'.join(['Cannot find Occam1D executable. ', + 'Looked for {0}'.format(self.occam_exec), + 'Click Occam1D button and rerun.']) + if not os.path.isfile(self.occam_exec): + QtGui.QMessageBox.warning(self, "Warning", warning_txt) + return + # run occam occam_run = occam1d.Run(startup_fn=self.occam_startup.startup_fn, occam_path=self.occam_exec, @@ -441,12 +499,48 @@ def run_occam(self): iter_fn=ini_model_fn, model_fn=self.occam_model.model_fn) + self.l2_widget.plot_l2(dir_path=self.save_dir, model_fn=self.occam_model.model_fn) + # add iteration values to combo box + for ii in range(self.iter_combo_edit.count()): + self.iter_combo_edit.removeItem(0) + for ii in range(1, self.l2_widget.rms_arr.shape[0]): + self.iter_combo_edit.addItem(str(ii)) + + # resize the combo box to have width of max iteration + + self.iter_combo_edit.resize(self.iter_combo_edit.size()) + self.iter_combo_edit.update() + self.iter_combo_edit.repaint() + + def on_click(self, event): data_point = event.artist iteration = data_point.get_xdata()[event.ind] + print 'Picked iteration {0}'.format(iteration) + ini_resp_fn = os.path.join(self.save_dir, + '{0}_{1}.resp'.format(self.data_mode, + iteration)) + ini_model_fn = os.path.join(self.save_dir, + '{0}_{1}.iter'.format(self.data_mode, + iteration)) + + ini_resp_fn = os.path.abspath(ini_resp_fn) + ini_model_fn = os.path.abspath(ini_model_fn) + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn, + resp_fn=ini_resp_fn, + iter_fn=ini_model_fn, + model_fn=self.occam_model.model_fn) + + def set_iteration(self, text): + iteration = text + rms = self.l2_widget.rms_arr['rms'][int(iteration)-1] + roughness = self.l2_widget.rms_arr['roughness'][int(iteration)-1] + print 'Iteration {0}, RMS={1:.2f}, Roughnes={2:.2f}'.format( + iteration, rms, roughness) + ini_resp_fn = os.path.join(self.save_dir, '{0}_{1}.resp'.format(self.data_mode, iteration)) @@ -478,7 +572,7 @@ def __init__(self): super(OccamPlot, self).__init__() self.subplot_wspace = .15 - self.subplot_hspace = .15 + self.subplot_hspace = .2 self.subplot_right = .90 self.subplot_left = .085 self.subplot_top = .93 @@ -495,18 +589,18 @@ def __init__(self): self.depth_units = 'km' self.depth_limits = None - self.marker_data = 'o' + self.marker_data = 's' self.marker_data_color = 'k' - self.marker_resp = 's' + self.marker_resp = 'h' self.marker_resp_color = 'b' - self.marker_size = 3 + self.marker_size = 2 self.lw = .75 self.ls = ':' self.e_capthick = .75 self.e_capsize = 3 - self.font_size = 10 + self.font_size = 8 self.setup_ui() @@ -635,9 +729,8 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, #--> TE mode data if len(pyx) > 0: self.axp.errorbar(1./d1.freq[pyx], - d1.phase_te[0][pyx], - ls=self.ls, - yerr=d1.phase_te[1][pyx], + d1.phase_tm[0][pyx], + yerr=d1.phase_tm[1][pyx], **d_kwargs) else: pass @@ -655,7 +748,7 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, if len(rxy) > 0: rte = self.axr.errorbar(1./r1.freq[rxy], r1.res_te[2][rxy], - yerr=r1.res_te[3][rxy], + yerr=None, **r_kwargs) #legend_marker_list_te.append(rte[0]) #legend_label_list_te.append('$Obs_{TE}$') @@ -669,7 +762,7 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, if len(ryx) > 0: rtm = self.axr.errorbar(1./r1.freq[ryx], r1.res_tm[2][ryx], - yerr=r1.res_tm[3][ryx], + yerr=None, **r_kwargs) #legend_marker_list_te.append(rte[0]) #legend_label_list_te.append('$Obs_{TE}$') @@ -683,7 +776,7 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, if len(pxy) > 0: self.axp.errorbar(1./r1.freq[pxy], r1.phase_te[2][pxy], - yerr=r1.phase_te[3][pxy], + yerr=None, **r_kwargs) else: pass @@ -694,9 +787,8 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, #--> TE mode data if len(pyx) > 0: self.axp.errorbar(1./r1.freq[pyx], - r1.phase_te[2][pyx], - ls=self.ls, - yerr=r1.phase_te[3][pyx], + r1.phase_tm[2][pyx], + yerr=None, **r_kwargs) else: pass @@ -727,7 +819,9 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, self.axp.set_xlabel('Period (s)', fontdict={'size':self.font_size,'weight':'bold'}) #plt.suptitle(self.title_str,fontsize=self.font_size+2,fontweight='bold') - + for ax in [self.axr, self.axp, self.axm]: + ax.tick_params(axis='both', which='major', + labelsize=self.font_size-2) #--> plot depth model-------------------------------------------------- if model_fn is not None: @@ -747,15 +841,16 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, color='b', lw=self.lw) - if self.depth_limits == None: - dmin = min(plot_depth) - if dmin == 0: - dmin = 1 - dmax = max(plot_depth) - self.depth_limits = (dmin, dmax) - - self.axm.set_ylim(ymin=max(self.depth_limits), - ymax=min(self.depth_limits)) + #if self.depth_limits == None: + dmin = min(plot_depth) + if dmin == 0: + dmin = 1 + dmax = max(plot_depth) + self.depth_limits = (dmin, dmax) + + self.axm.set_ylim(ymin=max(self.depth_limits), + ymax=min(self.depth_limits)) + if self.depth_scale == 'log': self.axm.set_yscale('log') self.axm.set_ylabel('Depth ({0})'.format(self.depth_units), @@ -780,16 +875,14 @@ def __init__(self, dir_path=None, model_fn=None): super(PlotL2, self).__init__() self.dir_path = dir_path self.model_fn = model_fn - - self.fig_num = 1 - self.fig_size = [6, 6] - self.fig_dpi = 300 + + self.fig_dpi = 200 self.font_size = 8 - self.subplot_right = .98 + self.subplot_right = .90 self.subplot_left = .085 - self.subplot_top = .91 - self.subplot_bottom = .1 + self.subplot_top = .86 + self.subplot_bottom = .15 self.rms_lw = 1 self.rms_marker = 'd' @@ -799,10 +892,10 @@ def __init__(self, dir_path=None, model_fn=None): self.rms_mean_color = 'orange' self.rough_lw = .75 - self.rough_marker = 'o' + self.rough_marker = 's' self.rough_color = 'b' - self.rough_marker_size = 7 - self.rough_font_size = 6 + self.rough_marker_size = 3 + self.rough_font_size = 8 self.int = 1 @@ -868,6 +961,7 @@ def plot_l2(self, dir_path=None, model_fn=None): """ plot l2 curve rms vs iteration """ + self.figure.clf() if dir_path is not None: self.dir_path = dir_path @@ -878,8 +972,8 @@ def plot_l2(self, dir_path=None, model_fn=None): self._get_iter_list() nr = self.rms_arr.shape[0] - med_rms = np.median(self.rms_arr['rms']) - mean_rms = np.mean(self.rms_arr['rms']) + med_rms = np.median(self.rms_arr['rms'][1:]) + mean_rms = np.mean(self.rms_arr['rms'][1:]) #set the dimesions of the figure plt.rcParams['font.size'] = self.font_size @@ -902,70 +996,46 @@ def plot_l2(self, dir_path=None, model_fn=None): ms=5, picker=3) -# #plot the median of the RMS -# m1, = self.ax1.plot(self.rms_arr['iteration'], -# np.repeat(med_rms, nr), -# ls='--', -# color=self.rms_median_color, -# lw=self.rms_lw*.75) -# -# #plot the mean of the RMS -# m2, = self.ax1.plot(self.rms_arr['iteration'], -# np.repeat(mean_rms, nr), -# ls='--', -# color=self.rms_mean_color, -# lw=self.rms_lw*.75) -# -# #make subplot for RMS vs Roughness Plot -# self.ax2 = self.ax1.twiny() -# -# self.ax2.set_xlim(self.rms_arr['roughness'][1:].min(), -# self.rms_arr['roughness'][1:].max()) - - self.ax1.set_ylim(0, self.rms_arr['rms'][1]) - -# #plot the rms vs roughness -# l2, = self.ax2.plot(self.rms_arr['roughness'], -# self.rms_arr['rms'], -# ls='--', -# color=self.rough_color, -# lw=self.rough_lw, -# marker=self.rough_marker, -# ms=self.rough_marker_size, -# mfc='white') - - #plot the iteration number inside the roughness marker -# for rms, ii, rough in zip(self.rms_arr['rms'], self.rms_arr['iteration'], -# self.rms_arr['roughness']): -# #need this because if the roughness is larger than this number -# #matplotlib puts the text out of bounds and a draw_text_image -# #error is raised and file cannot be saved, also the other -# #numbers are not put in. -# if rough > 1e8: -# pass -# else: -# self.ax2.text(rough, -# rms, -# '{0}'.format(ii), -# horizontalalignment='center', -# verticalalignment='center', -# fontdict={'size':self.rough_font_size, -# 'weight':'bold', -# 'color':self.rough_color}) -# -# #make a legend -# self.ax1.legend([l1, l2, m1, m2], -# ['RMS', 'Roughness', -# 'Median_RMS={0:.2f}'.format(med_rms), -# 'Mean_RMS={0:.2f}'.format(mean_rms)], -# ncol=1, -# loc='upper right', -# columnspacing=.25, -# markerscale=.75, -# handletextpad=.15) + #plot the median of the RMS + m1, = self.ax1.plot(self.rms_arr['iteration'], + np.repeat(med_rms, nr), + ls='--', + color=self.rms_median_color, + lw=self.rms_lw*.75) + + #plot the mean of the RMS + m2, = self.ax1.plot(self.rms_arr['iteration'], + np.repeat(mean_rms, nr), + ls='--', + color=self.rms_mean_color, + lw=self.rms_lw*.75) + + self.ax2 = self.ax1.twinx() + l2, = self.ax2.plot(self.rms_arr['iteration'], + self.rms_arr['roughness'], + ls='-', + color=self.rough_color, + lw=self.rough_lw, + marker=self.rough_marker, + ms=self.rough_marker_size, + mfc=self.rough_color) + + + #make a legend + self.figure.legend([l1, l2, m1, m2], + ['RMS', 'Roughness', + 'Median_RMS={0:.2f}'.format(med_rms), + 'Mean_RMS={0:.2f}'.format(mean_rms)], + ncol=4, + loc='upper center', + columnspacing=.25, + markerscale=.75, + handletextpad=.15, + borderaxespad=.02, + prop={'size':self.font_size}) #set the axis properties for RMS vs iteration - self.ax1.yaxis.set_minor_locator(MultipleLocator(.1)) +# self.ax1.yaxis.set_minor_locator(MultipleLocator(.1)) self.ax1.xaxis.set_minor_locator(MultipleLocator(1)) self.ax1.set_ylabel('RMS', fontdict={'size':self.font_size+2, @@ -974,15 +1044,20 @@ def plot_l2(self, dir_path=None, model_fn=None): fontdict={'size':self.font_size+2, 'weight':'bold'}) self.ax1.grid(alpha=.25, which='both', lw=self.rough_lw) -# self.ax2.set_xlabel('Roughness', -# fontdict={'size':self.font_size+2, -# 'weight':'bold', -# 'color':self.rough_color}) + self.ax2.set_ylabel('Roughness', + fontdict={'size':self.font_size+2, + 'weight':'bold', + 'color':self.rough_color}) + + self.ax1.set_ylim(np.floor(self.rms_arr['rms'][1:].min()), + np.ceil(self.rms_arr['rms'][1:].max())) + self.ax2.set_ylim(np.floor(self.rms_arr['roughness'][1:].min()), + np.ceil(self.rms_arr['roughness'][1:].max())) -# for t2 in self.ax2.get_xticklabels(): -# t2.set_color(self.rough_color) + for t2 in self.ax2.get_yticklabels(): + t2.set_color(self.rough_color) self.l2_widget.draw() From 05f117a475ad6f1c468cfe475e30eb2d12690960 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 28 Mar 2016 15:13:43 -0700 Subject: [PATCH 017/124] added /gui/edi_editor.py for editing edi files --- mtpy/gui/edi_editor.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 mtpy/gui/edi_editor.py diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py new file mode 100644 index 00000000..6b572392 --- /dev/null +++ b/mtpy/gui/edi_editor.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Mar 28 15:04:27 2016 + +@author: jpeacock +""" + +from PyQt4 import QtCore, QtGui +import mtpy.modeling.modem_new as modem +from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar +from matplotlib.figure import Figure +import mtpy.imaging.mtplottools as mtplottools +import matplotlib.gridspec as gridspec +import numpy as np +import matplotlib.pyplot as plt +import os + + +class Edit_EDI_Window(object): + """ + This is the main window for editing an edi file. + + Includes: + * Editing points by removing them + * Adjusting for static shift + * Removing distortion + """ \ No newline at end of file From 41d9878baf68f1bf60dfe893a7d464b605f3b119 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 28 Mar 2016 16:23:21 -0700 Subject: [PATCH 018/124] added file menu bar option to edi_editor --- mtpy/gui/edi_editor.py | 111 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 6b572392..a6054ea9 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -5,6 +5,10 @@ @author: jpeacock """ +#============================================================================== +# Imports +#============================================================================== + from PyQt4 import QtCore, QtGui import mtpy.modeling.modem_new as modem from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas @@ -15,9 +19,25 @@ import numpy as np import matplotlib.pyplot as plt import os +import copy +import sys +#============================================================================== +# UI +#============================================================================== -class Edit_EDI_Window(object): +class MyStream(QtCore.QObject): + """ + this class will emit a signal to write standard output to the UI + """ + message = QtCore.pyqtSignal(str) + def __init__(self, parent=None): + super(MyStream, self).__init__(parent) + + def write(self, message): + self.message.emit(str(message)) + +class EDI_Editor_Window(QtGui.QMainWindow): """ This is the main window for editing an edi file. @@ -25,4 +45,91 @@ class Edit_EDI_Window(object): * Editing points by removing them * Adjusting for static shift * Removing distortion - """ \ No newline at end of file + * Rotations + * Strike estimations + """ + + def __init__(self): + super(EDI_Editor_Window, self).__init__() + + + def ui_setup(self): + """ + set up the user interface + """ + + self.setWindowTitle('EDI Editor') + self.resize(1920, 1080) + + self.plot_widget = PlotWidget() + self.centralWidget = self.setCentralWidget(self.plot_widget) + + self.menu_file = self.menuBar().addMenu(self.tr("&File")) + + self.action_open_file = self.menu_file.addAction(self.tr("&Open")) + self.action_open_file.triggered.connect(self.get_edi_file) + + #self.my_stream = MyStream() + #self.my_stream.message.connect(self.plot_widget.normal_output) + + #sys.stdout = self.my_stream + + #QtCore.QMetaObject.connectSlotsByName(self) + + def get_edi_file(self): + """ + get edi file + """ + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', + filter='*.edi')) + + return fn +#============================================================================== +# Plot Widget +#============================================================================== +class PlotWidget(QtGui.QWidget): + """ + matplotlib plot of the data + + """ + + def __init__(self): + super(PlotWidget, self).__init__() + + self.mt_obj = None + + def setup_ui(self): + self.figure = Figure(dpi=150) + self.mpl_widget = FigureCanvas(self.figure) + + self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, + QtGui.QSizePolicy.Expanding) + + self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) + + mpl_vbox = QtGui.QVBoxLayout() + mpl_vbox.addWidget(self.mpl_toolbar) + mpl_vbox.addWidget(self.mpl_widget) + + self.setLayout(mpl_vbox) + self.mpl_widget.updateGeometry() + + #@QtCore.pyqtSlot(str) + #def normal_output(self, message): + # self.output_box.moveCursor(QtGui.QTextCursor.End) + # self.output_box.insertPlainText(message) + + +#============================================================================== +# Def Main +#============================================================================== +def main(): + app = QtGui.QApplication(sys.argv) + ui = EDI_Editor_Window() + ui.ui_setup() + ui.show() + sys.exit(app.exec_()) + +if __name__ == '__main__': + main() \ No newline at end of file From d17a510239fcffebfb64f2ce96dd585c9964813e Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 28 Mar 2016 16:30:52 -0700 Subject: [PATCH 019/124] added file menu bar option to edi_editor --- mtpy/gui/edi_editor.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index a6054ea9..31b25e3c 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -69,6 +69,12 @@ def ui_setup(self): self.action_open_file = self.menu_file.addAction(self.tr("&Open")) self.action_open_file.triggered.connect(self.get_edi_file) + self.action_close_file = self.menu_file.addAction(self.tr("C&lose")) + self.action_close_file.triggered.connect(self.close_edi_file) + + self.action_save_file = self.menu_file.addAction(self.tr("&Save")) + self.action_save_file.triggered.connect(self.save_edi_file) + #self.my_stream = MyStream() #self.my_stream.message.connect(self.plot_widget.normal_output) @@ -84,7 +90,14 @@ def get_edi_file(self): fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', filter='*.edi')) - return fn + return fn + + def close_edi_file(self): + pass + + def save_edi_file(self): + pass + #============================================================================== # Plot Widget #============================================================================== From 3aca3ea39adb369a8b7a77ccdac815f6b0e1ee47 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 30 Mar 2016 16:16:25 -0700 Subject: [PATCH 020/124] added static shift to core.mt and changed distortion so it removes it from a copy of Z --- mtpy/core/mt.py | 43 +- mtpy/gui/edi_editor.py | 1112 ++++++++++++++++++++++++++++++- mtpy/gui/modem_mesh_builder.py | 6 +- mtpy/gui/modem_plot_response.py | 2 +- 4 files changed, 1144 insertions(+), 19 deletions(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index b359afd4..fa6a8259 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -512,11 +512,50 @@ def remove_distortion(self): >>> mt1.write_edi_file(new_fn=r"/home/mt/edi_files/mt01_dr.edi",\ new_Z=new_z) """ - - D, new_z_object = MTdistortion.remove_distortion(z_object=self.Z) + dummy_z_obj = MTz.copy.deepcopy(self.Z) + D, new_z_object = MTdistortion.remove_distortion(z_object=dummy_z_obj) return D, new_z_object + def remove_static_shift(self, ss_x=1.0, ss_y =1.0): + """ + Remove static shift from the apparent resistivity + + Assume the original observed tensor Z is built by a static shift S + and an unperturbated "correct" Z0 : + + * Z = S * Z0 + + therefore the correct Z will be : + * Z0 = S^(-1) * Z + + + **Arguments** + + *ss_x* : float + correction factor for x component + + *ss_y* : float + correction factor for y component + + **Returns** + + *new_z* : new z array + + .. note:: The factors are in resistivity scale, so the + entries of the matrix "S" need to be given by their + square-roots! + """ + + s_array, new_z = self.Z.no_ss(reduce_res_factor_x=ss_x, + reduce_res_factor_y=ss_y) + + new_z_obj = MTz.copy.deepcopy(self.Z) + new_z_obj.z = new_z + + return new_z_obj + + def interpolate(self, new_freq_array): """ interpolate the impedance tensor onto different frequencies. diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 31b25e3c..8de3041f 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -10,15 +10,15 @@ #============================================================================== from PyQt4 import QtCore, QtGui -import mtpy.modeling.modem_new as modem +import mtpy.core.mt as mt from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure +from matplotlib.ticker import MultipleLocator import mtpy.imaging.mtplottools as mtplottools +import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import numpy as np -import matplotlib.pyplot as plt -import os import copy import sys @@ -64,17 +64,26 @@ def ui_setup(self): self.plot_widget = PlotWidget() self.centralWidget = self.setCentralWidget(self.plot_widget) - self.menu_file = self.menuBar().addMenu(self.tr("&File")) + self.menu_file = self.menuBar().addMenu("&File") - self.action_open_file = self.menu_file.addAction(self.tr("&Open")) + self.action_open_file = self.menu_file.addAction("&Open") self.action_open_file.triggered.connect(self.get_edi_file) - self.action_close_file = self.menu_file.addAction(self.tr("C&lose")) + self.action_close_file = self.menu_file.addAction("C&lose") self.action_close_file.triggered.connect(self.close_edi_file) - self.action_save_file = self.menu_file.addAction(self.tr("&Save")) + self.action_save_file = self.menu_file.addAction("&Save") self.action_save_file.triggered.connect(self.save_edi_file) + self.menu_plot_properties = self.menuBar().addMenu("Plot Properties") + self.action_edit_plot = self.menu_plot_properties.addAction("Edit") + self.action_edit_plot.triggered.connect(self.edit_plot_properties) + + self.menu_metadata = self.menuBar().addMenu("Metadata") + self.action_edit_metadata = self.menu_metadata.addAction("Edit") + self.action_edit_metadata.triggered.connect(self.edit_metadata) + + #self.my_stream = MyStream() #self.my_stream.message.connect(self.plot_widget.normal_output) @@ -89,14 +98,29 @@ def get_edi_file(self): fn_dialog = QtGui.QFileDialog() fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', filter='*.edi')) - - return fn + + self.plot_widget.mt_obj = mt.MT(fn) + self.plot_widget._mt_obj = copy.deepcopy(self.plot_widget.mt_obj) + self.plot_widget.fill_metadata() + self.plot_widget.plot() def close_edi_file(self): pass def save_edi_file(self): pass + + def edit_plot_properties(self): + self.plot_widget.plot_properties.setup_ui() + self.plot_widget.plot_properties.show() + self.plot_widget.plot_properties.settings_updated.connect(self.update_plot) + + def update_plot(self): + + self.plot_widget.redraw_plot() + + def edit_metadata(self): + pass #============================================================================== # Plot Widget @@ -110,29 +134,1091 @@ class PlotWidget(QtGui.QWidget): def __init__(self): super(PlotWidget, self).__init__() - self.mt_obj = None + self.mt_obj = mt.MT() + self._mt_obj = mt.MT() + self.static_shift_x = 1.0 + self.static_shift_y = 1.0 + self.plot_properties = PlotSettings(None) + + self.setup_ui() + def setup_ui(self): + """ + set up the ui + """ self.figure = Figure(dpi=150) self.mpl_widget = FigureCanvas(self.figure) + self.mpl_widget.setFocusPolicy(QtCore.Qt.ClickFocus) + self.mpl_widget.setFocus() + # this will set the minimum width of the mpl plot, important to + # resize everything + self.mpl_widget.setMinimumWidth(1600) + + # be able to edit the data + self.mpl_widget.mpl_connect('pick_event', self.on_pick) + self.mpl_widget.mpl_connect('axes_enter_event', self.in_axes) self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) - + self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) + # output box for all notes from the program + self.output_box = QtGui.QTextEdit() + + # add side box to manipulate the data + header_font = QtGui.QFont() + header_font.setBold = True + header_font.setPointSize (16) + + ## --> SET METADATA + self.metadata_label = QtGui.QLabel('Metadata') + self.metadata_label.setFont(header_font) + + self.meta_station_name_label = QtGui.QLabel("Station") + self.meta_station_name_edit = QtGui.QLineEdit(str(self.mt_obj.station)) + self.meta_station_name_edit.editingFinished.connect(self.meta_edit_station) + + # sets up with an empty mt object so we can set values to 0 + # once a edi is read in then the metadata will be filled. + self.meta_lat_label = QtGui.QLabel("Lat (deg)") + self.meta_lat_edit = QtGui.QLineEdit('{0:.6f}'.format(0.0)) + self.meta_lat_edit.editingFinished.connect(self.meta_edit_lat) + + self.meta_lon_label = QtGui.QLabel("Long (deg)") + self.meta_lon_edit = QtGui.QLineEdit('{0:.6f}'.format(0.0)) + self.meta_lon_edit.editingFinished.connect(self.meta_edit_lon) + + self.meta_elev_label = QtGui.QLabel("Elev (m)") + self.meta_elev_edit = QtGui.QLineEdit('{0:.3f}'.format(0.0)) + self.meta_elev_edit.editingFinished.connect(self.meta_edit_elev) + + self.meta_date_label = QtGui.QLabel("Date Acq") + self.meta_date_edit = QtGui.QLineEdit("YYYY-MM-DD") + self.meta_date_edit.editingFinished.connect(self.meta_edit_date) + + self.meta_acq_label = QtGui.QLabel("Acquired By") + self.meta_acq_edit = QtGui.QLineEdit("None") + self.meta_acq_edit.editingFinished.connect(self.meta_edit_acq) + + ## Static Shift + self.static_shift_label = QtGui.QLabel("Static Shift") + self.static_shift_label.setFont(header_font) + + self.static_shift_x_label = QtGui.QLabel("X") + self.static_shift_x_edit = QtGui.QLineEdit("1.0") + self.static_shift_x_edit.editingFinished.connect(self.static_shift_set_x) + + self.static_shift_y_label = QtGui.QLabel("Y") + self.static_shift_y_edit = QtGui.QLineEdit("1.0") + self.static_shift_y_edit.editingFinished.connect(self.static_shift_set_y) + + self.static_shift_apply_button = QtGui.QPushButton() + self.static_shift_apply_button.setText("Apply") + self.static_shift_apply_button.pressed.connect(self.static_shift_apply) + + ## remove distortion + self.remove_distortion_button = QtGui.QPushButton() + self.remove_distortion_button.setText("Remove Distortion") + self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) + + + ###--> layout --------------------------------------------- + ## mpl plot --> right panel mpl_vbox = QtGui.QVBoxLayout() mpl_vbox.addWidget(self.mpl_toolbar) - mpl_vbox.addWidget(self.mpl_widget) + mpl_vbox.addWidget(self.mpl_widget) + + ##--> Left Panel + ## Metadata grid + meta_layout = QtGui.QGridLayout() + + meta_layout.addWidget(self.metadata_label, 0, 0) + meta_layout.addWidget(self.meta_station_name_label, 1, 0) + meta_layout.addWidget(self.meta_station_name_edit, 1, 1) + meta_layout.addWidget(self.meta_lat_label, 2, 0) + meta_layout.addWidget(self.meta_lat_edit, 2, 1) + meta_layout.addWidget(self.meta_lon_label, 3, 0) + meta_layout.addWidget(self.meta_lon_edit, 3, 1) + meta_layout.addWidget(self.meta_elev_label, 4, 0) + meta_layout.addWidget(self.meta_elev_edit, 4, 1) + meta_layout.addWidget(self.meta_date_label, 5, 0) + meta_layout.addWidget(self.meta_date_edit, 5, 1) + meta_layout.addWidget(self.meta_acq_label, 6, 0) + meta_layout.addWidget(self.meta_acq_edit, 6, 1) + + ## static shift + ss_layout = QtGui.QGridLayout() + ss_layout.addWidget(self.static_shift_label, 0, 0, 1, 2) + ss_layout.addWidget(self.static_shift_apply_button, 0, 2, 1, 2) + ss_layout.addWidget(self.static_shift_x_label, 1, 0) + ss_layout.addWidget(self.static_shift_x_edit, 1, 1) + ss_layout.addWidget(self.static_shift_y_label, 1, 2) + ss_layout.addWidget(self.static_shift_y_edit, 1, 3) - self.setLayout(mpl_vbox) + ## left panel + info_layout = QtGui.QVBoxLayout() + info_layout.addLayout(meta_layout) + info_layout.addLayout(ss_layout) + info_layout.addWidget(self.remove_distortion_button) + info_layout.addWidget(self.output_box) + + ## final layout + final_layout = QtGui.QHBoxLayout() + final_layout.addLayout(info_layout) + final_layout.addLayout(mpl_vbox ) + + + self.setLayout(final_layout) self.mpl_widget.updateGeometry() + def meta_edit_station(self): + self.mt_obj.station = str(self.meta_station_name_edit.text()) + + def meta_edit_lat(self): + self.mt_obj.lat = float(str(self.meta_lat_edit.text())) + self.meta_lat_edit.setText('{0:.6f}'.format(self.mt_obj.lat)) + + def meta_edit_lon(self): + self.mt_obj.lon = float(str(self.meta_lat_edit.text())) + self.meta_lon_edit.setText('{0:.6f}'.format(self.mt_obj.lat)) + + def meta_edit_elev(self): + self.mt_obj.elev = float(str(self.meta_elev_edit.text())) + self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) + + def meta_edit_date(self): + pass + + def meta_edit_acq(self): + pass + + def fill_metadata(self): + self.meta_station_name_edit.setText(self.mt_obj.station) + self.meta_lat_edit.setText('{0:.6f}'.format(self.mt_obj.lat)) + self.meta_lon_edit.setText('{0:.6f}'.format(self.mt_obj.lon)) + self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) + + def static_shift_set_x(self): + self.static_shift_x = float(str(self.static_shift_x_edit.text())) + self.static_shift_x_edit.setText('{0:.2f}'.format(self.static_shift_x)) + + def static_shift_set_y(self): + self.static_shift_y = float(str(self.static_shift_y_edit.text())) + self.static_shift_y_edit.setText('{0:.2f}'.format(self.static_shift_y)) + + def static_shift_apply(self): + """ + shift apparent resistivity up or down + """ + # be sure to apply the static shift to the original data + new_z_obj = self._mt_obj.remove_static_shift(ss_x=self.static_shift_x, + ss_y=self.static_shift_y) + + self.mt_obj.Z = new_z_obj + self.redraw_plot() + + def remove_distortion_apply(self): + """ + remove distortion from the mt repsonse + """ + #dummy_mt_obj = copy.deepcopy(self._mt_obj) + distortion, new_z_object = self._mt_obj.remove_distortion() + + self.mt_obj.Z = new_z_object + + print 'Distortion matrix = ' + print distortion + + self.redraw_plot() + + + def plot(self): + """ + plot the response + + will have original data below the editable data + """ + + self.figure.clf() + + self.figure.suptitle(self.mt_obj.station, + fontdict={'size':self.plot_properties.fs+4, + 'weight':'bold'}) + + # make some useful internal variabls + font_dict = {'size':self.plot_properties.fs+2, 'weight':'bold'} + plot_period = 1./self.mt_obj.Z.freq + + if np.all(self.mt_obj.Tipper.tipper == 0) is True: + print 'No Tipper data for station {0}'.format(self.mt_obj.station) + self.plot_tipper = False + else: + self.plot_tipper = True + + #set x-axis limits from short period to long period + self.plot_properties.xlimits = (10**(np.floor(np.log10(plot_period.min()))), + 10**(np.ceil(np.log10((plot_period.max()))))) + + #--> make key word dictionaries for plotting + kw_xx = {'color':self.plot_properties.cted, + 'marker':self.plot_properties.mted, + 'ms':self.plot_properties.ms, + 'ls':':', + 'lw':self.plot_properties.lw, + 'e_capsize':self.plot_properties.e_capsize, + 'e_capthick':self.plot_properties.e_capthick, + 'picker':3} + + kw_yy = {'color':self.plot_properties.ctmd, + 'marker':self.plot_properties.mtmd, + 'ms':self.plot_properties.ms, + 'ls':':', + 'lw':self.plot_properties.lw, + 'e_capsize':self.plot_properties.e_capsize, + 'e_capthick':self.plot_properties.e_capthick, + 'picker':3} + kw_xx_o = {'color':self.plot_properties.cteo, + 'marker':self.plot_properties.mted, + 'ms':self.plot_properties.ms, + 'ls':':', + 'lw':self.plot_properties.lw, + 'e_capsize':self.plot_properties.e_capsize, + 'e_capthick':self.plot_properties.e_capthick, + 'picker':3} + + kw_yy_o = {'color':self.plot_properties.ctmo, + 'marker':self.plot_properties.mtmd, + 'ms':self.plot_properties.ms, + 'ls':':', + 'lw':self.plot_properties.lw, + 'e_capsize':self.plot_properties.e_capsize, + 'e_capthick':self.plot_properties.e_capthick, + 'picker':3} + + # create a grid of subplots + if self.plot_tipper == True: + gs = gridspec.GridSpec(3, 2, height_ratios=[2, 1.5, 1]) + elif self.plot_tipper == False: + gs = gridspec.GridSpec(2, 2, height_ratios=[2, 1.5]) + + gs.update(hspace=self.plot_properties.subplot_hspace, + wspace=self.plot_properties.subplot_wspace, + left=self.plot_properties.subplot_left, + right=self.plot_properties.subplot_right, + top=self.plot_properties.subplot_top, + bottom=self.plot_properties.subplot_bottom) + + #find locations where points have been masked + nzxx = np.nonzero(self.mt_obj.Z.z[:, 0, 0])[0] + nzxy = np.nonzero(self.mt_obj.Z.z[:, 0, 1])[0] + nzyx = np.nonzero(self.mt_obj.Z.z[:, 1, 0])[0] + nzyy = np.nonzero(self.mt_obj.Z.z[:, 1, 1])[0] + + # make axis od = off-diagonal, d = diagonal, share x axis across plots + self.ax_res_od = self.figure.add_subplot(gs[0, 0]) + self.ax_res_d = self.figure.add_subplot(gs[0, 1], + sharex=self.ax_res_od) + + self.ax_phase_od = self.figure.add_subplot(gs[1, 0], + sharex=self.ax_res_od) + self.ax_phase_d = self.figure.add_subplot(gs[1, 1], + sharex=self.ax_res_od) + + # include tipper, r = real, i = imaginary; can't share axis properly + if self.plot_tipper == True: + self.ax_tip_r = self.figure.add_subplot(gs[2, 0]) + self.ax_tip_i = self.figure.add_subplot(gs[2, 1]) + + ## --> plot apparent resistivity, phase and tipper + ## plot orginal apparent resistivity + orxx = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzxx], + self._mt_obj.Z.resistivity[nzxx, 0, 0], + self._mt_obj.Z.resistivity_err[nzxx, 0, 0], + **kw_xx_o) + orxy = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzxy], + self._mt_obj.Z.resistivity[nzxy, 0, 1], + self._mt_obj.Z.resistivity_err[nzxy, 0, 1], + **kw_xx_o) + oryx = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzyx], + self._mt_obj.Z.resistivity[nzyx, 1, 0], + self._mt_obj.Z.resistivity_err[nzyx, 1, 0], + **kw_yy_o) + oryy = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzyy], + self._mt_obj.Z.resistivity[nzyy, 1, 1], + self._mt_obj.Z.resistivity_err[nzyy, 1, 1], + **kw_yy_o) + + # plot manipulated data apparent resistivity + erxx = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzxx], + self.mt_obj.Z.resistivity[nzxx, 0, 0], + self.mt_obj.Z.resistivity_err[nzxx, 0, 0], + **kw_xx) + erxy = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzxy], + self.mt_obj.Z.resistivity[nzxy, 0, 1], + self.mt_obj.Z.resistivity_err[nzxy, 0, 1], + **kw_xx) + eryx = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzyx], + self.mt_obj.Z.resistivity[nzyx, 1, 0], + self.mt_obj.Z.resistivity_err[nzyx, 1, 0], + **kw_yy) + eryy = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzyy], + self.mt_obj.Z.resistivity[nzyy, 1, 1], + self.mt_obj.Z.resistivity_err[nzyy, 1, 1], + **kw_yy) + + + #--> set axes properties + for aa, ax in enumerate([self.ax_res_od, self.ax_res_d]): + plt.setp(ax.get_xticklabels(), visible=False) + if aa == 0: + ax.set_ylabel('App. Res. ($\mathbf{\Omega \cdot m}$)', + fontdict=font_dict) + ax.set_yscale('log') + ax.set_xscale('log') + ax.set_xlim(self.plot_properties.xlimits) + + ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), + lw=.25) + # make the plot cleaner by removing the bottom x label + ylim = ax.get_ylim() + ylimits = (10**np.floor(np.log10(ylim[0])), + 10**np.ceil(np.log10(ylim[1]))) + ax.set_ylim(ylimits) + ylabels = [' ', ' ']+\ + [mtplottools.labeldict[ii] for ii + in np.arange(np.log10(ylimits[0])+1, + np.log10(ylimits[1])+1, 1)] + ax.set_yticklabels(ylabels) + + self.ax_res_od.legend((erxy[0], eryx[0]), + ('$Z_{xy}$', '$Z_{yx}$'), + loc=3, + markerscale=1, + borderaxespad=.01, + labelspacing=.07, + handletextpad=.2, + borderpad=.02) + self.ax_res_d.legend((erxx[0], eryy[0]), + ('$Z_{xx}$', '$Z_{yy}$'), + loc=3, + markerscale=1, + borderaxespad=.01, + labelspacing=.07, + handletextpad=.2, + borderpad=.02) + self.ax_res_d.set_ylim(self.plot_properties.res_limits_d) + self.ax_res_od.set_ylim(self.plot_properties.res_limits_od) + + ##--> plot phase + # plot orignal data phase + epxx = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzxx], + self._mt_obj.Z.phase[nzxx, 0, 0], + self._mt_obj.Z.phase_err[nzxx, 0, 0], + **kw_xx_o) + epxy = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzxy], + self._mt_obj.Z.phase[nzxy, 0, 1], + self._mt_obj.Z.phase_err[nzxy, 0, 1], + **kw_xx_o) + epyx = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzyx], + self._mt_obj.Z.phase[nzyx, 1, 0]+180, + self._mt_obj.Z.phase_err[nzyx, 1, 0], + **kw_yy_o) + epyy = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzyy], + self._mt_obj.Z.phase[nzyy, 1, 1], + self._mt_obj.Z.phase_err[nzyy, 1, 1], + **kw_yy_o) + + # plot manipulated data + epxx = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzxx], + self.mt_obj.Z.phase[nzxx, 0, 0], + self.mt_obj.Z.phase_err[nzxx, 0, 0], + **kw_xx) + epxy = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzxy], + self.mt_obj.Z.phase[nzxy, 0, 1], + self.mt_obj.Z.phase_err[nzxy, 0, 1], + **kw_xx) + epyx = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzyx], + self.mt_obj.Z.phase[nzyx, 1, 0]+180, + self.mt_obj.Z.phase_err[nzyx, 1, 0], + **kw_yy) + epyy = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzyy], + self.mt_obj.Z.phase[nzyy, 1, 1], + self.mt_obj.Z.phase_err[nzyy, 1, 1], + **kw_yy) + + + #--> set axes properties + for aa, ax in enumerate([self.ax_phase_od, self.ax_phase_d]): + ax.set_xlabel('Period (s)', font_dict) + ax.set_xscale('log') + if aa == 0: + ax.set_ylabel('Phase (deg)', font_dict) + ax.yaxis.set_major_locator(MultipleLocator(15)) + ax.yaxis.set_minor_locator(MultipleLocator(5)) + ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), + lw=.25) + self.ax_phase_od.set_ylim(self.plot_properties.phase_limits_od) + self.ax_phase_d.set_ylim(self.plot_properties.phase_limits_d) + + ## --> plot tipper + if self.plot_tipper == True: + #set th xaxis tick labels to invisible + plt.setp(self.ax_phase_od.xaxis.get_ticklabels(), visible=False) + plt.setp(self.ax_phase_d.xaxis.get_ticklabels(), visible=False) + self.ax_phase_od.set_xlabel('') + self.ax_phase_d.set_xlabel('') + + txr = self.mt_obj.Tipper.mag_real*\ + np.sin(self.mt_obj.Tipper.angle_real*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + tyr = self.mt_obj.Tipper.mag_real*\ + np.cos(self.mt_obj.Tipper.angle_real*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + + txi = self.mt_obj.Tipper.mag_imag*\ + np.sin(self.mt_obj.Tipper.angle_imag*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + tyi = self.mt_obj.Tipper.mag_imag*\ + np.cos(self.mt_obj.Tipper.angle_imag*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + + ## original data tipper + txr_o = self.mt_obj.Tipper.mag_real*\ + np.sin(self._mt_obj.Tipper.angle_real*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + tyr_o = self.mt_obj.Tipper.mag_real*\ + np.cos(self._mt_obj.Tipper.angle_real*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + + txi_o = self.mt_obj.Tipper.mag_imag*\ + np.sin(self._mt_obj.Tipper.angle_imag*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + tyi_o = self.mt_obj.Tipper.mag_imag*\ + np.cos(self._mt_obj.Tipper.angle_imag*np.pi/180+\ + np.pi*self.plot_properties.arrow_direction) + + kw_tr = {'lw' : self.plot_properties.lw, + 'facecolor' : self.plot_properties.arrow_color_real, + 'edgecolor' : self.plot_properties.arrow_color_real, + 'head_length' : self.plot_properties.arrow_head_length, + 'head_width' : self.plot_properties.arrow_head_width, + 'length_includes_head' : False} + kw_ti = {'lw' : self.plot_properties.lw, + 'facecolor' : self.plot_properties.arrow_color_imag, + 'edgecolor' : self.plot_properties.arrow_color_imag, + 'head_length' : self.plot_properties.arrow_head_length, + 'head_width' : self.plot_properties.arrow_head_width, + 'length_includes_head' : False} + + kw_tr_o = {'lw' : self.plot_properties.lw, + 'facecolor' : self.plot_properties.cteo, + 'edgecolor' : self.plot_properties.cteo, + 'head_length' : self.plot_properties.arrow_head_length, + 'head_width' : self.plot_properties.arrow_head_width, + 'length_includes_head' : False} + kw_ti_o = {'lw' : self.plot_properties.lw, + 'facecolor' : self.plot_properties.ctmo, + 'edgecolor' : self.plot_properties.ctmo, + 'head_length' : self.plot_properties.arrow_head_length, + 'head_width' : self.plot_properties.arrow_head_width, + 'length_includes_head' : False} + + nt = len(txr) + + for aa in range(nt): + xlenr = txr[aa]*np.log10(plot_period[aa]) + xleni = txi[aa]*np.log10(plot_period[aa]) + + xlenr_o = txr_o[aa]*np.log10(plot_period[aa]) + xleni_o = txi_o[aa]*np.log10(plot_period[aa]) + + #--> plot real arrows + # plot original data + self.ax_tip_r.arrow(np.log10(plot_period[aa]), + 0, + xlenr_o, + tyr_o[aa], + **kw_tr_o) + self.ax_tip_r.arrow(np.log10(plot_period[aa]), + 0, + xlenr, + tyr[aa], + **kw_tr) + + + if aa == 0: + t_real = self.ax_tip_r.plot(0, 0, + self.plot_properties.arrow_color_real) + + #--> plot imaginary arrows + # plot original data + self.ax_tip_i.arrow(np.log10(plot_period[aa]), + 0, + xleni_o, + tyi_o[aa], + **kw_ti_o) + + self.ax_tip_i.arrow(np.log10(plot_period[aa]), + 0, + xleni, + tyi[aa], + **kw_ti) + + if aa == 0: + t_imag = self.ax_tip_i.plot(0, 0, + self.plot_properties.arrow_color_imag) + + #make a line at 0 for reference + self.ax_tip_r.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) + self.ax_tip_i.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) + + #set axis properties + + for aa, ax in enumerate([self.ax_tip_r, self.ax_tip_i]): + ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), + np.log10(self.plot_properties.xlimits[1])) + + tklabels = [] + xticks = [] + + for tt, tk in enumerate(ax.get_xticks()): + try: + tklabels.append(mtplottools.labeldict[tk]) + xticks.append(tk) + except KeyError: + pass + ax.set_xticks(xticks) + ax.set_xticklabels(tklabels, + fontdict={'size':self.plot_properties.fs}) + #need to reset the xlimits caouse they get reset when calling + #set_ticks for some reason + ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), + np.log10(self.plot_properties.xlimits[1])) + + ax.yaxis.set_major_locator(MultipleLocator(.2)) + ax.yaxis.set_minor_locator(MultipleLocator(.1)) + ax.set_xlabel('Period (s)', fontdict=font_dict) + if aa == 0: + ax.legend([t_real[0]], + ['Real Tipper'], + loc=3, + markerscale=1, + borderaxespad=.01, + handletextpad=.2, + borderpad=.02) + + if aa == 1: + ax.legend([t_imag[0]], + ['Imag Tipper'], + loc=3, + markerscale=1, + borderaxespad=.01, + handletextpad=.2, + borderpad=.02) + + #self.axt.set_xscale('log') + if self.plot_properties.tipper_limits is None: + tmax = max([tyr.max(), tyi.max()]) + if tmax > 1: + tmax = .899 + + tmin = min([tyr.min(), tyi.min()]) + if tmin < -1: + tmin = -.899 + + self.plot_properties.tipper_limits = (tmin-.1, tmax+.1) + + ax.set_ylim(self.plot_properties.tipper_limits) + ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), + lw=.25) + + + ## --> need to be sure to draw the figure + self.mpl_widget.draw() + + def redraw_plot(self): + self.figure.clf() + self.plot() + + def on_pick(self, event): + pass + + def in_axes(self, event): + pass + + #@QtCore.pyqtSlot(str) #def normal_output(self, message): # self.output_box.moveCursor(QtGui.QTextCursor.End) # self.output_box.insertPlainText(message) +#============================================================================== +# Plot setting +#============================================================================== +class PlotSettings(QtGui.QWidget): + settings_updated = QtCore.pyqtSignal() + def __init__(self, parent, **kwargs): + super(PlotSettings, self).__init__(parent) + + self.fs = kwargs.pop('fs', 10) + self.lw = kwargs.pop('lw', 1.0) + self.ms = kwargs.pop('ms', 4) + + self.e_capthick = kwargs.pop('e_capthick', 1) + self.e_capsize = kwargs.pop('e_capsize', 4) + + #color mode + self.cted = kwargs.pop('cted', (0, 0, .65)) + self.ctmd = kwargs.pop('ctmd', (.65, 0, 0)) + self.cteo = kwargs.pop('cted', (.5, .5, .5)) + self.ctmo = kwargs.pop('ctmd', (.75, .75, .75)) + self.mted = kwargs.pop('mted', 's') + self.mtmd = kwargs.pop('mtmd', 'o') + + #color for occam2d model + self.ctem = kwargs.pop('ctem', (0, .6, .3)) + self.ctmm = kwargs.pop('ctmm', (.9, 0, .8)) + self.mtem = kwargs.pop('mtem', '+') + self.mtmm = kwargs.pop('mtmm', '+') + + self.res_limits_od = kwargs.pop('res_limits_od', None) + self.res_limits_d = kwargs.pop('res_limits_d', None) + + self.phase_limits_od = kwargs.pop('phase_limits_od', None) + self.phase_limits_d = kwargs.pop('phase_limits_d', None) + + self.tipper_limits = kwargs.pop('tipper_limits', None) + + self.subplot_wspace = kwargs.pop('subplot_wspace', .15) + self.subplot_hspace = kwargs.pop('subplot_hspace', .00) + self.subplot_right = kwargs.pop('subplot_right', .98) + self.subplot_left = kwargs.pop('subplot_left', .08) + self.subplot_top = kwargs.pop('subplot_top', .93) + self.subplot_bottom = kwargs.pop('subplot_bottom', .08) + + self.legend_loc = kwargs.pop('legend_loc', 'upper center') + self.legend_pos = kwargs.pop('legend_pos', (.5, 1.11)) + self.legend_marker_scale = kwargs.pop('legend_marker_scale', 1) + self.legend_border_axes_pad = kwargs.pop('legend_border_axes_pad', .01) + self.legend_label_spacing = kwargs.pop('legend_label_spacing', 0.07) + self.legend_handle_text_pad = kwargs.pop('legend_handle_text_pad', .2) + self.legend_border_pad = kwargs.pop('legend_border_pad', .15) + + self.arrow_direction = kwargs.pop('arrow_direction', 0) + self.arrow_color_real = kwargs.pop('arrow_color_real', 'k') + self.arrow_color_imag = kwargs.pop('arrow_color_imag', 'b') + self.arrow_head_width = kwargs.pop('arrow_head_width', .05) + self.arrow_head_length = kwargs.pop('arrow_head_length', .05) + + self.plot_z = kwargs.pop('plot_z', False) + + #self.setup_ui() + + def setup_ui(self): + #--> line properties + fs_label = QtGui.QLabel('Font Size') + fs_edit = QtGui.QLineEdit() + fs_edit.setText('{0:.1f}'.format(self.fs)) + fs_edit.textChanged[str].connect(self.set_text_fs) + + lw_label = QtGui.QLabel('Line Width') + lw_edit = QtGui.QLineEdit() + lw_edit.setText('{0:.1f}'.format(self.lw)) + lw_edit.textChanged[str].connect(self.set_text_lw) + + e_capthick_label = QtGui.QLabel('Error cap thickness') + e_capthick_edit = QtGui.QLineEdit() + e_capthick_edit.setText('{0:.1f}'.format(self.e_capthick)) + e_capthick_edit.textChanged[str].connect(self.set_text_e_capthick) + + e_capsize_label = QtGui.QLabel('Error cap size') + e_capsize_edit = QtGui.QLineEdit() + e_capsize_edit.setText('{0:.1f}'.format(self.e_capsize)) + e_capsize_edit.textChanged[str].connect(self.set_text_e_capsize) + + grid_line = QtGui.QGridLayout() + grid_line.setSpacing(10) + + grid_line.addWidget(fs_label, 1, 0) + grid_line.addWidget(fs_edit, 1, 1) + + grid_line.addWidget(lw_label, 1, 2) + grid_line.addWidget(lw_edit, 1, 3) + + grid_line.addWidget(e_capthick_label, 1, 4) + grid_line.addWidget(e_capthick_edit, 1, 5) + + grid_line.addWidget(e_capsize_label, 1, 6) + grid_line.addWidget(e_capsize_edit, 1, 7) + + #--> marker properties + ms_label = QtGui.QLabel('Marker Size') + ms_edit = QtGui.QLineEdit() + ms_edit.setText('{0:.1f}'.format(self.ms)) + ms_edit.textChanged[str].connect(self.set_text_ms) + + dcxy_label = QtGui.QLabel('Data Color xy') + dcxy_edit = QtGui.QLineEdit() + dcxy_edit.setText('{0}'.format(self.cted)) + dcxy_edit.textChanged[str].connect(self.set_text_cted) + + dcyx_label = QtGui.QLabel('Data Color yx') + dcyx_edit = QtGui.QLineEdit() + dcyx_edit.setText('{0}'.format(self.ctmd)) + dcyx_edit.textChanged[str].connect(self.set_text_ctmd) + + dmxy_label = QtGui.QLabel('Data Marker xy') + dmxy_edit = QtGui.QLineEdit() + dmxy_edit.setText('{0}'.format(self.mted)) + dmxy_edit.textChanged[str].connect(self.set_text_mted) + + dmyx_label = QtGui.QLabel('Data Marker yx') + dmyx_edit = QtGui.QLineEdit() + dmyx_edit.setText('{0}'.format(self.mtmd)) + dmyx_edit.textChanged[str].connect(self.set_text_mtmd) + + mcxy_label = QtGui.QLabel('Model Color xy') + mcxy_edit = QtGui.QLineEdit() + mcxy_edit.setText('{0}'.format(self.ctem)) + mcxy_edit.textChanged[str].connect(self.set_text_ctem) + + mcyx_label = QtGui.QLabel('Model Color yx') + mcyx_edit = QtGui.QLineEdit() + mcyx_edit.setText('{0}'.format(self.ctmm)) + mcyx_edit.textChanged[str].connect(self.set_text_ctmm) + + mmxy_label = QtGui.QLabel('Model Marker xy') + mmxy_edit = QtGui.QLineEdit() + mmxy_edit.setText('{0}'.format(self.mtem)) + mmxy_edit.textChanged[str].connect(self.set_text_mtem) + + mmyx_label = QtGui.QLabel('Model Marker yx') + mmyx_edit = QtGui.QLineEdit() + mmyx_edit.setText('{0}'.format(self.mtmm)) + mmyx_edit.textChanged[str].connect(self.set_text_mtmm) + + marker_label = QtGui.QLabel('Maker Properties:') + + marker_grid = QtGui.QGridLayout() + marker_grid.setSpacing(10) + + marker_grid.addWidget(marker_label, 1, 0) + marker_grid.addWidget(ms_label, 1, 2) + marker_grid.addWidget(ms_edit, 1, 3) + + marker_grid.addWidget(dcxy_label, 2, 0) + marker_grid.addWidget(dcxy_edit, 2, 1) + + marker_grid.addWidget(dcyx_label, 2, 2) + marker_grid.addWidget(dcyx_edit, 2, 3) + + marker_grid.addWidget(dmxy_label, 2, 4) + marker_grid.addWidget(dmxy_edit, 2, 5) + + marker_grid.addWidget(dmyx_label, 2, 6) + marker_grid.addWidget(dmyx_edit, 2, 7) + + marker_grid.addWidget(mcxy_label, 3, 0) + marker_grid.addWidget(mcxy_edit, 3, 1) + + marker_grid.addWidget(mcyx_label, 3, 2) + marker_grid.addWidget(mcyx_edit, 3, 3) + + marker_grid.addWidget(mmxy_label, 3, 4) + marker_grid.addWidget(mmxy_edit, 3, 5) + + marker_grid.addWidget(mmyx_label, 3, 6) + marker_grid.addWidget(mmyx_edit, 3, 7) + + #--> plot limits + ylimr_od_label = QtGui.QLabel('Res_od') + ylimr_od_edit = QtGui.QLineEdit() + ylimr_od_edit.setText('{0}'.format(self.res_limits_od)) + ylimr_od_edit.textChanged[str].connect(self.set_text_res_od) + + ylimr_d_label = QtGui.QLabel('Res_d') + ylimr_d_edit = QtGui.QLineEdit() + ylimr_d_edit.setText('{0}'.format(self.res_limits_d)) + ylimr_d_edit.textChanged[str].connect(self.set_text_res_d) + + ylimp_od_label = QtGui.QLabel('phase_od') + ylimp_od_edit = QtGui.QLineEdit() + ylimp_od_edit.setText('{0}'.format(self.phase_limits_od)) + ylimp_od_edit.textChanged[str].connect(self.set_text_phase_od) + + ylimp_d_label = QtGui.QLabel('phase_d') + ylimp_d_edit = QtGui.QLineEdit() + ylimp_d_edit.setText('{0}'.format(self.phase_limits_d)) + ylimp_d_edit.textChanged[str].connect(self.set_text_phase_d) + + limits_grid = QtGui.QGridLayout() + limits_grid.setSpacing(10) + + limits_label = QtGui.QLabel('Plot Limits: (Res=Real, Phase=Imaginary)' + ' --> input on a linear scale') + + limits_grid.addWidget(limits_label, 1, 0, 1, 7) + + limits_grid.addWidget(ylimr_od_label, 2, 0) + limits_grid.addWidget(ylimr_od_edit, 2, 1) + limits_grid.addWidget(ylimr_d_label, 2, 2) + limits_grid.addWidget(ylimr_d_edit, 2, 3) + + limits_grid.addWidget(ylimp_od_label, 3, 0) + limits_grid.addWidget(ylimp_od_edit, 3, 1) + limits_grid.addWidget(ylimp_d_label, 3, 2) + limits_grid.addWidget(ylimp_d_edit, 3, 3) + + #--> legend properties + legend_pos_label = QtGui.QLabel('Legend Position') + legend_pos_edit = QtGui.QLineEdit() + legend_pos_edit.setText('{0}'.format(self.legend_pos)) + legend_pos_edit.textChanged[str].connect(self.set_text_legend_pos) + + legend_grid = QtGui.QGridLayout() + legend_grid.setSpacing(10) + + legend_grid.addWidget(QtGui.QLabel('Legend Properties:'), 1, 0) + legend_grid.addWidget(legend_pos_label, 1, 2,) + legend_grid.addWidget(legend_pos_edit, 1, 3) + + update_button = QtGui.QPushButton('Update') + update_button.clicked.connect(self.update_settings) + + vbox = QtGui.QVBoxLayout() + vbox.addLayout(grid_line) + vbox.addLayout(marker_grid) + vbox.addLayout(limits_grid) + vbox.addLayout(legend_grid) + vbox.addWidget(update_button) + + self.setLayout(vbox) + + self.setGeometry(300, 300, 350, 300) + self.resize(1350, 500) + self.setWindowTitle('Plot Settings') + self.show() + + def set_text_fs(self, text): + try: + self.fs = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_e_capthick(self, text): + try: + self.e_capthick = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_e_capsize(self, text): + try: + self.e_capsize = float(text) + except ValueError: + print "Enter a float point number" + + + def set_text_lw(self, text): + try: + self.lw = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_ms(self, text): + try: + self.ms = float(text) + except ValueError: + print "Enter a float point number" + + def set_text_cted(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 3: + print 'enter as (r, g, b)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 3: + self.cted = tuple(l_list) + + def set_text_ctmd(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 3: + print 'enter as (r, g, b)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 3: + self.ctmd = tuple(l_list) + + def set_text_mted(self, text): + try: + self.mted = str(text) + except ValueError: + print "Enter a string" + + def set_text_mtmd(self, text): + try: + self.mtmd = str(text) + except ValueError: + print "Enter a string" + + def set_text_ctem(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 3: + print 'enter as (r, g, b)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 3: + self.ctem = tuple(l_list) + + def set_text_ctmm(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 3: + print 'enter as (r, g, b)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 3: + self.ctmm = tuple(l_list) + + def set_text_mtem(self, text): + try: + self.mtem = str(text) + except ValueError: + print "Enter a string" + + def set_text_mtmm(self, text): + try: + self.mtmm = str(text) + except ValueError: + print "Enter a string" + + def set_text_res_od(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_limits_od = tuple(l_list) + + def set_text_res_d(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.res_limits_d = tuple(l_list) + + def set_text_phase_od(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_limits_od = tuple(l_list) + + def set_text_phase_d(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.phase_limits_d = tuple(l_list) + + + def set_text_legend_pos(self, text): + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.legend_pos = tuple(l_list) + + def update_settings(self): + self.settings_updated.emit() #============================================================================== # Def Main diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index b349d387..05b9451d 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -279,7 +279,7 @@ def setup_ui(self): menu_model.addAction(action_model_open) menu_bar.addAction(menu_model.menuAction()) - self.setMenuBar(menu_bar) + #self.setMenuBar(menu_bar) #------------------Layout of main window------------------------------ #need to have a central widget @@ -424,7 +424,7 @@ def get_period(self, widget_item): """ self.plot_period = str(widget_item.text()) - def load_edi_files(self): + def get_edi_files(self): edi_obj = Get_EDI_Files() self.edi_list = edi_obj.edi_list @@ -549,7 +549,7 @@ def __init__(self): def setup_ui(self): - self.figure = Figure(dpi=150) + self.figure = Figure(dpi=300) self.mpl_widget = FigureCanvas(self.figure) self.figure.subplots_adjust(left=self.subplot_left, diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index d26b9bd3..ea4b4282 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -426,7 +426,7 @@ def plot(self): self.figure.suptitle(str(self.station), fontdict=fontdict) #set the grid of subplots - if t_obj.tipper.all() == 0.0: + if np.all(t_obj.tipper == 0.0) is True: self.plot_tipper = False else: self.plot_tipper = True From b1ad1fdc8c3376cf5331ca57d4e963f5def173a7 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 31 Mar 2016 17:44:12 -0700 Subject: [PATCH 021/124] added static shift to core.mt and changed distortion so it removes it from a copy of Z --- mtpy/gui/edi_editor.py | 202 ++++++++++++++++++++++++++--------------- 1 file changed, 131 insertions(+), 71 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 8de3041f..5bf5e85e 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -21,6 +21,7 @@ import numpy as np import copy import sys +import os #============================================================================== # UI @@ -59,7 +60,8 @@ def ui_setup(self): """ self.setWindowTitle('EDI Editor') - self.resize(1920, 1080) +# self.resize(1920, 1080) + self.setWindowState(QtCore.Qt.WindowMaximized) self.plot_widget = PlotWidget() self.centralWidget = self.setCentralWidget(self.plot_widget) @@ -84,21 +86,26 @@ def ui_setup(self): self.action_edit_metadata.triggered.connect(self.edit_metadata) - #self.my_stream = MyStream() - #self.my_stream.message.connect(self.plot_widget.normal_output) + self.my_stream = MyStream() + self.my_stream.message.connect(self.plot_widget.normal_output) - #sys.stdout = self.my_stream + sys.stdout = self.my_stream - #QtCore.QMetaObject.connectSlotsByName(self) + QtCore.QMetaObject.connectSlotsByName(self) def get_edi_file(self): """ get edi file """ fn_dialog = QtGui.QFileDialog() - fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', + fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', + directory=self.plot_widget.dir_path, filter='*.edi')) + self.ui_setup() + + self.plot_widget.dir_path = os.path.dirname(fn) + self.plot_widget.mt_obj = mt.MT(fn) self.plot_widget._mt_obj = copy.deepcopy(self.plot_widget.mt_obj) self.plot_widget.fill_metadata() @@ -139,6 +146,8 @@ def __init__(self): self.static_shift_x = 1.0 self.static_shift_y = 1.0 self.plot_properties = PlotSettings(None) + self._edited = False + self.dir_path = os.getcwd() self.setup_ui() @@ -154,7 +163,8 @@ def setup_ui(self): # this will set the minimum width of the mpl plot, important to # resize everything - self.mpl_widget.setMinimumWidth(1600) + screen = QtGui.QDesktopWidget().screenGeometry() + self.mpl_widget.setMinimumWidth(screen.width()*(1600./1920)) # be able to edit the data self.mpl_widget.mpl_connect('pick_event', self.on_pick) @@ -220,9 +230,19 @@ def setup_ui(self): ## remove distortion self.remove_distortion_button = QtGui.QPushButton() - self.remove_distortion_button.setText("Remove Distortion") + self.remove_distortion_button.setText("Remove Distortion [Bibby et al., 2005]") self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) + ## revert back to original data + self.revert_button = QtGui.QPushButton() + self.revert_button.setText("Revert back to orginal data") + self.revert_button.pressed.connect(self.revert_back) + + ## save edits button + self.save_edits_button = QtGui.QPushButton() + self.save_edits_button.setText('Save Edits to new EDI file') + self.save_edits_button.pressed.connect(self.save_edi_file) + ###--> layout --------------------------------------------- ## mpl plot --> right panel @@ -261,7 +281,10 @@ def setup_ui(self): info_layout = QtGui.QVBoxLayout() info_layout.addLayout(meta_layout) info_layout.addLayout(ss_layout) + info_layout.addWidget(self.remove_distortion_button) + info_layout.addWidget(self.revert_button) + info_layout.addWidget(self.save_edits_button) info_layout.addWidget(self.output_box) ## final layout @@ -312,9 +335,14 @@ def static_shift_apply(self): """ shift apparent resistivity up or down """ - # be sure to apply the static shift to the original data - new_z_obj = self._mt_obj.remove_static_shift(ss_x=self.static_shift_x, - ss_y=self.static_shift_y) + if self._edited == False: + # be sure to apply the static shift to the original data + new_z_obj = self._mt_obj.remove_static_shift(ss_x=self.static_shift_x, + ss_y=self.static_shift_y) + else: + new_z_obj = self.mt_obj.remove_static_shift(ss_x=self.static_shift_x, + ss_y=self.static_shift_y) + self._edited = True self.mt_obj.Z = new_z_obj self.redraw_plot() @@ -323,9 +351,12 @@ def remove_distortion_apply(self): """ remove distortion from the mt repsonse """ - #dummy_mt_obj = copy.deepcopy(self._mt_obj) - distortion, new_z_object = self._mt_obj.remove_distortion() + if self._edited == False: + distortion, new_z_object = self._mt_obj.remove_distortion() + else: + distortion, new_z_object = self.mt_obj.remove_distortion() + self._edited = True self.mt_obj.Z = new_z_object print 'Distortion matrix = ' @@ -333,6 +364,30 @@ def remove_distortion_apply(self): self.redraw_plot() + def revert_back(self): + """ + revert back to original data + + """ + + self.mt_obj = copy.deepcopy(self._mt_obj) + self.redraw_plot() + + def save_edi_file(self): + """ + save edited edi file to the chosen file name. + """ + + save_dialog = QtGui.QFileDialog() + save_fn = str(save_dialog.getSaveFileName(caption='Choose EDI file', + directory=self.dir_path, + filter='*.edi')) + self.mt_obj.write_edi_file(new_fn=save_fn) + + @QtCore.pyqtSlot(str) + def normal_output(self, message): + self.output_box.moveCursor(QtGui.QTextCursor.End) + self.output_box.insertPlainText(message) def plot(self): """ @@ -379,6 +434,7 @@ def plot(self): 'e_capsize':self.plot_properties.e_capsize, 'e_capthick':self.plot_properties.e_capthick, 'picker':3} + kw_xx_o = {'color':self.plot_properties.cteo, 'marker':self.plot_properties.mted, 'ms':self.plot_properties.ms, @@ -432,27 +488,49 @@ def plot(self): self.ax_tip_i = self.figure.add_subplot(gs[2, 1]) ## --> plot apparent resistivity, phase and tipper - ## plot orginal apparent resistivity - orxx = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzxx], - self._mt_obj.Z.resistivity[nzxx, 0, 0], - self._mt_obj.Z.resistivity_err[nzxx, 0, 0], - **kw_xx_o) - orxy = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzxy], - self._mt_obj.Z.resistivity[nzxy, 0, 1], - self._mt_obj.Z.resistivity_err[nzxy, 0, 1], - **kw_xx_o) - oryx = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzyx], - self._mt_obj.Z.resistivity[nzyx, 1, 0], - self._mt_obj.Z.resistivity_err[nzyx, 1, 0], - **kw_yy_o) - oryy = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzyy], - self._mt_obj.Z.resistivity[nzyy, 1, 1], - self._mt_obj.Z.resistivity_err[nzyy, 1, 1], - **kw_yy_o) + ## plot orginal apparent resistivity + if self.plot_properties.plot_original_data == True: + orxx = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzxx], + self._mt_obj.Z.resistivity[nzxx, 0, 0], + self._mt_obj.Z.resistivity_err[nzxx, 0, 0], + **kw_xx_o) + orxy = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzxy], + self._mt_obj.Z.resistivity[nzxy, 0, 1], + self._mt_obj.Z.resistivity_err[nzxy, 0, 1], + **kw_xx_o) + oryx = mtplottools.plot_errorbar(self.ax_res_od, + plot_period[nzyx], + self._mt_obj.Z.resistivity[nzyx, 1, 0], + self._mt_obj.Z.resistivity_err[nzyx, 1, 0], + **kw_yy_o) + oryy = mtplottools.plot_errorbar(self.ax_res_d, + plot_period[nzyy], + self._mt_obj.Z.resistivity[nzyy, 1, 1], + self._mt_obj.Z.resistivity_err[nzyy, 1, 1], + **kw_yy_o) + # plot original phase + epxx = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzxx], + self._mt_obj.Z.phase[nzxx, 0, 0], + self._mt_obj.Z.phase_err[nzxx, 0, 0], + **kw_xx_o) + epxy = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzxy], + self._mt_obj.Z.phase[nzxy, 0, 1], + self._mt_obj.Z.phase_err[nzxy, 0, 1], + **kw_xx_o) + epyx = mtplottools.plot_errorbar(self.ax_phase_od, + plot_period[nzyx], + self._mt_obj.Z.phase[nzyx, 1, 0]+180, + self._mt_obj.Z.phase_err[nzyx, 1, 0], + **kw_yy_o) + epyy = mtplottools.plot_errorbar(self.ax_phase_d, + plot_period[nzyy], + self._mt_obj.Z.phase[nzyy, 1, 1], + self._mt_obj.Z.phase_err[nzyy, 1, 1], + **kw_yy_o) # plot manipulated data apparent resistivity erxx = mtplottools.plot_errorbar(self.ax_res_d, @@ -477,7 +555,7 @@ def plot(self): **kw_yy) - #--> set axes properties + #--> set axes properties for apparent resistivity for aa, ax in enumerate([self.ax_res_od, self.ax_res_d]): plt.setp(ax.get_xticklabels(), visible=False) if aa == 0: @@ -519,29 +597,7 @@ def plot(self): self.ax_res_d.set_ylim(self.plot_properties.res_limits_d) self.ax_res_od.set_ylim(self.plot_properties.res_limits_od) - ##--> plot phase - # plot orignal data phase - epxx = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzxx], - self._mt_obj.Z.phase[nzxx, 0, 0], - self._mt_obj.Z.phase_err[nzxx, 0, 0], - **kw_xx_o) - epxy = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzxy], - self._mt_obj.Z.phase[nzxy, 0, 1], - self._mt_obj.Z.phase_err[nzxy, 0, 1], - **kw_xx_o) - epyx = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzyx], - self._mt_obj.Z.phase[nzyx, 1, 0]+180, - self._mt_obj.Z.phase_err[nzyx, 1, 0], - **kw_yy_o) - epyy = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzyy], - self._mt_obj.Z.phase[nzyy, 1, 1], - self._mt_obj.Z.phase_err[nzyy, 1, 1], - **kw_yy_o) - + ##--> plot phase # plot manipulated data epxx = mtplottools.plot_errorbar(self.ax_phase_d, plot_period[nzxx], @@ -571,8 +627,8 @@ def plot(self): ax.set_xscale('log') if aa == 0: ax.set_ylabel('Phase (deg)', font_dict) - ax.yaxis.set_major_locator(MultipleLocator(15)) - ax.yaxis.set_minor_locator(MultipleLocator(5)) + #ax.yaxis.set_major_locator(MultipleLocator(15)) + #ax.yaxis.set_minor_locator(MultipleLocator(5)) ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), lw=.25) self.ax_phase_od.set_ylim(self.plot_properties.phase_limits_od) @@ -652,11 +708,18 @@ def plot(self): #--> plot real arrows # plot original data - self.ax_tip_r.arrow(np.log10(plot_period[aa]), - 0, - xlenr_o, - tyr_o[aa], - **kw_tr_o) + if self.plot_properties.plot_original_data == True: + self.ax_tip_r.arrow(np.log10(plot_period[aa]), + 0, + xlenr_o, + tyr_o[aa], + **kw_tr_o) + + self.ax_tip_i.arrow(np.log10(plot_period[aa]), + 0, + xleni_o, + tyi_o[aa], + **kw_ti_o) self.ax_tip_r.arrow(np.log10(plot_period[aa]), 0, xlenr, @@ -669,12 +732,8 @@ def plot(self): self.plot_properties.arrow_color_real) #--> plot imaginary arrows - # plot original data - self.ax_tip_i.arrow(np.log10(plot_period[aa]), - 0, - xleni_o, - tyi_o[aa], - **kw_ti_o) + # plot original data + self.ax_tip_i.arrow(np.log10(plot_period[aa]), 0, @@ -829,6 +888,7 @@ def __init__(self, parent, **kwargs): self.arrow_head_length = kwargs.pop('arrow_head_length', .05) self.plot_z = kwargs.pop('plot_z', False) + self.plot_original_data = kwargs.pop('plot_original_data', True) #self.setup_ui() From ad7810b2fab6ca215759aae5536e32e246b6810b Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 1 Apr 2016 18:07:30 -0700 Subject: [PATCH 022/124] adding masking points in gui/edi_editor --- mtpy/gui/edi_editor.py | 859 ++++++++++++++++++++++++++++++----------- 1 file changed, 626 insertions(+), 233 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 5bf5e85e..fee05568 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -22,6 +22,7 @@ import copy import sys import os +import mtpy.imaging.plotstrike2d as plotstrike2d #============================================================================== # UI @@ -97,18 +98,20 @@ def get_edi_file(self): """ get edi file """ + + print '='*35 fn_dialog = QtGui.QFileDialog() fn = str(fn_dialog.getOpenFileName(caption='Choose EDI file', directory=self.plot_widget.dir_path, filter='*.edi')) - self.ui_setup() - self.plot_widget.dir_path = os.path.dirname(fn) self.plot_widget.mt_obj = mt.MT(fn) self.plot_widget._mt_obj = copy.deepcopy(self.plot_widget.mt_obj) self.plot_widget.fill_metadata() + self.plot_widget.reset_parameters() + self.plot_widget.plot_properties = PlotSettings(None) self.plot_widget.plot() def close_edi_file(self): @@ -145,8 +148,13 @@ def __init__(self): self._mt_obj = mt.MT() self.static_shift_x = 1.0 self.static_shift_y = 1.0 + self.rotate_z_angle = 0 + self.rotate_tip_angle = 0 self.plot_properties = PlotSettings(None) - self._edited = False + self._edited_ss = False + self._edited_dist = False + self._edited_rot = False + self._edited_mask = False self.dir_path = os.getcwd() self.setup_ui() @@ -174,14 +182,16 @@ def setup_ui(self): self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) - # output box for all notes from the program - self.output_box = QtGui.QTextEdit() - - # add side box to manipulate the data + # header label font header_font = QtGui.QFont() header_font.setBold = True header_font.setPointSize (16) - + + # output box for all notes from the program + self.output_label = QtGui.QLabel("Output") + self.output_label.setFont(header_font) + self.output_box = QtGui.QTextEdit() + ## --> SET METADATA self.metadata_label = QtGui.QLabel('Metadata') self.metadata_label.setFont(header_font) @@ -217,11 +227,11 @@ def setup_ui(self): self.static_shift_label.setFont(header_font) self.static_shift_x_label = QtGui.QLabel("X") - self.static_shift_x_edit = QtGui.QLineEdit("1.0") + self.static_shift_x_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_x)) self.static_shift_x_edit.editingFinished.connect(self.static_shift_set_x) self.static_shift_y_label = QtGui.QLabel("Y") - self.static_shift_y_edit = QtGui.QLineEdit("1.0") + self.static_shift_y_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_y)) self.static_shift_y_edit.editingFinished.connect(self.static_shift_set_y) self.static_shift_apply_button = QtGui.QPushButton() @@ -229,10 +239,36 @@ def setup_ui(self): self.static_shift_apply_button.pressed.connect(self.static_shift_apply) ## remove distortion + self.remove_distortion_label = QtGui.QLabel("Remove Distortion") + self.remove_distortion_label.setFont(header_font) + self.remove_distortion_button = QtGui.QPushButton() self.remove_distortion_button.setText("Remove Distortion [Bibby et al., 2005]") self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) + ## rotate data + self.rotate_data_label = QtGui.QLabel("Rotate") + self.rotate_data_label.setFont(header_font) + + self.rotate_explanation = QtGui.QLabel("Always rotating original data, assuming: N = 0, E = 90.") + self.rotate_angle_z_label = QtGui.QLabel("Rotate Z (deg)") + self.rotate_angle_z_edit = QtGui.QLineEdit("{0:.4g}".format(self.rotate_z_angle)) + self.rotate_angle_z_edit.editingFinished.connect(self.rotate_set_z_angle) + + self.rotate_angle_t_label = QtGui.QLabel("Rotate Tipper (deg)") + self.rotate_angle_t_edit = QtGui.QLineEdit("{0:.4g}".format(self.rotate_tip_angle)) + self.rotate_angle_t_edit.editingFinished.connect(self.rotate_set_t_angle) + + self.rotate_angle_button = QtGui.QPushButton("Apply") + self.rotate_angle_button.pressed.connect(self.rotate_data_apply) + + self.rotate_estimate_strike_button = QtGui.QPushButton("Estimate Strike") + self.rotate_estimate_strike_button.pressed.connect(self.rotate_estimate_strike) + + ## tools label + self.tools_label = QtGui.QLabel("Tools") + self.tools_label.setFont(header_font) + ## revert back to original data self.revert_button = QtGui.QPushButton() self.revert_button.setText("Revert back to orginal data") @@ -243,7 +279,15 @@ def setup_ui(self): self.save_edits_button.setText('Save Edits to new EDI file') self.save_edits_button.pressed.connect(self.save_edi_file) + ## horizontal line + h_line = QtGui.QFrame(self) + h_line.setFrameShape(QtGui.QFrame.HLine) + h_line.setFrameShadow(QtGui.QFrame.Sunken) + ## vertical spacer + v_space = QtGui.QSpacerItem(20, 20, + QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Maximum) ###--> layout --------------------------------------------- ## mpl plot --> right panel mpl_vbox = QtGui.QVBoxLayout() @@ -275,16 +319,33 @@ def setup_ui(self): ss_layout.addWidget(self.static_shift_x_label, 1, 0) ss_layout.addWidget(self.static_shift_x_edit, 1, 1) ss_layout.addWidget(self.static_shift_y_label, 1, 2) - ss_layout.addWidget(self.static_shift_y_edit, 1, 3) + ss_layout.addWidget(self.static_shift_y_edit, 1, 3) + + ## rotation + rot_layout = QtGui.QGridLayout() + rot_layout.addWidget(self.rotate_data_label, 0, 0) + rot_layout.addWidget(self.rotate_angle_button, 0, 1) + rot_layout.addWidget(self.rotate_explanation, 1, 0, 1, 2) + rot_layout.addWidget(self.rotate_angle_z_label, 2, 0) + rot_layout.addWidget(self.rotate_angle_z_edit, 2, 1) + rot_layout.addWidget(self.rotate_angle_t_label, 3, 0) + rot_layout.addWidget(self.rotate_angle_t_edit, 3, 1) + rot_layout.addWidget(self.rotate_estimate_strike_button, 4, 0, 1, 2) ## left panel info_layout = QtGui.QVBoxLayout() info_layout.addLayout(meta_layout) + info_layout.addWidget(h_line) info_layout.addLayout(ss_layout) - + info_layout.addWidget(h_line) + info_layout.addWidget(self.remove_distortion_label) info_layout.addWidget(self.remove_distortion_button) + info_layout.addLayout(rot_layout) + info_layout.addWidget(self.tools_label) info_layout.addWidget(self.revert_button) info_layout.addWidget(self.save_edits_button) + info_layout.addItem(v_space) + info_layout.addWidget(self.output_label) info_layout.addWidget(self.output_box) ## final layout @@ -325,24 +386,33 @@ def fill_metadata(self): def static_shift_set_x(self): self.static_shift_x = float(str(self.static_shift_x_edit.text())) - self.static_shift_x_edit.setText('{0:.2f}'.format(self.static_shift_x)) + self.static_shift_x_edit.setText('{0:.4f}'.format(self.static_shift_x)) def static_shift_set_y(self): self.static_shift_y = float(str(self.static_shift_y_edit.text())) - self.static_shift_y_edit.setText('{0:.2f}'.format(self.static_shift_y)) - + self.static_shift_y_edit.setText('{0:.4f}'.format(self.static_shift_y)) + def static_shift_apply(self): """ shift apparent resistivity up or down """ - if self._edited == False: + if self._edited_dist == False and self._edited_rot == False and \ + self._edited_mask == False: # be sure to apply the static shift to the original data new_z_obj = self._mt_obj.remove_static_shift(ss_x=self.static_shift_x, ss_y=self.static_shift_y) + # print the static shift applied + print "\n Static shift applied to original data:" else: new_z_obj = self.mt_obj.remove_static_shift(ss_x=self.static_shift_x, ss_y=self.static_shift_y) - self._edited = True + # print the static shift applied + print "\n - Static shift applied to edited data:" + + # print the static shift applied + print " x = {0:.4f}, y = {1:.4f}".format(self.static_shift_x, + self.static_shift_y) + self._edited_ss = True self.mt_obj.Z = new_z_obj self.redraw_plot() @@ -351,19 +421,100 @@ def remove_distortion_apply(self): """ remove distortion from the mt repsonse """ - if self._edited == False: + if self._edited_dist == False and self._edited_rot == False and \ + self._edited_mask == False: + # remove distortion from original data distortion, new_z_object = self._mt_obj.remove_distortion() + print '\n - Removed distortion from original data' + else: + # remove distortion from edited data distortion, new_z_object = self.mt_obj.remove_distortion() + print '\n - Removed distortion from edited data' - self._edited = True + self._edited_dist = True self.mt_obj.Z = new_z_object - print 'Distortion matrix = ' - print distortion + print ' Distortion matrix:' + print ' | {0:+.3f} {1:+.3f} |'.format(distortion[0, 0], + distortion[0, 1]) + print ' | {0:+.3f} {1:+.3f} |'.format(distortion[1, 0], + distortion[1, 1]) + + self.redraw_plot() + + def rotate_set_z_angle(self): + """ + set z rotation angle + + Always rotate original data otherwiswe can get messy + """ + self.rotate_z_angle = float(str(self.rotate_angle_z_edit.text())) + self.rotate_angle_z_edit.setText("{0:.4f}".format(self.rotate_z_angle)) + + self.rotate_tip_angle = float(self.rotate_z_angle) + self.rotate_angle_t_edit.setText("{0:.4f}".format(self.rotate_tip_angle)) + + + def rotate_set_t_angle(self): + """ + rotate tipper data assuming North is 0 and E is 90 + + Always rotate original data otherwiswe can get messy + """ + self.rotate_tip_angle = float(str(self.rotate_angle_t_edit.text())) + self.rotate_angle_t_edit.setText("{0:.4f}".format(self.rotate_tip_angle)) + + def rotate_data_apply(self): + """ + rotate both Z and tipper original data by the input angles + """ + + rot_z_obj = copy.deepcopy(self._mt_obj.Z) + rot_z_obj.rotate(self.rotate_z_angle) + + self.mt_obj.Z = rot_z_obj + + rot_t_obj = copy.deepcopy(self._mt_obj.Tipper) + rot_t_obj.rotate(self.rotate_tip_angle) + + self.mt_obj.Tipper = rot_t_obj + + if self._edited_ss == True: + self.static_shift_apply() + + if self._edited_dist == True: + self.remove_distortion_apply() self.redraw_plot() + self._edited_rot = True + + print '\n Rotated orginal data clockwise by:' + print ' Z = {0:.3g}'.format(self.rotate_z_angle) + print ' T = {0:.3g}'.format(self.rotate_tip_angle) + + def rotate_estimate_strike(self): + """ + estimate strike from the invariants, phase tensor, and tipper if + measured. + """ + z_list = [copy.deepcopy(self.mt_obj.Z)] + t_list = [copy.deepcopy(self.mt_obj.Tipper)] + strike_plot = plotstrike2d.PlotStrike2D(z_object_list=z_list, + tipper_object_list=t_list, + plot_yn='n') + strike_plot.plot_type = 1 + if np.any(self.mt_obj.Tipper.tipper == 0) == True: + strike_plot.plot_tipper = 'n' + elif np.any(self.mt_obj.Tipper.tipper == 0) == False: + strike_plot.plot_tipper = 'y' + + strike_plot.fold = False + strike_plot.plot_range = 'data' + strike_plot.plot() + + def revert_back(self): """ revert back to original data @@ -371,8 +522,28 @@ def revert_back(self): """ self.mt_obj = copy.deepcopy(self._mt_obj) + self.reset_parameters() self.redraw_plot() + print '\n' + print '-'*35 + print "Reverted back to original input data." + print "Reset editing parameters." + + def reset_parameters(self): + self.static_shift_x = 1.0 + self.static_shift_y = 1.0 + self.static_shift_x_edit.setText("{0:.4g}".format(self.static_shift_x)) + self.static_shift_y_edit.setText("{0:.4g}".format(self.static_shift_y)) + self.rotate_z_angle = 0.0 + self.rotate_tip_angle = 0.0 + self.rotate_angle_z_edit.setText("{0:.4g}".format(self.rotate_z_angle)) + self.rotate_angle_t_edit.setText("{0:.4g}".format(self.rotate_tip_angle)) + + self._edited_ss = False + self._edited_dist = False + self._edited_rot = False + def save_edi_file(self): """ save edited edi file to the chosen file name. @@ -406,7 +577,7 @@ def plot(self): font_dict = {'size':self.plot_properties.fs+2, 'weight':'bold'} plot_period = 1./self.mt_obj.Z.freq - if np.all(self.mt_obj.Tipper.tipper == 0) is True: + if np.all(self.mt_obj.Tipper.tipper == 0) == True: print 'No Tipper data for station {0}'.format(self.mt_obj.station) self.plot_tipper = False else: @@ -442,7 +613,7 @@ def plot(self): 'lw':self.plot_properties.lw, 'e_capsize':self.plot_properties.e_capsize, 'e_capthick':self.plot_properties.e_capthick, - 'picker':3} + 'picker':None} kw_yy_o = {'color':self.plot_properties.ctmo, 'marker':self.plot_properties.mtmd, @@ -451,13 +622,10 @@ def plot(self): 'lw':self.plot_properties.lw, 'e_capsize':self.plot_properties.e_capsize, 'e_capthick':self.plot_properties.e_capthick, - 'picker':3} + 'picker':None} # create a grid of subplots - if self.plot_tipper == True: - gs = gridspec.GridSpec(3, 2, height_ratios=[2, 1.5, 1]) - elif self.plot_tipper == False: - gs = gridspec.GridSpec(2, 2, height_ratios=[2, 1.5]) + gs = gridspec.GridSpec(3, 2, height_ratios=[2, 1.5, 1]) gs.update(hspace=self.plot_properties.subplot_hspace, wspace=self.plot_properties.subplot_wspace, @@ -471,6 +639,11 @@ def plot(self): nzxy = np.nonzero(self.mt_obj.Z.z[:, 0, 1])[0] nzyx = np.nonzero(self.mt_obj.Z.z[:, 1, 0])[0] nzyy = np.nonzero(self.mt_obj.Z.z[:, 1, 1])[0] + + nzxx_o = np.nonzero(self._mt_obj.Z.z[:, 0, 0])[0] + nzxy_o = np.nonzero(self._mt_obj.Z.z[:, 0, 1])[0] + nzyx_o = np.nonzero(self._mt_obj.Z.z[:, 1, 0])[0] + nzyy_o = np.nonzero(self._mt_obj.Z.z[:, 1, 1])[0] # make axis od = off-diagonal, d = diagonal, share x axis across plots self.ax_res_od = self.figure.add_subplot(gs[0, 0]) @@ -482,54 +655,59 @@ def plot(self): self.ax_phase_d = self.figure.add_subplot(gs[1, 1], sharex=self.ax_res_od) - # include tipper, r = real, i = imaginary; can't share axis properly - if self.plot_tipper == True: - self.ax_tip_r = self.figure.add_subplot(gs[2, 0]) - self.ax_tip_i = self.figure.add_subplot(gs[2, 1]) + # include tipper, r = real, i = imaginary + self.ax_tip_m = self.figure.add_subplot(gs[2, 0], + sharex=self.ax_res_od) + self.ax_tip_a = self.figure.add_subplot(gs[2, 1], + sharex=self.ax_res_od) + + self.ax_list = [self.ax_res_od, self.ax_res_d, + self.ax_phase_od, self.ax_phase_d, + self.ax_tip_m, self.ax_tip_a] ## --> plot apparent resistivity, phase and tipper ## plot orginal apparent resistivity if self.plot_properties.plot_original_data == True: orxx = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzxx], - self._mt_obj.Z.resistivity[nzxx, 0, 0], - self._mt_obj.Z.resistivity_err[nzxx, 0, 0], + plot_period[nzxx_o], + self._mt_obj.Z.resistivity[nzxx_o, 0, 0], + self._mt_obj.Z.resistivity_err[nzxx_o, 0, 0], **kw_xx_o) orxy = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzxy], - self._mt_obj.Z.resistivity[nzxy, 0, 1], - self._mt_obj.Z.resistivity_err[nzxy, 0, 1], + plot_period[nzxy_o], + self._mt_obj.Z.resistivity[nzxy_o, 0, 1], + self._mt_obj.Z.resistivity_err[nzxy_o, 0, 1], **kw_xx_o) oryx = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzyx], - self._mt_obj.Z.resistivity[nzyx, 1, 0], - self._mt_obj.Z.resistivity_err[nzyx, 1, 0], + plot_period[nzyx_o], + self._mt_obj.Z.resistivity[nzyx_o, 1, 0], + self._mt_obj.Z.resistivity_err[nzyx_o, 1, 0], **kw_yy_o) oryy = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzyy], - self._mt_obj.Z.resistivity[nzyy, 1, 1], - self._mt_obj.Z.resistivity_err[nzyy, 1, 1], + plot_period[nzyy_o], + self._mt_obj.Z.resistivity[nzyy_o, 1, 1], + self._mt_obj.Z.resistivity_err[nzyy_o, 1, 1], **kw_yy_o) # plot original phase epxx = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzxx], - self._mt_obj.Z.phase[nzxx, 0, 0], - self._mt_obj.Z.phase_err[nzxx, 0, 0], + plot_period[nzxx_o], + self._mt_obj.Z.phase[nzxx_o, 0, 0], + self._mt_obj.Z.phase_err[nzxx_o, 0, 0], **kw_xx_o) epxy = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzxy], - self._mt_obj.Z.phase[nzxy, 0, 1], - self._mt_obj.Z.phase_err[nzxy, 0, 1], + plot_period[nzxy_o], + self._mt_obj.Z.phase[nzxy_o, 0, 1], + self._mt_obj.Z.phase_err[nzxy_o, 0, 1], **kw_xx_o) epyx = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzyx], - self._mt_obj.Z.phase[nzyx, 1, 0]+180, - self._mt_obj.Z.phase_err[nzyx, 1, 0], + plot_period[nzyx_o], + self._mt_obj.Z.phase[nzyx_o, 1, 0]+180, + self._mt_obj.Z.phase_err[nzyx_o, 1, 0], **kw_yy_o) epyy = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzyy], - self._mt_obj.Z.phase[nzyy, 1, 1], - self._mt_obj.Z.phase_err[nzyy, 1, 1], + plot_period[nzyy_o], + self._mt_obj.Z.phase[nzyy_o, 1, 1], + self._mt_obj.Z.phase_err[nzyy_o, 1, 1], **kw_yy_o) # plot manipulated data apparent resistivity @@ -633,182 +811,283 @@ def plot(self): lw=.25) self.ax_phase_od.set_ylim(self.plot_properties.phase_limits_od) self.ax_phase_d.set_ylim(self.plot_properties.phase_limits_d) + + # set the last label to be an empty string for easier reading + for ax in [self.ax_phase_od, self.ax_phase_d]: + y_labels = ax.get_yticks().tolist() + y_labels[0] = '' + ax.set_yticklabels(y_labels) ## --> plot tipper - if self.plot_tipper == True: - #set th xaxis tick labels to invisible - plt.setp(self.ax_phase_od.xaxis.get_ticklabels(), visible=False) - plt.setp(self.ax_phase_d.xaxis.get_ticklabels(), visible=False) - self.ax_phase_od.set_xlabel('') - self.ax_phase_d.set_xlabel('') - - txr = self.mt_obj.Tipper.mag_real*\ - np.sin(self.mt_obj.Tipper.angle_real*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - tyr = self.mt_obj.Tipper.mag_real*\ - np.cos(self.mt_obj.Tipper.angle_real*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - - txi = self.mt_obj.Tipper.mag_imag*\ - np.sin(self.mt_obj.Tipper.angle_imag*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - tyi = self.mt_obj.Tipper.mag_imag*\ - np.cos(self.mt_obj.Tipper.angle_imag*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - - ## original data tipper - txr_o = self.mt_obj.Tipper.mag_real*\ - np.sin(self._mt_obj.Tipper.angle_real*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - tyr_o = self.mt_obj.Tipper.mag_real*\ - np.cos(self._mt_obj.Tipper.angle_real*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - - txi_o = self.mt_obj.Tipper.mag_imag*\ - np.sin(self._mt_obj.Tipper.angle_imag*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) - tyi_o = self.mt_obj.Tipper.mag_imag*\ - np.cos(self._mt_obj.Tipper.angle_imag*np.pi/180+\ - np.pi*self.plot_properties.arrow_direction) + #set th xaxis tick labels to invisible + plt.setp(self.ax_phase_od.xaxis.get_ticklabels(), visible=False) + plt.setp(self.ax_phase_d.xaxis.get_ticklabels(), visible=False) + self.ax_phase_od.set_xlabel('') + self.ax_phase_d.set_xlabel('') + + kw_xx['color'] = self.plot_properties.arrow_color_real + kw_yy['color'] = self.plot_properties.arrow_color_imag + + # plot magnitude of real and imaginary induction vectors + if self.plot_properties.plot_original_data == True: + etro = mtplottools.plot_errorbar(self.ax_tip_m, + plot_period, + self._mt_obj.Tipper.mag_real, + self._mt_obj.Tipper.mag_err, + **kw_xx_o) + etio = mtplottools.plot_errorbar(self.ax_tip_m, + plot_period, + self._mt_obj.Tipper.mag_imag, + self._mt_obj.Tipper.mag_err, + **kw_yy_o) + ## plot angle of original data + etro = mtplottools.plot_errorbar(self.ax_tip_a, + plot_period, + self._mt_obj.Tipper.angle_real%360, + self._mt_obj.Tipper.angle_err, + **kw_xx_o) + etio = mtplottools.plot_errorbar(self.ax_tip_a, + plot_period, + self._mt_obj.Tipper.angle_imag%360, + self._mt_obj.Tipper.angle_err, + **kw_yy_o) + + # plot magnitude of edited induction vectors + etr = mtplottools.plot_errorbar(self.ax_tip_m, + plot_period, + self.mt_obj.Tipper.mag_real, + self.mt_obj.Tipper.mag_err, + **kw_xx) + eti = mtplottools.plot_errorbar(self.ax_tip_m, + plot_period, + self.mt_obj.Tipper.mag_imag, + self.mt_obj.Tipper.mag_err, + **kw_yy) + # plot angle of edited data + etr = mtplottools.plot_errorbar(self.ax_tip_a, + plot_period, + self.mt_obj.Tipper.angle_real%360, + self.mt_obj.Tipper.angle_err, + **kw_xx) + eti = mtplottools.plot_errorbar(self.ax_tip_a, + plot_period, + self.mt_obj.Tipper.angle_imag%360, + self.mt_obj.Tipper.angle_err, + **kw_yy) + + #--> set axes properties for magnitude and angle of induction vectors + for aa, ax in enumerate([self.ax_tip_m, self.ax_tip_a]): + if aa == 0: + ax.set_ylabel('Magnitude', fontdict=font_dict) +# elif aa == 1: +# ax.set_ylabel('Angle (deg)', fontdict=font_dict) - kw_tr = {'lw' : self.plot_properties.lw, - 'facecolor' : self.plot_properties.arrow_color_real, - 'edgecolor' : self.plot_properties.arrow_color_real, - 'head_length' : self.plot_properties.arrow_head_length, - 'head_width' : self.plot_properties.arrow_head_width, - 'length_includes_head' : False} - kw_ti = {'lw' : self.plot_properties.lw, - 'facecolor' : self.plot_properties.arrow_color_imag, - 'edgecolor' : self.plot_properties.arrow_color_imag, - 'head_length' : self.plot_properties.arrow_head_length, - 'head_width' : self.plot_properties.arrow_head_width, - 'length_includes_head' : False} - - kw_tr_o = {'lw' : self.plot_properties.lw, - 'facecolor' : self.plot_properties.cteo, - 'edgecolor' : self.plot_properties.cteo, - 'head_length' : self.plot_properties.arrow_head_length, - 'head_width' : self.plot_properties.arrow_head_width, - 'length_includes_head' : False} - kw_ti_o = {'lw' : self.plot_properties.lw, - 'facecolor' : self.plot_properties.ctmo, - 'edgecolor' : self.plot_properties.ctmo, - 'head_length' : self.plot_properties.arrow_head_length, - 'head_width' : self.plot_properties.arrow_head_width, - 'length_includes_head' : False} - - nt = len(txr) + ax.set_xlim(self.plot_properties.xlimits) + ax.set_xscale('log') + ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), + lw=.25) - for aa in range(nt): - xlenr = txr[aa]*np.log10(plot_period[aa]) - xleni = txi[aa]*np.log10(plot_period[aa]) - - xlenr_o = txr_o[aa]*np.log10(plot_period[aa]) - xleni_o = txi_o[aa]*np.log10(plot_period[aa]) - - #--> plot real arrows - # plot original data - if self.plot_properties.plot_original_data == True: - self.ax_tip_r.arrow(np.log10(plot_period[aa]), - 0, - xlenr_o, - tyr_o[aa], - **kw_tr_o) - - self.ax_tip_i.arrow(np.log10(plot_period[aa]), - 0, - xleni_o, - tyi_o[aa], - **kw_ti_o) - self.ax_tip_r.arrow(np.log10(plot_period[aa]), - 0, - xlenr, - tyr[aa], - **kw_tr) - - - if aa == 0: - t_real = self.ax_tip_r.plot(0, 0, - self.plot_properties.arrow_color_real) - - #--> plot imaginary arrows - # plot original data - - - self.ax_tip_i.arrow(np.log10(plot_period[aa]), - 0, - xleni, - tyi[aa], - **kw_ti) - - if aa == 0: - t_imag = self.ax_tip_i.plot(0, 0, - self.plot_properties.arrow_color_imag) - - #make a line at 0 for reference - self.ax_tip_r.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) - self.ax_tip_i.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) - - #set axis properties - - for aa, ax in enumerate([self.ax_tip_r, self.ax_tip_i]): - ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), - np.log10(self.plot_properties.xlimits[1])) - - tklabels = [] - xticks = [] - - for tt, tk in enumerate(ax.get_xticks()): - try: - tklabels.append(mtplottools.labeldict[tk]) - xticks.append(tk) - except KeyError: - pass - ax.set_xticks(xticks) - ax.set_xticklabels(tklabels, - fontdict={'size':self.plot_properties.fs}) - #need to reset the xlimits caouse they get reset when calling - #set_ticks for some reason - ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), - np.log10(self.plot_properties.xlimits[1])) - - ax.yaxis.set_major_locator(MultipleLocator(.2)) - ax.yaxis.set_minor_locator(MultipleLocator(.1)) - ax.set_xlabel('Period (s)', fontdict=font_dict) - if aa == 0: - ax.legend([t_real[0]], - ['Real Tipper'], - loc=3, - markerscale=1, - borderaxespad=.01, - handletextpad=.2, - borderpad=.02) - - if aa == 1: - ax.legend([t_imag[0]], - ['Imag Tipper'], - loc=3, + self.ax_tip_m.legend((etr[0], eti[0]), + ('Re{T}', 'Im{T}'), + loc=2, markerscale=1, borderaxespad=.01, + labelspacing=.07, handletextpad=.2, - borderpad=.02) - - #self.axt.set_xscale('log') - if self.plot_properties.tipper_limits is None: - tmax = max([tyr.max(), tyi.max()]) - if tmax > 1: - tmax = .899 + borderpad=.04) +# self.ax_tip_a.legend((etr[0], eti[0]), +# ('Ang (Re{T})', 'Ang (Im{T})'), +# loc=2, +# markerscale=1, +# borderaxespad=.02, +# labelspacing=.02, +# handletextpad=.2, +# borderpad=.02) - tmin = min([tyr.min(), tyi.min()]) - if tmin < -1: - tmin = -.899 - self.plot_properties.tipper_limits = (tmin-.1, tmax+.1) - - ax.set_ylim(self.plot_properties.tipper_limits) - ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), - lw=.25) - + self.ax_tip_m.set_ylim(self.plot_properties.tipper_mag_limits) + self.ax_tip_a.set_ylim(self.plot_properties.tipper_angle_limits) + + # set the last label to be an empty string for easier reading + for ax in [self.ax_tip_m, self.ax_tip_a]: + y_labels = ax.get_yticks().tolist() + y_labels[-1] = '' + ax.set_yticklabels(y_labels) + + ## --> plot tipper + #if self.plot_tipper == True: + #set th xaxis tick labels to invisible + + +# txr = self.mt_obj.Tipper.mag_real*\ +# np.sin(self.mt_obj.Tipper.angle_real*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# tyr = self.mt_obj.Tipper.mag_real*\ +# np.cos(self.mt_obj.Tipper.angle_real*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# +# txi = self.mt_obj.Tipper.mag_imag*\ +# np.sin(self.mt_obj.Tipper.angle_imag*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# tyi = self.mt_obj.Tipper.mag_imag*\ +# np.cos(self.mt_obj.Tipper.angle_imag*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# +# ## original data tipper +# txr_o = self.mt_obj.Tipper.mag_real*\ +# np.sin(self._mt_obj.Tipper.angle_real*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# tyr_o = self.mt_obj.Tipper.mag_real*\ +# np.cos(self._mt_obj.Tipper.angle_real*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# +# txi_o = self.mt_obj.Tipper.mag_imag*\ +# np.sin(self._mt_obj.Tipper.angle_imag*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# tyi_o = self.mt_obj.Tipper.mag_imag*\ +# np.cos(self._mt_obj.Tipper.angle_imag*np.pi/180+\ +# np.pi*self.plot_properties.arrow_direction) +# +# kw_tr = {'lw' : self.plot_properties.lw, +# 'facecolor' : self.plot_properties.arrow_color_real, +# 'edgecolor' : self.plot_properties.arrow_color_real, +# 'head_length' : self.plot_properties.arrow_head_length, +# 'head_width' : self.plot_properties.arrow_head_width, +# 'length_includes_head' : False, +# 'picker' : 3} +# kw_ti = {'lw' : self.plot_properties.lw, +# 'facecolor' : self.plot_properties.arrow_color_imag, +# 'edgecolor' : self.plot_properties.arrow_color_imag, +# 'head_length' : self.plot_properties.arrow_head_length, +# 'head_width' : self.plot_properties.arrow_head_width, +# 'length_includes_head' : False, +# 'picker' : 3} +# +# kw_tr_o = {'lw' : self.plot_properties.lw, +# 'facecolor' : self.plot_properties.cteo, +# 'edgecolor' : self.plot_properties.cteo, +# 'head_length' : self.plot_properties.arrow_head_length, +# 'head_width' : self.plot_properties.arrow_head_width, +# 'length_includes_head' : False} +# kw_ti_o = {'lw' : self.plot_properties.lw, +# 'facecolor' : self.plot_properties.ctmo, +# 'edgecolor' : self.plot_properties.ctmo, +# 'head_length' : self.plot_properties.arrow_head_length, +# 'head_width' : self.plot_properties.arrow_head_width, +# 'length_includes_head' : False} +# +# nt = len(txr) +# +# for aa in range(nt): +# xlenr = txr[aa]*np.log10(plot_period[aa]) +# xleni = txi[aa]*np.log10(plot_period[aa]) +# +# xlenr_o = txr_o[aa]*np.log10(plot_period[aa]) +# xleni_o = txi_o[aa]*np.log10(plot_period[aa]) +# +# #--> plot real arrows +# # plot original data +# if self.plot_properties.plot_original_data == True: +# self.ax_tip_r.arrow(np.log10(plot_period[aa]), +# 0, +# xlenr_o, +# tyr_o[aa], +# **kw_tr_o) +# +# self.ax_tip_i.arrow(np.log10(plot_period[aa]), +# 0, +# xleni_o, +# tyi_o[aa], +# **kw_ti_o) +# self.ax_tip_r.arrow(np.log10(plot_period[aa]), +# 0, +# xlenr, +# tyr[aa], +# **kw_tr) +# +# +# if aa == 0: +# t_real = self.ax_tip_r.plot(0, 0, +# self.plot_properties.arrow_color_real) +# +# #--> plot imaginary arrows +# # plot original data +# +# +# self.ax_tip_i.arrow(np.log10(plot_period[aa]), +# 0, +# xleni, +# tyi[aa], +# **kw_ti) +# +# if aa == 0: +# t_imag = self.ax_tip_i.plot(0, 0, +# self.plot_properties.arrow_color_imag) +# +# #make a line at 0 for reference +# self.ax_tip_r.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) +# self.ax_tip_i.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) +# +# #set axis properties +# +# for aa, ax in enumerate([self.ax_tip_r, self.ax_tip_i]): +# ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), +# np.log10(self.plot_properties.xlimits[1])) +# +# tklabels = [] +# xticks = [] +# +# for tt, tk in enumerate(ax.get_xticks()): +# try: +# tklabels.append(mtplottools.labeldict[tk]) +# xticks.append(tk) +# except KeyError: +# pass +# ax.set_xticks(xticks) +# ax.set_xticklabels(tklabels, +# fontdict={'size':self.plot_properties.fs}) +# #need to reset the xlimits caouse they get reset when calling +# #set_ticks for some reason +# ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), +# np.log10(self.plot_properties.xlimits[1])) +# +# ax.yaxis.set_major_locator(MultipleLocator(.2)) +# ax.yaxis.set_minor_locator(MultipleLocator(.1)) +# ax.set_xlabel('Period (s)', fontdict=font_dict) +# if aa == 0: +# ax.legend([t_real[0]], +# ['Real Tipper'], +# loc=3, +# markerscale=1, +# borderaxespad=.01, +# handletextpad=.2, +# borderpad=.02) +# +# if aa == 1: +# ax.legend([t_imag[0]], +# ['Imag Tipper'], +# loc=3, +# markerscale=1, +# borderaxespad=.01, +# handletextpad=.2, +# borderpad=.02) +# +# #self.axt.set_xscale('log') +# if self.plot_properties.tipper_limits is None: +# tmax = max([tyr.max(), tyi.max()]) +# if tmax > 1: +# tmax = .899 +# +# tmin = min([tyr.min(), tyi.min()]) +# if tmin < -1: +# tmin = -.899 +# +# self.plot_properties.tipper_limits = (tmin-.1, tmax+.1) +# +# ax.set_ylim(self.plot_properties.tipper_limits) +# ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), +# lw=.25) +# ## --> need to be sure to draw the figure self.mpl_widget.draw() @@ -818,17 +1097,125 @@ def redraw_plot(self): self.plot() def on_pick(self, event): - pass + """ + mask a data point when it is clicked on. + """ + data_point = event.artist + data_period = data_point.get_xdata()[event.ind] + data_value = data_point.get_ydata()[event.ind] + + mask_kw = {'color' : self.plot_properties.mask_color, + 'marker' : self.plot_properties.mask_marker, + 'ms' : self.plot_properties.mask_ms, + 'mew' : self.plot_properties.mask_mew} + + # modify Z + if event.mouseevent.button == 1: + self._edited_mask = True + if self._ax_index < 2: + d_index = np.where(self.mt_obj.Z.resistivity == data_value) + comp_ii = d_index[0][0] + comp_jj = d_index[1][0] + comp_kk = d_index[2][0] + + # mask point in impedance object + self.mt_obj.Z.z[d_index] = 0.0+0.0*1j + + self._ax.plot(data_period, data_value, **mask_kw) + + # mask phase as well + if self._ax_index == 0: + if comp_jj == 1 and comp_kk == 0: + self.ax_phase_od.plot(data_period, + self.mt_obj.Z.phase[d_index]+180, + **mask_kw) + else: + self.ax_phase_od.plot(data_period, + self.mt_obj.Z.phase[d_index], + **mask_kw) + elif self._ax_index == 1: + self.ax_phase_d.plot(data_period, + self.mt_obj.Z.phase[d_index], + **mask_kw) + self._ax.figure.canvas.draw() +# if event.mouseevent.button == 1: +# # mask the point in the edited data +# if self._ax_index < 4: +# pass +# # plot the point as masked +# self._ax.plot(data_period, data_value, color=(.7, .7, .7), +# marker=self.mted, ms=self.ms) +# +# # Increase error bars +# if event.mouseevent.button == 3: +# # make sure just checking the top plots +# ax_index = self._ax_index%len(self._err_list) +# +# #put the new error into the error array +# if len(self.ax_list) == 8: +# err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, +# self._comp_index_x, self._comp_index_y] +# err = err+abs(err)*.05 +# print err +# self.modem_data.mt_dict[self.station].Z.zerr[p_index, +# self._comp_index_x, self._comp_index_y] = err +# elif len(self.ax_list) == 12: +# if self._ax_index == 4 or self._ax_index == 5 or \ +# self._ax_index == 10 or self._ax_index == 11: +# err = self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, +# self._comp_index_x, self._comp_index_y] +# self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, +# self._comp_index_x, self._comp_index_y] += abs(err)*.05 +# else: +# err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, +# self._comp_index_x, self._comp_index_y] +# self.modem_data.mt_dict[self.station].Z.zerr[p_index, +# self._comp_index_x, self._comp_index_y] += abs(err)*.05 +# +# # make error bar array +# eb = self._err_list[ax_index][2].get_paths()[p_index].vertices +# +# # make ecap array +# ecap_l = self._err_list[ax_index][0].get_data()[1][p_index] +# ecap_u = self._err_list[ax_index][1].get_data()[1][p_index] +# +# # change apparent resistivity error +# neb_u = eb[0,1]-.025*abs(eb[0,1]) +# neb_l = eb[1,1]+.025*abs(eb[1,1]) +# ecap_l = ecap_l-.025*abs(ecap_l) +# ecap_u = ecap_u+.025*abs(ecap_u) +# +# #set the new error bar values +# eb[0,1] = neb_u +# eb[1,1] = neb_l +# +# #reset the error bars and caps +# ncap_l = self._err_list[ax_index][0].get_data() +# ncap_u = self._err_list[ax_index][1].get_data() +# ncap_l[1][p_index] = ecap_l +# ncap_u[1][p_index] = ecap_u +# +# #set the values +# self._err_list[ax_index][0].set_data(ncap_l) +# self._err_list[ax_index][1].set_data(ncap_u) +# self._err_list[ax_index][2].get_paths()[p_index].vertices = eb +# +# # need to redraw the figure +# self._ax.figure.canvas.draw() def in_axes(self, event): - pass + """ + check to see which axis the mouse is in + """ + self._ax = event.inaxes - #@QtCore.pyqtSlot(str) - #def normal_output(self, message): - # self.output_box.moveCursor(QtGui.QTextCursor.End) - # self.output_box.insertPlainText(message) - + # find the component index so that it can be masked + for ax_index, ax in enumerate(self.ax_list): + if ax == event.inaxes: + self._ax_index = ax_index + + #============================================================================== # Plot setting #============================================================================== @@ -864,7 +1251,8 @@ def __init__(self, parent, **kwargs): self.phase_limits_od = kwargs.pop('phase_limits_od', None) self.phase_limits_d = kwargs.pop('phase_limits_d', None) - self.tipper_limits = kwargs.pop('tipper_limits', None) + self.tipper_mag_limits = kwargs.pop('tipper_mag_limits', None) + self.tipper_angle_limits = kwargs.pop('tipper_angle_limits', None) self.subplot_wspace = kwargs.pop('subplot_wspace', .15) self.subplot_hspace = kwargs.pop('subplot_hspace', .00) @@ -882,14 +1270,19 @@ def __init__(self, parent, **kwargs): self.legend_border_pad = kwargs.pop('legend_border_pad', .15) self.arrow_direction = kwargs.pop('arrow_direction', 0) - self.arrow_color_real = kwargs.pop('arrow_color_real', 'k') - self.arrow_color_imag = kwargs.pop('arrow_color_imag', 'b') + self.arrow_color_real = kwargs.pop('arrow_color_real', (.4, 0, .2)) + self.arrow_color_imag = kwargs.pop('arrow_color_imag', (0, .9, .9)) self.arrow_head_width = kwargs.pop('arrow_head_width', .05) self.arrow_head_length = kwargs.pop('arrow_head_length', .05) self.plot_z = kwargs.pop('plot_z', False) self.plot_original_data = kwargs.pop('plot_original_data', True) + self.mask_marker = kwargs.pop('mask_marker', 'x') + self.mask_ms = kwargs.pop('mask_ms', 10) + self.mask_mew = kwargs.pop('mask_mew', 3) + self.mask_color = kwargs.pop('mask_color', 'k') + #self.setup_ui() def setup_ui(self): From c9eaa6402d0a0fdfd95300b9cc65300e39d2a060 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 4 Apr 2016 12:21:11 -0700 Subject: [PATCH 023/124] changed tipper plots to plot amplitude of Tx and Ty --- mtpy/gui/edi_editor.py | 406 +++++++++++++---------------------------- 1 file changed, 123 insertions(+), 283 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index fee05568..e890612a 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -269,6 +269,11 @@ def setup_ui(self): self.tools_label = QtGui.QLabel("Tools") self.tools_label.setFont(header_font) + ## apply edits button + self.edits_apply_button = QtGui.QPushButton() + self.edits_apply_button.setText("Apply Edits") + self.edits_apply_button.pressed.connect(self.edits_apply) + ## revert back to original data self.revert_button = QtGui.QPushButton() self.revert_button.setText("Revert back to orginal data") @@ -342,6 +347,7 @@ def setup_ui(self): info_layout.addWidget(self.remove_distortion_button) info_layout.addLayout(rot_layout) info_layout.addWidget(self.tools_label) + info_layout.addWidget(self.edits_apply_button) info_layout.addWidget(self.revert_button) info_layout.addWidget(self.save_edits_button) info_layout.addItem(v_space) @@ -513,6 +519,14 @@ def rotate_estimate_strike(self): strike_plot.fold = False strike_plot.plot_range = 'data' strike_plot.plot() + + def edits_apply(self): + """ + apply edits, well edits are already made, but replot without edited + points + """ + + self.redraw_plot() def revert_back(self): @@ -832,48 +846,48 @@ def plot(self): if self.plot_properties.plot_original_data == True: etro = mtplottools.plot_errorbar(self.ax_tip_m, plot_period, - self._mt_obj.Tipper.mag_real, - self._mt_obj.Tipper.mag_err, + self._mt_obj.Tipper.amplitude[:, 0, 0], + self._mt_obj.Tipper.amplitude_err[:, 0, 0], **kw_xx_o) - etio = mtplottools.plot_errorbar(self.ax_tip_m, - plot_period, - self._mt_obj.Tipper.mag_imag, - self._mt_obj.Tipper.mag_err, - **kw_yy_o) +# etio = mtplottools.plot_errorbar(self.ax_tip_m, +# plot_period, +# self._mt_obj.Tipper.tipper[:, 0, 0].imag, +# self._mt_obj.Tipper.tippererr[:, 0, 0], +# **kw_yy_o) ## plot angle of original data etro = mtplottools.plot_errorbar(self.ax_tip_a, plot_period, - self._mt_obj.Tipper.angle_real%360, - self._mt_obj.Tipper.angle_err, + self._mt_obj.Tipper.amplitude[:, 0, 1], + self._mt_obj.Tipper.amplitude_err[:, 0, 1], **kw_xx_o) - etio = mtplottools.plot_errorbar(self.ax_tip_a, - plot_period, - self._mt_obj.Tipper.angle_imag%360, - self._mt_obj.Tipper.angle_err, - **kw_yy_o) - +# etio = mtplottools.plot_errorbar(self.ax_tip_a, +# plot_period, +# self._mt_obj.Tipper.tipper[:, 0, 1].imag, +# self._mt_obj.Tipper.tippererr[:, 0, 1], +# **kw_yy_o) +# # plot magnitude of edited induction vectors etr = mtplottools.plot_errorbar(self.ax_tip_m, plot_period, - self.mt_obj.Tipper.mag_real, - self.mt_obj.Tipper.mag_err, + self.mt_obj.Tipper.amplitude[:, 0, 0], + self.mt_obj.Tipper.amplitude_err[:, 0, 0], **kw_xx) - eti = mtplottools.plot_errorbar(self.ax_tip_m, - plot_period, - self.mt_obj.Tipper.mag_imag, - self.mt_obj.Tipper.mag_err, - **kw_yy) - # plot angle of edited data +# eti = mtplottools.plot_errorbar(self.ax_tip_m, +# plot_period, +# self.mt_obj.Tipper.tipper[:, 0, 0].imag, +# self.mt_obj.Tipper.tippererr[:, 0, 0], +# **kw_yy) +# # plot angle of edited data etr = mtplottools.plot_errorbar(self.ax_tip_a, plot_period, - self.mt_obj.Tipper.angle_real%360, - self.mt_obj.Tipper.angle_err, + self.mt_obj.Tipper.amplitude[:, 0, 1], + self.mt_obj.Tipper.amplitude_err[:, 0, 1], **kw_xx) - eti = mtplottools.plot_errorbar(self.ax_tip_a, - plot_period, - self.mt_obj.Tipper.angle_imag%360, - self.mt_obj.Tipper.angle_err, - **kw_yy) +# eti = mtplottools.plot_errorbar(self.ax_tip_a, +# plot_period, +# self.mt_obj.Tipper.tipper[:, 0, 1].imag, +# self.mt_obj.Tipper.tippererr[:, 0, 1], +# **kw_yy) #--> set axes properties for magnitude and angle of induction vectors for aa, ax in enumerate([self.ax_tip_m, self.ax_tip_a]): @@ -887,22 +901,14 @@ def plot(self): ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), lw=.25) - self.ax_tip_m.legend((etr[0], eti[0]), - ('Re{T}', 'Im{T}'), - loc=2, - markerscale=1, - borderaxespad=.01, - labelspacing=.07, - handletextpad=.2, - borderpad=.04) -# self.ax_tip_a.legend((etr[0], eti[0]), -# ('Ang (Re{T})', 'Ang (Im{T})'), +# self.ax_tip_m.legend((etr[0], eti[0]), +# ('Re{T}', 'Im{T}'), # loc=2, # markerscale=1, -# borderaxespad=.02, -# labelspacing=.02, +# borderaxespad=.01, +# labelspacing=.07, # handletextpad=.2, -# borderpad=.02) +# borderpad=.04) self.ax_tip_m.set_ylim(self.plot_properties.tipper_mag_limits) @@ -912,182 +918,7 @@ def plot(self): for ax in [self.ax_tip_m, self.ax_tip_a]: y_labels = ax.get_yticks().tolist() y_labels[-1] = '' - ax.set_yticklabels(y_labels) - - ## --> plot tipper - #if self.plot_tipper == True: - #set th xaxis tick labels to invisible - - -# txr = self.mt_obj.Tipper.mag_real*\ -# np.sin(self.mt_obj.Tipper.angle_real*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# tyr = self.mt_obj.Tipper.mag_real*\ -# np.cos(self.mt_obj.Tipper.angle_real*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# -# txi = self.mt_obj.Tipper.mag_imag*\ -# np.sin(self.mt_obj.Tipper.angle_imag*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# tyi = self.mt_obj.Tipper.mag_imag*\ -# np.cos(self.mt_obj.Tipper.angle_imag*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# -# ## original data tipper -# txr_o = self.mt_obj.Tipper.mag_real*\ -# np.sin(self._mt_obj.Tipper.angle_real*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# tyr_o = self.mt_obj.Tipper.mag_real*\ -# np.cos(self._mt_obj.Tipper.angle_real*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# -# txi_o = self.mt_obj.Tipper.mag_imag*\ -# np.sin(self._mt_obj.Tipper.angle_imag*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# tyi_o = self.mt_obj.Tipper.mag_imag*\ -# np.cos(self._mt_obj.Tipper.angle_imag*np.pi/180+\ -# np.pi*self.plot_properties.arrow_direction) -# -# kw_tr = {'lw' : self.plot_properties.lw, -# 'facecolor' : self.plot_properties.arrow_color_real, -# 'edgecolor' : self.plot_properties.arrow_color_real, -# 'head_length' : self.plot_properties.arrow_head_length, -# 'head_width' : self.plot_properties.arrow_head_width, -# 'length_includes_head' : False, -# 'picker' : 3} -# kw_ti = {'lw' : self.plot_properties.lw, -# 'facecolor' : self.plot_properties.arrow_color_imag, -# 'edgecolor' : self.plot_properties.arrow_color_imag, -# 'head_length' : self.plot_properties.arrow_head_length, -# 'head_width' : self.plot_properties.arrow_head_width, -# 'length_includes_head' : False, -# 'picker' : 3} -# -# kw_tr_o = {'lw' : self.plot_properties.lw, -# 'facecolor' : self.plot_properties.cteo, -# 'edgecolor' : self.plot_properties.cteo, -# 'head_length' : self.plot_properties.arrow_head_length, -# 'head_width' : self.plot_properties.arrow_head_width, -# 'length_includes_head' : False} -# kw_ti_o = {'lw' : self.plot_properties.lw, -# 'facecolor' : self.plot_properties.ctmo, -# 'edgecolor' : self.plot_properties.ctmo, -# 'head_length' : self.plot_properties.arrow_head_length, -# 'head_width' : self.plot_properties.arrow_head_width, -# 'length_includes_head' : False} -# -# nt = len(txr) -# -# for aa in range(nt): -# xlenr = txr[aa]*np.log10(plot_period[aa]) -# xleni = txi[aa]*np.log10(plot_period[aa]) -# -# xlenr_o = txr_o[aa]*np.log10(plot_period[aa]) -# xleni_o = txi_o[aa]*np.log10(plot_period[aa]) -# -# #--> plot real arrows -# # plot original data -# if self.plot_properties.plot_original_data == True: -# self.ax_tip_r.arrow(np.log10(plot_period[aa]), -# 0, -# xlenr_o, -# tyr_o[aa], -# **kw_tr_o) -# -# self.ax_tip_i.arrow(np.log10(plot_period[aa]), -# 0, -# xleni_o, -# tyi_o[aa], -# **kw_ti_o) -# self.ax_tip_r.arrow(np.log10(plot_period[aa]), -# 0, -# xlenr, -# tyr[aa], -# **kw_tr) -# -# -# if aa == 0: -# t_real = self.ax_tip_r.plot(0, 0, -# self.plot_properties.arrow_color_real) -# -# #--> plot imaginary arrows -# # plot original data -# -# -# self.ax_tip_i.arrow(np.log10(plot_period[aa]), -# 0, -# xleni, -# tyi[aa], -# **kw_ti) -# -# if aa == 0: -# t_imag = self.ax_tip_i.plot(0, 0, -# self.plot_properties.arrow_color_imag) -# -# #make a line at 0 for reference -# self.ax_tip_r.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) -# self.ax_tip_i.plot(np.log10(plot_period), [0]*nt, 'k', lw=.5) -# -# #set axis properties -# -# for aa, ax in enumerate([self.ax_tip_r, self.ax_tip_i]): -# ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), -# np.log10(self.plot_properties.xlimits[1])) -# -# tklabels = [] -# xticks = [] -# -# for tt, tk in enumerate(ax.get_xticks()): -# try: -# tklabels.append(mtplottools.labeldict[tk]) -# xticks.append(tk) -# except KeyError: -# pass -# ax.set_xticks(xticks) -# ax.set_xticklabels(tklabels, -# fontdict={'size':self.plot_properties.fs}) -# #need to reset the xlimits caouse they get reset when calling -# #set_ticks for some reason -# ax.set_xlim(np.log10(self.plot_properties.xlimits[0]), -# np.log10(self.plot_properties.xlimits[1])) -# -# ax.yaxis.set_major_locator(MultipleLocator(.2)) -# ax.yaxis.set_minor_locator(MultipleLocator(.1)) -# ax.set_xlabel('Period (s)', fontdict=font_dict) -# if aa == 0: -# ax.legend([t_real[0]], -# ['Real Tipper'], -# loc=3, -# markerscale=1, -# borderaxespad=.01, -# handletextpad=.2, -# borderpad=.02) -# -# if aa == 1: -# ax.legend([t_imag[0]], -# ['Imag Tipper'], -# loc=3, -# markerscale=1, -# borderaxespad=.01, -# handletextpad=.2, -# borderpad=.02) -# -# #self.axt.set_xscale('log') -# if self.plot_properties.tipper_limits is None: -# tmax = max([tyr.max(), tyi.max()]) -# if tmax > 1: -# tmax = .899 -# -# tmin = min([tyr.min(), tyi.min()]) -# if tmin < -1: -# tmin = -.899 -# -# self.plot_properties.tipper_limits = (tmin-.1, tmax+.1) -# -# ax.set_ylim(self.plot_properties.tipper_limits) -# ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), -# lw=.25) -# + ax.set_yticklabels(y_labels) ## --> need to be sure to draw the figure self.mpl_widget.draw() @@ -1112,7 +943,7 @@ def on_pick(self, event): # modify Z if event.mouseevent.button == 1: self._edited_mask = True - if self._ax_index < 2: + if self._ax_index == 0 or self._ax_index == 1: d_index = np.where(self.mt_obj.Z.resistivity == data_value) comp_ii = d_index[0][0] comp_jj = d_index[1][0] @@ -1138,71 +969,80 @@ def on_pick(self, event): self.mt_obj.Z.phase[d_index], **mask_kw) self._ax.figure.canvas.draw() -# if event.mouseevent.button == 1: -# # mask the point in the edited data -# if self._ax_index < 4: -# pass -# # plot the point as masked -# self._ax.plot(data_period, data_value, color=(.7, .7, .7), -# marker=self.mted, ms=self.ms) -# -# # Increase error bars -# if event.mouseevent.button == 3: -# # make sure just checking the top plots -# ax_index = self._ax_index%len(self._err_list) -# -# #put the new error into the error array -# if len(self.ax_list) == 8: -# err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, -# self._comp_index_x, self._comp_index_y] -# err = err+abs(err)*.05 -# print err -# self.modem_data.mt_dict[self.station].Z.zerr[p_index, -# self._comp_index_x, self._comp_index_y] = err -# elif len(self.ax_list) == 12: -# if self._ax_index == 4 or self._ax_index == 5 or \ -# self._ax_index == 10 or self._ax_index == 11: -# err = self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, -# self._comp_index_x, self._comp_index_y] -# self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, -# self._comp_index_x, self._comp_index_y] += abs(err)*.05 -# else: -# err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, -# self._comp_index_x, self._comp_index_y] -# self.modem_data.mt_dict[self.station].Z.zerr[p_index, -# self._comp_index_x, self._comp_index_y] += abs(err)*.05 -# -# # make error bar array -# eb = self._err_list[ax_index][2].get_paths()[p_index].vertices -# -# # make ecap array -# ecap_l = self._err_list[ax_index][0].get_data()[1][p_index] -# ecap_u = self._err_list[ax_index][1].get_data()[1][p_index] -# -# # change apparent resistivity error -# neb_u = eb[0,1]-.025*abs(eb[0,1]) -# neb_l = eb[1,1]+.025*abs(eb[1,1]) -# ecap_l = ecap_l-.025*abs(ecap_l) -# ecap_u = ecap_u+.025*abs(ecap_u) + + # mask phase points + elif self._ax_index == 2 or self._ax_index == 3: + try: + d_index = np.where(self.mt_obj.Z.phase == data_value) + comp_ii = d_index[0][0] + comp_jj = d_index[1][0] + comp_kk = d_index[2][0] + except IndexError: + d_index = np.where(self.mt_obj.Z.phase == data_value-180) + comp_ii = d_index[0][0] + comp_jj = d_index[1][0] + comp_kk = d_index[2][0] + + # mask point in impedance object + self.mt_obj.Z.z[d_index] = 0.0+0.0*1j + + # mask the point in the axis selected + self._ax.plot(data_period, data_value, **mask_kw) + + # mask resistivity as well + if self._ax_index == 2: + self.ax_res_od.plot(data_period, + self.mt_obj.Z.resistivity[d_index], + **mask_kw) + elif self._ax_index == 3: + self.ax_res_d.plot(data_period, + self.mt_obj.Z.resistivity[d_index], + **mask_kw) + self._ax.figure.canvas.draw() + +# # mask tipper points +# elif self._ax_index == 4: +# data_value = np.round(data_value, 8) +# # the tipper is only rank on so jj will always be 0 +# comp_jj = 0 +# +# # find the tipper magnitude just picked, need to test for both +# # real and imaginary, then real again incase imaginary is +# # picked, probably a better way to do this. +# try: +# d_index = np.where(np.round(self.mt_obj.Tipper.mag_real, +# 8) == data_value) +# comp_ii = d_index[0][0] +# comp_kk = 0 +# except IndexError: +# try: +# d_index = np.where(np.round(self.mt_obj.Tipper.mag_imag, +# 8) == data_value) +# comp_ii = d_index[0][0] +# comp_kk = 1 +# except IndexError: +# d_index = np.where(np.round(self.mt_obj.Tipper.mag_real, +# 8) == data_value) +# comp_ii = d_index[0][0] +# comp_kk = 0 # -# #set the new error bar values -# eb[0,1] = neb_u -# eb[1,1] = neb_l -# -# #reset the error bars and caps -# ncap_l = self._err_list[ax_index][0].get_data() -# ncap_u = self._err_list[ax_index][1].get_data() -# ncap_l[1][p_index] = ecap_l -# ncap_u[1][p_index] = ecap_u # -# #set the values -# self._err_list[ax_index][0].set_data(ncap_l) -# self._err_list[ax_index][1].set_data(ncap_u) -# self._err_list[ax_index][2].get_paths()[p_index].vertices = eb -# -# # need to redraw the figure -# self._ax.figure.canvas.draw() - +# +# self._ax.plot(data_period, data_value, **mask_kw) +# +# #plot in cooresponding direction mode +# if comp_kk == 0: +# plot_angle = self.mt_obj.Tipper.angle_real[comp_ii]%360 +# elif comp_kk == 1: +# plot_angle = self.mt_obj.Tipper.angle_imag[comp_ii]%360 +# self.ax_tip_a.plot(data_period, plot_angle, **mask_kw) +# +# self._ax.figure.canvas.draw() +# +# # mask the point +# self.mt_obj.Tipper.tipper[comp_ii, comp_jj, comp_kk] = 0.0+0.0j +# self.mt_obj.Tipper._compute_mag_direction() + def in_axes(self, event): """ check to see which axis the mouse is in From 9d6b2af3dcfaf04311c0d87ce42e3fa3f0048caa Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 4 Apr 2016 18:30:43 -0700 Subject: [PATCH 024/124] added interpolation option, added plot setting. Need to add in editable .edi file --- mtpy/gui/edi_editor.py | 1223 +++++++++++++++++++++------------------- 1 file changed, 636 insertions(+), 587 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index e890612a..2e4094aa 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -15,7 +15,7 @@ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure from matplotlib.ticker import MultipleLocator -import mtpy.imaging.mtplottools as mtplottools +import mtpy.imaging.mtplottools as mtplt import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec import numpy as np @@ -157,6 +157,10 @@ def __init__(self): self._edited_mask = False self.dir_path = os.getcwd() + self.interp_period_min = .001 + self.interp_period_max = 1000. + self.interp_period_num = 24 + self.setup_ui() @@ -265,6 +269,27 @@ def setup_ui(self): self.rotate_estimate_strike_button = QtGui.QPushButton("Estimate Strike") self.rotate_estimate_strike_button.pressed.connect(self.rotate_estimate_strike) + + ## interpolate data + self.interp_label = QtGui.QLabel("Interpolate Periods") + self.interp_label.setFont(header_font) + + self.interp_apply_button = QtGui.QPushButton() + self.interp_apply_button.setText("Apply") + self.interp_apply_button.pressed.connect(self.interp_apply) + + self.interp_min_label = QtGui.QLabel("Min") + self.interp_min_edit = QtGui.QLineEdit("{0:.4e}".format(self.interp_period_min)) + self.interp_min_edit.editingFinished.connect(self.interp_set_min) + + self.interp_max_label = QtGui.QLabel("Max") + self.interp_max_edit = QtGui.QLineEdit("{0:.4e}".format(self.interp_period_max)) + self.interp_max_edit.editingFinished.connect(self.interp_set_max) + + self.interp_num_label = QtGui.QLabel("Num") + self.interp_num_edit = QtGui.QLineEdit("{0:.0f}".format(self.interp_period_num)) + self.interp_num_edit.editingFinished.connect(self.interp_set_num) + ## tools label self.tools_label = QtGui.QLabel("Tools") self.tools_label.setFont(header_font) @@ -285,9 +310,25 @@ def setup_ui(self): self.save_edits_button.pressed.connect(self.save_edi_file) ## horizontal line - h_line = QtGui.QFrame(self) - h_line.setFrameShape(QtGui.QFrame.HLine) - h_line.setFrameShadow(QtGui.QFrame.Sunken) + h_line_01 = QtGui.QFrame(self) + h_line_01.setFrameShape(QtGui.QFrame.HLine) + h_line_01.setFrameShadow(QtGui.QFrame.Sunken) + + h_line_02 = QtGui.QFrame(self) + h_line_02.setFrameShape(QtGui.QFrame.HLine) + h_line_02.setFrameShadow(QtGui.QFrame.Sunken) + + h_line_03 = QtGui.QFrame(self) + h_line_03.setFrameShape(QtGui.QFrame.HLine) + h_line_03.setFrameShadow(QtGui.QFrame.Sunken) + + h_line_04 = QtGui.QFrame(self) + h_line_04.setFrameShape(QtGui.QFrame.HLine) + h_line_04.setFrameShadow(QtGui.QFrame.Sunken) + + h_line_05 = QtGui.QFrame(self) + h_line_05.setFrameShape(QtGui.QFrame.HLine) + h_line_05.setFrameShadow(QtGui.QFrame.Sunken) ## vertical spacer v_space = QtGui.QSpacerItem(20, 20, @@ -337,15 +378,31 @@ def setup_ui(self): rot_layout.addWidget(self.rotate_angle_t_edit, 3, 1) rot_layout.addWidget(self.rotate_estimate_strike_button, 4, 0, 1, 2) + ## interpolate + interp_layout = QtGui.QGridLayout() + interp_layout.addWidget(self.interp_label, 0, 0) + interp_layout.addWidget(self.interp_apply_button, 0, 1) + interp_layout.addWidget(self.interp_min_label, 1, 0) + interp_layout.addWidget(self.interp_min_edit, 1, 1) + interp_layout.addWidget(self.interp_max_label, 2, 0) + interp_layout.addWidget(self.interp_max_edit, 2, 1) + interp_layout.addWidget(self.interp_num_label, 3, 0) + interp_layout.addWidget(self.interp_num_edit, 3, 1) + ## left panel info_layout = QtGui.QVBoxLayout() info_layout.addLayout(meta_layout) - info_layout.addWidget(h_line) - info_layout.addLayout(ss_layout) - info_layout.addWidget(h_line) + + info_layout.addWidget(h_line_01) info_layout.addWidget(self.remove_distortion_label) info_layout.addWidget(self.remove_distortion_button) + info_layout.addWidget(h_line_02) + info_layout.addLayout(ss_layout) + info_layout.addWidget(h_line_03) info_layout.addLayout(rot_layout) + info_layout.addWidget(h_line_04) + info_layout.addLayout(interp_layout) + info_layout.addWidget(h_line_05) info_layout.addWidget(self.tools_label) info_layout.addWidget(self.edits_apply_button) info_layout.addWidget(self.revert_button) @@ -520,6 +577,46 @@ def rotate_estimate_strike(self): strike_plot.plot_range = 'data' strike_plot.plot() + def interp_set_min(self): + self.interp_period_min = float(str(self.interp_min_edit.text())) + self.interp_min_edit.setText('{0:.4e}'.format(self.interp_period_min)) + + def interp_set_max(self): + self.interp_period_max = float(str(self.interp_max_edit.text())) + self.interp_max_edit.setText('{0:.4e}'.format(self.interp_period_max)) + + def interp_set_num(self): + self.interp_period_num = int(str(self.interp_num_edit.text())) + self.interp_num_edit.setText('{0:.0f}'.format(self.interp_period_num)) + + def interp_apply(self): + """ + interpolate data on to a new period list that is equally spaced in + log space. + """ + + new_period = np.logspace(np.log10(self.interp_period_min), + np.log10(self.interp_period_max), + num=self.interp_period_num) + + if self._edited_dist == True or self._edited_mask == True or \ + self._edited_rot == True or self._edited_ss == True: + new_z, new_tip = self.mt_obj.interpolate(1./new_period) + self.mt_obj.Z = new_z + self.mt_obj.Tipper = new_tip + + else: + new_z, new_tip = self._mt_obj.interpolate(1./new_period) + self.mt_obj.Z = new_z + self.mt_obj.Tipper = new_tip + + self.redraw_plot() + + print 'Interpolated data onto periods:' + for ff in new_period: + print ' {0:.6e}'.format(ff) + + def edits_apply(self): """ apply edits, well edits are already made, but replot without edited @@ -590,6 +687,7 @@ def plot(self): # make some useful internal variabls font_dict = {'size':self.plot_properties.fs+2, 'weight':'bold'} plot_period = 1./self.mt_obj.Z.freq + plot_period_o = 1./self._mt_obj.Z.freq if np.all(self.mt_obj.Tipper.tipper == 0) == True: print 'No Tipper data for station {0}'.format(self.mt_obj.station) @@ -598,8 +696,8 @@ def plot(self): self.plot_tipper = True #set x-axis limits from short period to long period - self.plot_properties.xlimits = (10**(np.floor(np.log10(plot_period.min()))), - 10**(np.ceil(np.log10((plot_period.max()))))) + self.plot_properties.xlimits = (10**(np.floor(np.log10(plot_period_o.min()))), + 10**(np.ceil(np.log10((plot_period_o.max()))))) #--> make key word dictionaries for plotting kw_xx = {'color':self.plot_properties.cted, @@ -670,84 +768,88 @@ def plot(self): sharex=self.ax_res_od) # include tipper, r = real, i = imaginary - self.ax_tip_m = self.figure.add_subplot(gs[2, 0], + self.ax_tip_x = self.figure.add_subplot(gs[2, 0], sharex=self.ax_res_od) - self.ax_tip_a = self.figure.add_subplot(gs[2, 1], + self.ax_tip_y = self.figure.add_subplot(gs[2, 1], sharex=self.ax_res_od) self.ax_list = [self.ax_res_od, self.ax_res_d, self.ax_phase_od, self.ax_phase_d, - self.ax_tip_m, self.ax_tip_a] + self.ax_tip_x, self.ax_tip_y] ## --> plot apparent resistivity, phase and tipper ## plot orginal apparent resistivity if self.plot_properties.plot_original_data == True: - orxx = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzxx_o], - self._mt_obj.Z.resistivity[nzxx_o, 0, 0], - self._mt_obj.Z.resistivity_err[nzxx_o, 0, 0], - **kw_xx_o) - orxy = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzxy_o], - self._mt_obj.Z.resistivity[nzxy_o, 0, 1], - self._mt_obj.Z.resistivity_err[nzxy_o, 0, 1], - **kw_xx_o) - oryx = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzyx_o], - self._mt_obj.Z.resistivity[nzyx_o, 1, 0], - self._mt_obj.Z.resistivity_err[nzyx_o, 1, 0], - **kw_yy_o) - oryy = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzyy_o], - self._mt_obj.Z.resistivity[nzyy_o, 1, 1], - self._mt_obj.Z.resistivity_err[nzyy_o, 1, 1], - **kw_yy_o) + orxx = mtplt.plot_errorbar(self.ax_res_d, + plot_period_o[nzxx_o], + self._mt_obj.Z.resistivity[nzxx_o, 0, 0], + self._mt_obj.Z.resistivity_err[nzxx_o, 0, 0], + **kw_xx_o) + orxy = mtplt.plot_errorbar(self.ax_res_od, + plot_period_o[nzxy_o], + self._mt_obj.Z.resistivity[nzxy_o, 0, 1], + self._mt_obj.Z.resistivity_err[nzxy_o, 0, 1], + **kw_xx_o) + oryx = mtplt.plot_errorbar(self.ax_res_od, + plot_period_o[nzyx_o], + self._mt_obj.Z.resistivity[nzyx_o, 1, 0], + self._mt_obj.Z.resistivity_err[nzyx_o, 1, 0], + **kw_yy_o) + oryy = mtplt.plot_errorbar(self.ax_res_d, + plot_period_o[nzyy_o], + self._mt_obj.Z.resistivity[nzyy_o, 1, 1], + self._mt_obj.Z.resistivity_err[nzyy_o, 1, 1], + **kw_yy_o) # plot original phase - epxx = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzxx_o], - self._mt_obj.Z.phase[nzxx_o, 0, 0], - self._mt_obj.Z.phase_err[nzxx_o, 0, 0], - **kw_xx_o) - epxy = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzxy_o], - self._mt_obj.Z.phase[nzxy_o, 0, 1], - self._mt_obj.Z.phase_err[nzxy_o, 0, 1], - **kw_xx_o) - epyx = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzyx_o], - self._mt_obj.Z.phase[nzyx_o, 1, 0]+180, - self._mt_obj.Z.phase_err[nzyx_o, 1, 0], - **kw_yy_o) - epyy = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzyy_o], - self._mt_obj.Z.phase[nzyy_o, 1, 1], - self._mt_obj.Z.phase_err[nzyy_o, 1, 1], - **kw_yy_o) + epxx = mtplt.plot_errorbar(self.ax_phase_d, + plot_period_o[nzxx_o], + self._mt_obj.Z.phase[nzxx_o, 0, 0], + self._mt_obj.Z.phase_err[nzxx_o, 0, 0], + **kw_xx_o) + epxy = mtplt.plot_errorbar(self.ax_phase_od, + plot_period_o[nzxy_o], + self._mt_obj.Z.phase[nzxy_o, 0, 1], + self._mt_obj.Z.phase_err[nzxy_o, 0, 1], + **kw_xx_o) + epyx = mtplt.plot_errorbar(self.ax_phase_od, + plot_period_o[nzyx_o], + self._mt_obj.Z.phase[nzyx_o, 1, 0]+180, + self._mt_obj.Z.phase_err[nzyx_o, 1, 0], + **kw_yy_o) + epyy = mtplt.plot_errorbar(self.ax_phase_d, + plot_period_o[nzyy_o], + self._mt_obj.Z.phase[nzyy_o, 1, 1], + self._mt_obj.Z.phase_err[nzyy_o, 1, 1], + **kw_yy_o) # plot manipulated data apparent resistivity - erxx = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzxx], - self.mt_obj.Z.resistivity[nzxx, 0, 0], - self.mt_obj.Z.resistivity_err[nzxx, 0, 0], - **kw_xx) - erxy = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzxy], - self.mt_obj.Z.resistivity[nzxy, 0, 1], - self.mt_obj.Z.resistivity_err[nzxy, 0, 1], - **kw_xx) - eryx = mtplottools.plot_errorbar(self.ax_res_od, - plot_period[nzyx], - self.mt_obj.Z.resistivity[nzyx, 1, 0], - self.mt_obj.Z.resistivity_err[nzyx, 1, 0], - **kw_yy) - eryy = mtplottools.plot_errorbar(self.ax_res_d, - plot_period[nzyy], - self.mt_obj.Z.resistivity[nzyy, 1, 1], - self.mt_obj.Z.resistivity_err[nzyy, 1, 1], - **kw_yy) + erxx = mtplt.plot_errorbar(self.ax_res_d, + plot_period[nzxx], + self.mt_obj.Z.resistivity[nzxx, 0, 0], + self.mt_obj.Z.resistivity_err[nzxx, 0, 0], + **kw_xx) + erxy = mtplt.plot_errorbar(self.ax_res_od, + plot_period[nzxy], + self.mt_obj.Z.resistivity[nzxy, 0, 1], + self.mt_obj.Z.resistivity_err[nzxy, 0, 1], + **kw_xx) + eryx = mtplt.plot_errorbar(self.ax_res_od, + plot_period[nzyx], + self.mt_obj.Z.resistivity[nzyx, 1, 0], + self.mt_obj.Z.resistivity_err[nzyx, 1, 0], + **kw_yy) + eryy = mtplt.plot_errorbar(self.ax_res_d, + plot_period[nzyy], + self.mt_obj.Z.resistivity[nzyy, 1, 1], + self.mt_obj.Z.resistivity_err[nzyy, 1, 1], + **kw_yy) #--> set axes properties for apparent resistivity + if self.plot_properties.res_limits_d != None: + self.ax_res_d.set_ylim(self.plot_properties.res_limits_d) + if self.plot_properties.res_limits_od != None: + self.ax_res_od.set_ylim(self.plot_properties.res_limits_od) for aa, ax in enumerate([self.ax_res_od, self.ax_res_d]): plt.setp(ax.get_xticklabels(), visible=False) if aa == 0: @@ -765,7 +867,7 @@ def plot(self): 10**np.ceil(np.log10(ylim[1]))) ax.set_ylim(ylimits) ylabels = [' ', ' ']+\ - [mtplottools.labeldict[ii] for ii + [mtplt.labeldict[ii] for ii in np.arange(np.log10(ylimits[0])+1, np.log10(ylimits[1])+1, 1)] ax.set_yticklabels(ylabels) @@ -786,34 +888,37 @@ def plot(self): labelspacing=.07, handletextpad=.2, borderpad=.02) - self.ax_res_d.set_ylim(self.plot_properties.res_limits_d) - self.ax_res_od.set_ylim(self.plot_properties.res_limits_od) + ##--> plot phase # plot manipulated data - epxx = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzxx], - self.mt_obj.Z.phase[nzxx, 0, 0], - self.mt_obj.Z.phase_err[nzxx, 0, 0], - **kw_xx) - epxy = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzxy], - self.mt_obj.Z.phase[nzxy, 0, 1], - self.mt_obj.Z.phase_err[nzxy, 0, 1], - **kw_xx) - epyx = mtplottools.plot_errorbar(self.ax_phase_od, - plot_period[nzyx], - self.mt_obj.Z.phase[nzyx, 1, 0]+180, - self.mt_obj.Z.phase_err[nzyx, 1, 0], - **kw_yy) - epyy = mtplottools.plot_errorbar(self.ax_phase_d, - plot_period[nzyy], - self.mt_obj.Z.phase[nzyy, 1, 1], - self.mt_obj.Z.phase_err[nzyy, 1, 1], - **kw_yy) + epxx = mtplt.plot_errorbar(self.ax_phase_d, + plot_period[nzxx], + self.mt_obj.Z.phase[nzxx, 0, 0], + self.mt_obj.Z.phase_err[nzxx, 0, 0], + **kw_xx) + epxy = mtplt.plot_errorbar(self.ax_phase_od, + plot_period[nzxy], + self.mt_obj.Z.phase[nzxy, 0, 1], + self.mt_obj.Z.phase_err[nzxy, 0, 1], + **kw_xx) + epyx = mtplt.plot_errorbar(self.ax_phase_od, + plot_period[nzyx], + self.mt_obj.Z.phase[nzyx, 1, 0]+180, + self.mt_obj.Z.phase_err[nzyx, 1, 0], + **kw_yy) + epyy = mtplt.plot_errorbar(self.ax_phase_d, + plot_period[nzyy], + self.mt_obj.Z.phase[nzyy, 1, 1], + self.mt_obj.Z.phase_err[nzyy, 1, 1], + **kw_yy) #--> set axes properties + if self.plot_properties.phase_limits_od != None: + self.ax_phase_od.set_ylim(self.plot_properties.phase_limits_od) + if self.plot_properties.phase_limits_d != None: + self.ax_phase_d.set_ylim(self.plot_properties.phase_limits_d) for aa, ax in enumerate([self.ax_phase_od, self.ax_phase_d]): ax.set_xlabel('Period (s)', font_dict) ax.set_xscale('log') @@ -823,8 +928,7 @@ def plot(self): #ax.yaxis.set_minor_locator(MultipleLocator(5)) ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), lw=.25) - self.ax_phase_od.set_ylim(self.plot_properties.phase_limits_od) - self.ax_phase_d.set_ylim(self.plot_properties.phase_limits_d) + # set the last label to be an empty string for easier reading for ax in [self.ax_phase_od, self.ax_phase_d]: @@ -839,92 +943,86 @@ def plot(self): self.ax_phase_od.set_xlabel('') self.ax_phase_d.set_xlabel('') - kw_xx['color'] = self.plot_properties.arrow_color_real - kw_yy['color'] = self.plot_properties.arrow_color_imag - - # plot magnitude of real and imaginary induction vectors - if self.plot_properties.plot_original_data == True: - etro = mtplottools.plot_errorbar(self.ax_tip_m, - plot_period, - self._mt_obj.Tipper.amplitude[:, 0, 0], - self._mt_obj.Tipper.amplitude_err[:, 0, 0], - **kw_xx_o) -# etio = mtplottools.plot_errorbar(self.ax_tip_m, -# plot_period, -# self._mt_obj.Tipper.tipper[:, 0, 0].imag, -# self._mt_obj.Tipper.tippererr[:, 0, 0], -# **kw_yy_o) - ## plot angle of original data - etro = mtplottools.plot_errorbar(self.ax_tip_a, - plot_period, - self._mt_obj.Tipper.amplitude[:, 0, 1], - self._mt_obj.Tipper.amplitude_err[:, 0, 1], - **kw_xx_o) -# etio = mtplottools.plot_errorbar(self.ax_tip_a, -# plot_period, -# self._mt_obj.Tipper.tipper[:, 0, 1].imag, -# self._mt_obj.Tipper.tippererr[:, 0, 1], -# **kw_yy_o) -# - # plot magnitude of edited induction vectors - etr = mtplottools.plot_errorbar(self.ax_tip_m, - plot_period, - self.mt_obj.Tipper.amplitude[:, 0, 0], - self.mt_obj.Tipper.amplitude_err[:, 0, 0], - **kw_xx) -# eti = mtplottools.plot_errorbar(self.ax_tip_m, -# plot_period, -# self.mt_obj.Tipper.tipper[:, 0, 0].imag, -# self.mt_obj.Tipper.tippererr[:, 0, 0], -# **kw_yy) -# # plot angle of edited data - etr = mtplottools.plot_errorbar(self.ax_tip_a, - plot_period, - self.mt_obj.Tipper.amplitude[:, 0, 1], - self.mt_obj.Tipper.amplitude_err[:, 0, 1], - **kw_xx) -# eti = mtplottools.plot_errorbar(self.ax_tip_a, -# plot_period, -# self.mt_obj.Tipper.tipper[:, 0, 1].imag, -# self.mt_obj.Tipper.tippererr[:, 0, 1], -# **kw_yy) - + # make sure there is tipper data to plot + if self.plot_tipper == True: + + kw_tx = dict(kw_xx) + kw_ty = dict(kw_yy) + kw_tx['color'] = self.plot_properties.tipper_x_color + kw_ty['color'] = self.plot_properties.tipper_y_color + + ntx = np.nonzero(self.mt_obj.Tipper.amplitude[:, 0, 0])[0] + nty = np.nonzero(self.mt_obj.Tipper.amplitude[:, 0, 1])[0] + ntx_o = np.nonzero(self._mt_obj.Tipper.amplitude[:, 0, 0])[0] + nty_o = np.nonzero(self._mt_obj.Tipper.amplitude[:, 0, 1])[0] + + # plot magnitude of real and imaginary induction vectors + if self.plot_properties.plot_original_data == True: + etxo = mtplt.plot_errorbar(self.ax_tip_x, + plot_period_o[ntx_o], + self._mt_obj.Tipper.amplitude[ntx_o, 0, 0], + self._mt_obj.Tipper.amplitude_err[ntx_o, 0, 0], + **kw_xx_o) + + etyo = mtplt.plot_errorbar(self.ax_tip_y, + plot_period_o[nty_o], + self._mt_obj.Tipper.amplitude[nty_o, 0, 1], + self._mt_obj.Tipper.amplitude_err[nty_o, 0, 1], + **kw_yy_o) + + # plot magnitude of edited induction vectors + etx = mtplt.plot_errorbar(self.ax_tip_x, + plot_period[ntx], + self.mt_obj.Tipper.amplitude[ntx, 0, 0], + self.mt_obj.Tipper.amplitude_err[ntx, 0, 0], + **kw_tx) + + ety = mtplt.plot_errorbar(self.ax_tip_y, + plot_period[nty], + self.mt_obj.Tipper.amplitude[nty, 0, 1], + self.mt_obj.Tipper.amplitude_err[nty, 0, 1], + **kw_ty) + + self.ax_tip_x.legend([etx[0]], + ['|Re{T}|'], + loc=2, + markerscale=1, + borderaxespad=.01, + handletextpad=.2, + borderpad=.05) + self.ax_tip_y.legend([ety[0]], + ['|Im{T}|'], + loc=2, + markerscale=1, + borderaxespad=.01, + handletextpad=.2, + borderpad=.05) + #--> set axes properties for magnitude and angle of induction vectors - for aa, ax in enumerate([self.ax_tip_m, self.ax_tip_a]): + if self.plot_properties.tipper_x_limits != None: + self.ax_tip_x.set_ylim(self.plot_properties.tipper_x_limits) + if self.plot_properties.tipper_y_limits != None: + self.ax_tip_y.set_ylim(self.plot_properties.tipper_y_limits) + for aa, ax in enumerate([self.ax_tip_x, self.ax_tip_y]): if aa == 0: ax.set_ylabel('Magnitude', fontdict=font_dict) -# elif aa == 1: -# ax.set_ylabel('Angle (deg)', fontdict=font_dict) - ax.set_xlim(self.plot_properties.xlimits) ax.set_xscale('log') ax.grid(True, alpha=.25, which='both', color=(.25, .25, .25), lw=.25) - -# self.ax_tip_m.legend((etr[0], eti[0]), -# ('Re{T}', 'Im{T}'), -# loc=2, -# markerscale=1, -# borderaxespad=.01, -# labelspacing=.07, -# handletextpad=.2, -# borderpad=.04) - - - self.ax_tip_m.set_ylim(self.plot_properties.tipper_mag_limits) - self.ax_tip_a.set_ylim(self.plot_properties.tipper_angle_limits) + + # set the last label to be an empty string for easier reading - for ax in [self.ax_tip_m, self.ax_tip_a]: + for ax in [self.ax_tip_x, self.ax_tip_y]: y_labels = ax.get_yticks().tolist() y_labels[-1] = '' ax.set_yticklabels(y_labels) - + ## --> need to be sure to draw the figure self.mpl_widget.draw() def redraw_plot(self): - self.figure.clf() self.plot() def on_pick(self, event): @@ -945,7 +1043,6 @@ def on_pick(self, event): self._edited_mask = True if self._ax_index == 0 or self._ax_index == 1: d_index = np.where(self.mt_obj.Z.resistivity == data_value) - comp_ii = d_index[0][0] comp_jj = d_index[1][0] comp_kk = d_index[2][0] @@ -968,20 +1065,13 @@ def on_pick(self, event): self.ax_phase_d.plot(data_period, self.mt_obj.Z.phase[d_index], **mask_kw) - self._ax.figure.canvas.draw() # mask phase points elif self._ax_index == 2 or self._ax_index == 3: try: d_index = np.where(self.mt_obj.Z.phase == data_value) - comp_ii = d_index[0][0] - comp_jj = d_index[1][0] - comp_kk = d_index[2][0] except IndexError: - d_index = np.where(self.mt_obj.Z.phase == data_value-180) - comp_ii = d_index[0][0] - comp_jj = d_index[1][0] - comp_kk = d_index[2][0] + d_index = np.where(self.mt_obj.Z.phase == data_value-180) # mask point in impedance object self.mt_obj.Z.z[d_index] = 0.0+0.0*1j @@ -998,50 +1088,25 @@ def on_pick(self, event): self.ax_res_d.plot(data_period, self.mt_obj.Z.resistivity[d_index], **mask_kw) - self._ax.figure.canvas.draw() -# # mask tipper points -# elif self._ax_index == 4: -# data_value = np.round(data_value, 8) -# # the tipper is only rank on so jj will always be 0 -# comp_jj = 0 -# -# # find the tipper magnitude just picked, need to test for both -# # real and imaginary, then real again incase imaginary is -# # picked, probably a better way to do this. -# try: -# d_index = np.where(np.round(self.mt_obj.Tipper.mag_real, -# 8) == data_value) -# comp_ii = d_index[0][0] -# comp_kk = 0 -# except IndexError: -# try: -# d_index = np.where(np.round(self.mt_obj.Tipper.mag_imag, -# 8) == data_value) -# comp_ii = d_index[0][0] -# comp_kk = 1 -# except IndexError: -# d_index = np.where(np.round(self.mt_obj.Tipper.mag_real, -# 8) == data_value) -# comp_ii = d_index[0][0] -# comp_kk = 0 -# -# -# -# self._ax.plot(data_period, data_value, **mask_kw) -# -# #plot in cooresponding direction mode -# if comp_kk == 0: -# plot_angle = self.mt_obj.Tipper.angle_real[comp_ii]%360 -# elif comp_kk == 1: -# plot_angle = self.mt_obj.Tipper.angle_imag[comp_ii]%360 -# self.ax_tip_a.plot(data_period, plot_angle, **mask_kw) -# -# self._ax.figure.canvas.draw() -# -# # mask the point -# self.mt_obj.Tipper.tipper[comp_ii, comp_jj, comp_kk] = 0.0+0.0j -# self.mt_obj.Tipper._compute_mag_direction() + # mask tipper Tx + elif self._ax_index == 4 or self._ax_index == 5: + data_value = np.round(data_value, 8) + d_index = np.where(np.round(self.mt_obj.Tipper.amplitude, + 8) == data_value) + + print d_index + + # mask point + self._ax.plot(data_period, data_value, **mask_kw) + + # set tipper data to 0 + self.mt_obj.Tipper.tipper[d_index] = 0.0+0.0j + self.mt_obj.Tipper.tippererr[d_index] = 0.0 + + self.mt_obj.Tipper._compute_amp_phase() + + self._ax.figure.canvas.draw() def in_axes(self, event): """ @@ -1071,28 +1136,38 @@ def __init__(self, parent, **kwargs): self.e_capthick = kwargs.pop('e_capthick', 1) self.e_capsize = kwargs.pop('e_capsize', 4) - #color mode self.cted = kwargs.pop('cted', (0, 0, .65)) self.ctmd = kwargs.pop('ctmd', (.65, 0, 0)) self.cteo = kwargs.pop('cted', (.5, .5, .5)) self.ctmo = kwargs.pop('ctmd', (.75, .75, .75)) + self.mted = kwargs.pop('mted', 's') self.mtmd = kwargs.pop('mtmd', 'o') - - #color for occam2d model - self.ctem = kwargs.pop('ctem', (0, .6, .3)) - self.ctmm = kwargs.pop('ctmm', (.9, 0, .8)) - self.mtem = kwargs.pop('mtem', '+') - self.mtmm = kwargs.pop('mtmm', '+') self.res_limits_od = kwargs.pop('res_limits_od', None) self.res_limits_d = kwargs.pop('res_limits_d', None) + self._res_limits_od_min = None + self._res_limits_od_max = None + self._res_limits_d_min = None + self._res_limits_d_max = None + self.phase_limits_od = kwargs.pop('phase_limits_od', None) - self.phase_limits_d = kwargs.pop('phase_limits_d', None) + self.phase_limits_d = kwargs.pop('phase_limits_d', None) + + self._phase_limits_od_min = None + self._phase_limits_od_max = None + self._phase_limits_d_min = None + self._phase_limits_d_max = None - self.tipper_mag_limits = kwargs.pop('tipper_mag_limits', None) - self.tipper_angle_limits = kwargs.pop('tipper_angle_limits', None) + self.tipper_x_limits = kwargs.pop('tipper_x_limits', None) + self.tipper_y_limits = kwargs.pop('tipper_y_limits', None) + + self._tip_x_limits_min = None + self._tip_x_limits_max = None + self._tip_y_limits_min = None + self._tip_y_limits_max = None + self.subplot_wspace = kwargs.pop('subplot_wspace', .15) self.subplot_hspace = kwargs.pop('subplot_hspace', .00) @@ -1101,21 +1176,9 @@ def __init__(self, parent, **kwargs): self.subplot_top = kwargs.pop('subplot_top', .93) self.subplot_bottom = kwargs.pop('subplot_bottom', .08) - self.legend_loc = kwargs.pop('legend_loc', 'upper center') - self.legend_pos = kwargs.pop('legend_pos', (.5, 1.11)) - self.legend_marker_scale = kwargs.pop('legend_marker_scale', 1) - self.legend_border_axes_pad = kwargs.pop('legend_border_axes_pad', .01) - self.legend_label_spacing = kwargs.pop('legend_label_spacing', 0.07) - self.legend_handle_text_pad = kwargs.pop('legend_handle_text_pad', .2) - self.legend_border_pad = kwargs.pop('legend_border_pad', .15) - - self.arrow_direction = kwargs.pop('arrow_direction', 0) - self.arrow_color_real = kwargs.pop('arrow_color_real', (.4, 0, .2)) - self.arrow_color_imag = kwargs.pop('arrow_color_imag', (0, .9, .9)) - self.arrow_head_width = kwargs.pop('arrow_head_width', .05) - self.arrow_head_length = kwargs.pop('arrow_head_length', .05) - - self.plot_z = kwargs.pop('plot_z', False) + self.tipper_x_color = kwargs.pop('tipper_x_color', (.4, 0, .2)) + self.tipper_y_color = kwargs.pop('tipper_y_color', (0, .9, .9)) + self.plot_original_data = kwargs.pop('plot_original_data', True) self.mask_marker = kwargs.pop('mask_marker', 'x') @@ -1126,391 +1189,377 @@ def __init__(self, parent, **kwargs): #self.setup_ui() def setup_ui(self): - #--> line properties - fs_label = QtGui.QLabel('Font Size') - fs_edit = QtGui.QLineEdit() - fs_edit.setText('{0:.1f}'.format(self.fs)) - fs_edit.textChanged[str].connect(self.set_text_fs) - - lw_label = QtGui.QLabel('Line Width') - lw_edit = QtGui.QLineEdit() - lw_edit.setText('{0:.1f}'.format(self.lw)) - lw_edit.textChanged[str].connect(self.set_text_lw) - - e_capthick_label = QtGui.QLabel('Error cap thickness') - e_capthick_edit = QtGui.QLineEdit() - e_capthick_edit.setText('{0:.1f}'.format(self.e_capthick)) - e_capthick_edit.textChanged[str].connect(self.set_text_e_capthick) - - e_capsize_label = QtGui.QLabel('Error cap size') - e_capsize_edit = QtGui.QLineEdit() - e_capsize_edit.setText('{0:.1f}'.format(self.e_capsize)) - e_capsize_edit.textChanged[str].connect(self.set_text_e_capsize) - - grid_line = QtGui.QGridLayout() - grid_line.setSpacing(10) - - grid_line.addWidget(fs_label, 1, 0) - grid_line.addWidget(fs_edit, 1, 1) - - grid_line.addWidget(lw_label, 1, 2) - grid_line.addWidget(lw_edit, 1, 3) - - grid_line.addWidget(e_capthick_label, 1, 4) - grid_line.addWidget(e_capthick_edit, 1, 5) - - grid_line.addWidget(e_capsize_label, 1, 6) - grid_line.addWidget(e_capsize_edit, 1, 7) - - #--> marker properties - ms_label = QtGui.QLabel('Marker Size') - ms_edit = QtGui.QLineEdit() - ms_edit.setText('{0:.1f}'.format(self.ms)) - ms_edit.textChanged[str].connect(self.set_text_ms) - - dcxy_label = QtGui.QLabel('Data Color xy') - dcxy_edit = QtGui.QLineEdit() - dcxy_edit.setText('{0}'.format(self.cted)) - dcxy_edit.textChanged[str].connect(self.set_text_cted) - - dcyx_label = QtGui.QLabel('Data Color yx') - dcyx_edit = QtGui.QLineEdit() - dcyx_edit.setText('{0}'.format(self.ctmd)) - dcyx_edit.textChanged[str].connect(self.set_text_ctmd) - - dmxy_label = QtGui.QLabel('Data Marker xy') - dmxy_edit = QtGui.QLineEdit() - dmxy_edit.setText('{0}'.format(self.mted)) - dmxy_edit.textChanged[str].connect(self.set_text_mted) - - dmyx_label = QtGui.QLabel('Data Marker yx') - dmyx_edit = QtGui.QLineEdit() - dmyx_edit.setText('{0}'.format(self.mtmd)) - dmyx_edit.textChanged[str].connect(self.set_text_mtmd) - - mcxy_label = QtGui.QLabel('Model Color xy') - mcxy_edit = QtGui.QLineEdit() - mcxy_edit.setText('{0}'.format(self.ctem)) - mcxy_edit.textChanged[str].connect(self.set_text_ctem) - - mcyx_label = QtGui.QLabel('Model Color yx') - mcyx_edit = QtGui.QLineEdit() - mcyx_edit.setText('{0}'.format(self.ctmm)) - mcyx_edit.textChanged[str].connect(self.set_text_ctmm) - - mmxy_label = QtGui.QLabel('Model Marker xy') - mmxy_edit = QtGui.QLineEdit() - mmxy_edit.setText('{0}'.format(self.mtem)) - mmxy_edit.textChanged[str].connect(self.set_text_mtem) - - mmyx_label = QtGui.QLabel('Model Marker yx') - mmyx_edit = QtGui.QLineEdit() - mmyx_edit.setText('{0}'.format(self.mtmm)) - mmyx_edit.textChanged[str].connect(self.set_text_mtmm) - - marker_label = QtGui.QLabel('Maker Properties:') - - marker_grid = QtGui.QGridLayout() - marker_grid.setSpacing(10) - - marker_grid.addWidget(marker_label, 1, 0) - marker_grid.addWidget(ms_label, 1, 2) - marker_grid.addWidget(ms_edit, 1, 3) - - marker_grid.addWidget(dcxy_label, 2, 0) - marker_grid.addWidget(dcxy_edit, 2, 1) - - marker_grid.addWidget(dcyx_label, 2, 2) - marker_grid.addWidget(dcyx_edit, 2, 3) - - marker_grid.addWidget(dmxy_label, 2, 4) - marker_grid.addWidget(dmxy_edit, 2, 5) - - marker_grid.addWidget(dmyx_label, 2, 6) - marker_grid.addWidget(dmyx_edit, 2, 7) - - marker_grid.addWidget(mcxy_label, 3, 0) - marker_grid.addWidget(mcxy_edit, 3, 1) - - marker_grid.addWidget(mcyx_label, 3, 2) - marker_grid.addWidget(mcyx_edit, 3, 3) - - marker_grid.addWidget(mmxy_label, 3, 4) - marker_grid.addWidget(mmxy_edit, 3, 5) - - marker_grid.addWidget(mmyx_label, 3, 6) - marker_grid.addWidget(mmyx_edit, 3, 7) + """ + setup the user interface + """ + + self.fs_label = QtGui.QLabel("Font Size") + self.fs_edit = QtGui.QLineEdit("{0:.2f}".format(self.fs)) + self.fs_edit.editingFinished.connect(self.set_fs) + + self.lw_label = QtGui.QLabel("Line Width") + self.lw_edit = QtGui.QLineEdit("{0:.2f}".format(self.lw)) + self.lw_edit.editingFinished.connect(self.set_lw) + + self.ms_label = QtGui.QLabel("Marker Size") + self.ms_edit = QtGui.QLineEdit("{0:.2f}".format(self.ms)) + self.ms_edit.editingFinished.connect(self.set_ms) + + self.mted_label = QtGui.QLabel("Marker x components") + self.mted_combo = QtGui.QComboBox() + self.mted_combo.addItem(self.mted) + self.mted_combo.addItem('.') + self.mted_combo.addItem(',') + self.mted_combo.addItem('o') + self.mted_combo.addItem('v') + self.mted_combo.addItem('^') + self.mted_combo.addItem('<') + self.mted_combo.addItem('>') + self.mted_combo.addItem('s') + self.mted_combo.addItem('p') + self.mted_combo.addItem('*') + self.mted_combo.addItem('h') + self.mted_combo.addItem('H') + self.mted_combo.addItem('+') + self.mted_combo.addItem('x') + self.mted_combo.addItem('D') + self.mted_combo.addItem('d') + self.mted_combo.addItem('|') + self.mted_combo.addItem('_') + self.mted_combo.activated[str].connect(self.set_mted) + + self.mtmd_label = QtGui.QLabel("Marker y components") + self.mtmd_combo = QtGui.QComboBox() + self.mtmd_combo.addItem(self.mtmd) + self.mtmd_combo.addItem('.') + self.mtmd_combo.addItem(',') + self.mtmd_combo.addItem('o') + self.mtmd_combo.addItem('v') + self.mtmd_combo.addItem('^') + self.mtmd_combo.addItem('<') + self.mtmd_combo.addItem('>') + self.mtmd_combo.addItem('s') + self.mtmd_combo.addItem('p') + self.mtmd_combo.addItem('*') + self.mtmd_combo.addItem('h') + self.mtmd_combo.addItem('H') + self.mtmd_combo.addItem('+') + self.mtmd_combo.addItem('x') + self.mtmd_combo.addItem('D') + self.mtmd_combo.addItem('d') + self.mtmd_combo.addItem('|') + self.mtmd_combo.addItem('_') + self.mtmd_combo.activated[str].connect(self.set_mtmd) + + self.e_capsize_label = QtGui.QLabel("Error bar cap size") + self.e_capsize_edit = QtGui.QLineEdit("{0:.2f}".format(self.e_capsize)) + self.e_capsize_edit.editingFinished.connect(self.set_e_capsize) + + self.e_capthick_label = QtGui.QLabel("Error bar cap thickness") + self.e_capthick_edit = QtGui.QLineEdit("{0:.2f}".format(self.e_capthick)) + self.e_capthick_edit.editingFinished.connect(self.set_e_capthick) + + self.cted_button = QtGui.QPushButton("Set Z_xi Color") + self.cted_button.pressed.connect(self.set_cted) + + self.ctmd_button = QtGui.QPushButton("Set Z_yi Color") + self.ctmd_button.pressed.connect(self.set_ctmd) + + self.ctx_button = QtGui.QPushButton("Set T_x Color") + self.ctx_button.pressed.connect(self.set_ctx) + + self.cty_button = QtGui.QPushButton("Set T_y Color") + self.cty_button.pressed.connect(self.set_cty) + + self.cteo_button = QtGui.QPushButton("Set Original Data_xi Color") + self.cteo_button.pressed.connect(self.set_cteo) + + self.ctmo_button = QtGui.QPushButton("Set Original Data_yi Color") + self.ctmo_button.pressed.connect(self.set_ctmo) + + self.resod_limits_label = QtGui.QLabel("Off Diagonal Res. Limits (min, max)") + + self.resod_limits_min_edit = QtGui.QLineEdit() + self.resod_limits_min_edit.editingFinished.connect(self.set_resod_min) + + self.resod_limits_max_edit = QtGui.QLineEdit() + self.resod_limits_max_edit.editingFinished.connect(self.set_resod_max) + + self.resd_limits_label = QtGui.QLabel("Diagonal Res. Limits (min, max)") + + self.resd_limits_min_edit = QtGui.QLineEdit() + self.resd_limits_min_edit.editingFinished.connect(self.set_resd_min) + + self.resd_limits_max_edit = QtGui.QLineEdit() + self.resd_limits_max_edit.editingFinished.connect(self.set_resd_max) + + self.phaseod_limits_label = QtGui.QLabel("Off Diagonal phase. Limits (min, max)") + + self.phaseod_limits_min_edit = QtGui.QLineEdit() + self.phaseod_limits_min_edit.editingFinished.connect(self.set_phaseod_min) + + self.phaseod_limits_max_edit = QtGui.QLineEdit() + self.phaseod_limits_max_edit.editingFinished.connect(self.set_phaseod_max) + + self.phased_limits_label = QtGui.QLabel("Diagonal phase. Limits (min, max)") + + self.phased_limits_min_edit = QtGui.QLineEdit() + self.phased_limits_min_edit.editingFinished.connect(self.set_phased_min) + + self.phased_limits_max_edit = QtGui.QLineEdit() + self.phased_limits_max_edit.editingFinished.connect(self.set_phased_max) + + self.tip_x_limits_label = QtGui.QLabel("T_x limits (min, max)") + + self.tip_x_limits_min_edit = QtGui.QLineEdit() + self.tip_x_limits_min_edit.editingFinished.connect(self.set_tip_x_min) - #--> plot limits - ylimr_od_label = QtGui.QLabel('Res_od') - ylimr_od_edit = QtGui.QLineEdit() - ylimr_od_edit.setText('{0}'.format(self.res_limits_od)) - ylimr_od_edit.textChanged[str].connect(self.set_text_res_od) + self.tip_x_limits_max_edit = QtGui.QLineEdit() + self.tip_x_limits_max_edit.editingFinished.connect(self.set_tip_x_max) - ylimr_d_label = QtGui.QLabel('Res_d') - ylimr_d_edit = QtGui.QLineEdit() - ylimr_d_edit.setText('{0}'.format(self.res_limits_d)) - ylimr_d_edit.textChanged[str].connect(self.set_text_res_d) + self.tip_y_limits_label = QtGui.QLabel("T_y limits (min, max)") - ylimp_od_label = QtGui.QLabel('phase_od') - ylimp_od_edit = QtGui.QLineEdit() - ylimp_od_edit.setText('{0}'.format(self.phase_limits_od)) - ylimp_od_edit.textChanged[str].connect(self.set_text_phase_od) + self.tip_y_limits_min_edit = QtGui.QLineEdit() + self.tip_y_limits_min_edit.editingFinished.connect(self.set_tip_y_min) - ylimp_d_label = QtGui.QLabel('phase_d') - ylimp_d_edit = QtGui.QLineEdit() - ylimp_d_edit.setText('{0}'.format(self.phase_limits_d)) - ylimp_d_edit.textChanged[str].connect(self.set_text_phase_d) + self.tip_y_limits_max_edit = QtGui.QLineEdit() + self.tip_y_limits_max_edit.editingFinished.connect(self.set_tip_y_max) - limits_grid = QtGui.QGridLayout() - limits_grid.setSpacing(10) + self.update_button = QtGui.QPushButton("Update Settings") + self.update_button.pressed.connect(self.update_settings) + + ## --> layout + grid = QtGui.QGridLayout() + + grid.addWidget(self.fs_label, 0, 0) + grid.addWidget(self.fs_edit, 0, 1) + grid.addWidget(self.lw_label, 0, 2) + grid.addWidget(self.lw_edit, 0, 3) + grid.addWidget(self.ms_label, 1, 0) + grid.addWidget(self.ms_edit, 1, 1) + grid.addWidget(self.mted_label, 1, 2) + grid.addWidget(self.mted_combo, 1, 3) + grid.addWidget(self.mtmd_label, 1, 4) + grid.addWidget(self.mtmd_combo, 1, 5) + grid.addWidget(self.cted_button, 2, 0, 1, 3) + grid.addWidget(self.ctmd_button, 2, 3, 1, 3) + grid.addWidget(self.cteo_button, 3, 0, 1, 3) + grid.addWidget(self.ctmo_button, 3, 3, 1, 3) + grid.addWidget(self.ctx_button, 4, 0, 1, 3) + grid.addWidget(self.cty_button, 4, 3, 1, 3) + grid.addWidget(self.resod_limits_label, 5, 0) + grid.addWidget(self.resod_limits_min_edit, 5, 1) + grid.addWidget(self.resod_limits_max_edit, 5, 2) + grid.addWidget(self.resd_limits_label, 5, 3) + grid.addWidget(self.resd_limits_min_edit, 5, 4) + grid.addWidget(self.resd_limits_max_edit, 5, 5) + grid.addWidget(self.phaseod_limits_label, 6, 0) + grid.addWidget(self.phaseod_limits_min_edit, 6, 1) + grid.addWidget(self.phaseod_limits_max_edit, 6, 2) + grid.addWidget(self.phased_limits_label, 6, 3) + grid.addWidget(self.phased_limits_min_edit, 6, 4) + grid.addWidget(self.phased_limits_max_edit, 6, 5) + grid.addWidget(self.tip_x_limits_label, 7, 0) + grid.addWidget(self.tip_x_limits_min_edit, 7, 1) + grid.addWidget(self.tip_x_limits_max_edit, 7, 2) + grid.addWidget(self.tip_y_limits_label, 7, 3) + grid.addWidget(self.tip_y_limits_min_edit, 7, 4) + grid.addWidget(self.tip_y_limits_max_edit, 7, 5) + grid.addWidget(self.update_button, 10, 0, 1, 6) + + self.setLayout(grid) + self.setWindowTitle("Plot Settings") + self.show() - limits_label = QtGui.QLabel('Plot Limits: (Res=Real, Phase=Imaginary)' - ' --> input on a linear scale') - limits_grid.addWidget(limits_label, 1, 0, 1, 7) + def convert_color_to_qt(self, color): + """ + convert decimal tuple to QColor object + """ + r = int(color[0]*255) + g = int(color[1]*255) + b = int(color[2]*255) - limits_grid.addWidget(ylimr_od_label, 2, 0) - limits_grid.addWidget(ylimr_od_edit, 2, 1) - limits_grid.addWidget(ylimr_d_label, 2, 2) - limits_grid.addWidget(ylimr_d_edit, 2, 3) + return QtGui.QColor(r, g, b) - limits_grid.addWidget(ylimp_od_label, 3, 0) - limits_grid.addWidget(ylimp_od_edit, 3, 1) - limits_grid.addWidget(ylimp_d_label, 3, 2) - limits_grid.addWidget(ylimp_d_edit, 3, 3) + def set_fs(self): + self.fs = float(str(self.fs_edit.text())) + self.fs_edit.setText("{0:.2f}".format(self.fs)) - #--> legend properties - legend_pos_label = QtGui.QLabel('Legend Position') - legend_pos_edit = QtGui.QLineEdit() - legend_pos_edit.setText('{0}'.format(self.legend_pos)) - legend_pos_edit.textChanged[str].connect(self.set_text_legend_pos) + def set_lw(self): + self.lw = float(str(self.lw_edit.text())) + self.lw_edit.setText("{0:.2f}".format(self.lw)) - legend_grid = QtGui.QGridLayout() - legend_grid.setSpacing(10) + def set_ms(self): + self.ms = float(str(self.ms_edit.text())) + self.ms_edit.setText("{0:.2f}".format(self.ms)) - legend_grid.addWidget(QtGui.QLabel('Legend Properties:'), 1, 0) - legend_grid.addWidget(legend_pos_label, 1, 2,) - legend_grid.addWidget(legend_pos_edit, 1, 3) + def set_e_capsize(self): + self.e_capsize = float(str(self.e_capsize_edit.text())) + self.e_capsize_edit.setText("{0:.2f}".format(self.e_capsize)) - update_button = QtGui.QPushButton('Update') - update_button.clicked.connect(self.update_settings) + def set_e_capthick(self): + self.e_capthick = float(str(self.e_capthick_edit.text())) + self.e_capthick_edit.setText("{0:.2f}".format(self.e_capthick)) - vbox = QtGui.QVBoxLayout() - vbox.addLayout(grid_line) - vbox.addLayout(marker_grid) - vbox.addLayout(limits_grid) - vbox.addLayout(legend_grid) - vbox.addWidget(update_button) + def set_mted(self, text): + self.mted = text - self.setLayout(vbox) + def set_mtmd(self, text): + self.mtmd = text - self.setGeometry(300, 300, 350, 300) - self.resize(1350, 500) - self.setWindowTitle('Plot Settings') - self.show() - - def set_text_fs(self, text): + def set_resod_min(self): try: - self.fs = float(text) + self._res_limits_od_min = float(str(self.resod_limits_min_edit.text())) except ValueError: - print "Enter a float point number" - - def set_text_e_capthick(self, text): + self._res_limits_od_min = None + def set_resod_max(self): try: - self.e_capthick = float(text) + self._res_limits_od_max = float(str(self.resod_limits_max_edit.text())) except ValueError: - print "Enter a float point number" - - def set_text_e_capsize(self, text): + self._res_limits_od_max = None + + def set_resd_min(self): try: - self.e_capsize = float(text) + self._res_limits_d_min = float(str(self.resd_limits_min_edit.text())) except ValueError: - print "Enter a float point number" - - - def set_text_lw(self, text): + self._res_limits_d_min = None + def set_resd_max(self): try: - self.lw = float(text) + self._res_limits_d_max = float(str(self.resd_limits_max_edit.text())) except ValueError: - print "Enter a float point number" + self._res_limits_d_max = None - def set_text_ms(self, text): + def set_phaseod_min(self): try: - self.ms = float(text) + self._phase_limits_od_min = float(str(self.phaseod_limits_min_edit.text())) except ValueError: - print "Enter a float point number" - - def set_text_cted(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.cted = tuple(l_list) - - def set_text_ctmd(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctmd = tuple(l_list) - - def set_text_mted(self, text): + self._phase_limits_od_min = None + def set_phaseod_max(self): try: - self.mted = str(text) + self._phase_limits_od_max = float(str(self.phaseod_limits_max_edit.text())) except ValueError: - print "Enter a string" - - def set_text_mtmd(self, text): + self._phase_limits_od_max = None + + def set_phased_min(self): try: - self.mtmd = str(text) + self._phase_limits_d_min = float(str(self.phased_limits_min_edit.text())) except ValueError: - print "Enter a string" - - def set_text_ctem(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctem = tuple(l_list) - - def set_text_ctmm(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctmm = tuple(l_list) - - def set_text_mtem(self, text): + self._phase_limits_d_min = None + def set_phased_max(self): try: - self.mtem = str(text) + self._phase_limits_d_max = float(str(self.phased_limits_max_edit.text())) except ValueError: - print "Enter a string" + self._phase_limits_d_max = None - def set_text_mtmm(self, text): + def set_tip_x_min(self): try: - self.mtmm = str(text) + self._tip_x_limits_min = float(str(self.tip_x_limits_min_edit.text())) except ValueError: - print "Enter a string" - - def set_text_res_od(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 2: - print 'enter as (min, max)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 2: - self.res_limits_od = tuple(l_list) + self._tip_x_limits_min = None + def set_tip_x_max(self): + try: + self._tip_x_limits_max = float(str(self.tip_x_limits_max_edit.text())) + except ValueError: + self._tip_x_limits_max = None + + def set_tip_y_min(self): + try: + self._tip_y_limits_min = float(str(self.tip_y_limits_min_edit.text())) + except ValueError: + self._tip_y_limits_min = None + def set_tip_y_max(self): + try: + self._tip_y_limits_max = float(str(self.tip_y_limits_max_edit.text())) + except ValueError: + self._tip_y_limits_max = None + + + def set_cted(self): + initial_color = self.convert_color_to_qt(self.cted) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.cted = (r, g, b) + + def set_ctmd(self): + initial_color = self.convert_color_to_qt(self.ctmd) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.ctmd = (r, g, b) + + def set_ctx(self): + initial_color = self.convert_color_to_qt(self.tipper_x_color) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.tipper_x_color = (r, g, b) + + def set_cty(self): + initial_color = self.convert_color_to_qt(self.tipper_y_color) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.tipper_y_color = (r, g, b) + + def set_cteo(self): + initial_color = self.convert_color_to_qt(self.cteo) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.cteo = (r, g, b) + + def set_ctmo(self): + initial_color = self.convert_color_to_qt(self.ctmo) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.ctmo = (r, g, b) + + def update_settings(self): + if self._res_limits_od_min != None and self._res_limits_od_max != None: + self.res_limits_od = (self._res_limits_od_min, + self._res_limits_od_max) + else: + self.res_limits_od = None - def set_text_res_d(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 2: - print 'enter as (min, max)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 2: - self.res_limits_d = tuple(l_list) + if self._res_limits_d_min != None and self._res_limits_d_max != None: + self.res_limits_d = (self._res_limits_d_min, + self._res_limits_d_max) + else: + self.res_limits_d = None - def set_text_phase_od(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 2: - print 'enter as (min, max)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 2: - self.phase_limits_od = tuple(l_list) + if self._phase_limits_od_min != None and self._phase_limits_od_max != None: + self.phase_limits_od = (self._phase_limits_od_min, + self._phase_limits_od_max) + else: + self.phase_limits_od = None - def set_text_phase_d(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 2: - print 'enter as (min, max)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 2: - self.phase_limits_d = tuple(l_list) + if self._phase_limits_d_min != None and self._phase_limits_d_max != None: + self.phase_limits_d = (self._phase_limits_d_min, + self._phase_limits_d_max) + else: + self.phase_limits_d = None + if self._tip_x_limits_min != None and self._tip_x_limits_max != None: + self.tipper_x_limits = (self._tip_x_limits_min, + self._tip_x_limits_max) + else: + self.tipper_x_limits = None - def set_text_legend_pos(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 2: - print 'enter as (min, max)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 2: - self.legend_pos = tuple(l_list) + if self._tip_y_limits_min != None and self._tip_y_limits_max != None: + self.tipper_y_limits = (self._tip_y_limits_min, + self._tip_y_limits_max) + else: + self.tipper_y_limits = None - def update_settings(self): self.settings_updated.emit() #============================================================================== From 13c755cac14efe2e82a6d3a366f23ffad2183fdf Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 5 Apr 2016 17:17:58 -0700 Subject: [PATCH 025/124] fixed plotting tipper in modem_plot_response to plot if there is any tipper data. --- mtpy/gui/modem_plot_response.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index ea4b4282..2f0642f6 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -97,7 +97,7 @@ def __init__(self): def setupUi(self, MainWindow): MainWindow.setWindowTitle("Plot ModEM MT Response") - MainWindow.resize(1920, 1080) + MainWindow.setWindowState(QtCore.Qt.WindowMaximized) #make a central widget that everything is tied to. self.central_widget = QtGui.QWidget(MainWindow) @@ -426,7 +426,7 @@ def plot(self): self.figure.suptitle(str(self.station), fontdict=fontdict) #set the grid of subplots - if np.all(t_obj.tipper == 0.0) is True: + if np.all(t_obj.tipper == 0.0) == True: self.plot_tipper = False else: self.plot_tipper = True @@ -573,23 +573,23 @@ def plot(self): #plot tipper if self.plot_tipper == True: ertx = mtplottools.plot_errorbar(axtxr, - period, + period[ntx], t_obj.tipper[ntx, 0, 0].real, t_obj.tippererr[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtyr, - period, + period[nty], t_obj.tipper[nty, 0, 1].real, t_obj.tippererr[nty, 0, 0], **kw_yy) eptx = mtplottools.plot_errorbar(axtxi, - period, + period[ntx], t_obj.tipper[ntx, 0, 0].imag, t_obj.tippererr[ntx, 0, 1], **kw_xx) epty = mtplottools.plot_errorbar(axtyi, - period, + period[nty], t_obj.tipper[nty, 0, 1].imag, t_obj.tippererr[nty, 0, 1], **kw_yy) From 1c76b747db026643cfb4f4497dc9db1c9dca4809 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 6 Apr 2016 13:17:01 -0700 Subject: [PATCH 026/124] fixed format.convert_dms_tuple_to_string to output a string with decimal seconds --- mtpy/gui/edi_editor.py | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 2e4094aa..313591fa 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -130,7 +130,7 @@ def update_plot(self): self.plot_widget.redraw_plot() def edit_metadata(self): - pass + self.edi_txt_editor = EDITextEditor(None) #============================================================================== # Plot Widget @@ -1562,6 +1562,45 @@ def update_settings(self): self.settings_updated.emit() +#============================================================================== +# edi text editor +#============================================================================== +class EDITextEditor(QtGui.QWidget): + """ + class to edit the text of an .edi file + """ + + def __init__(self, edi_object): + super(EDITextEditor, self).__init__() + + self.edi_obj = edi_object + + self.setup_ui() + + def setup_ui(self): + + self.setWindowTitle("EDI Text Editor") + + # header label font + header_font = QtGui.QFont() + header_font.setBold = True + header_font.setPointSize (16) + + self.header_label = QtGui.QLabel("Header Information") + self.header_label.setFont(header_font) + + self.header_edit = QtGui.QTextEdit() + + header_layout = QtGui.QVBoxLayout() + header_layout.addWidget(self.header_label) + header_layout.addWidget(self.header_edit) + + self.setLayout(header_layout) + + self.show() + + + #============================================================================== # Def Main #============================================================================== From fdb88b7b1352dd3519c7cca9844034a6fcd4799e Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 6 Apr 2016 16:45:05 -0700 Subject: [PATCH 027/124] adding new_edi_module --- mtpy/core/edi_object_new.py | 501 ++++++++++++++++++++++++++++++++++++ 1 file changed, 501 insertions(+) create mode 100644 mtpy/core/edi_object_new.py diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py new file mode 100644 index 00000000..7343f8a1 --- /dev/null +++ b/mtpy/core/edi_object_new.py @@ -0,0 +1,501 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue Dec 22 16:03:31 2015 + +@author: jpeacock +""" + +import os +import numpy as np +import time +import datetime + +import mtpy.utils.format as MTft +import mtpy.utils.calculator as MTcc +import mtpy.utils.exceptions as MTex +import mtpy.utils.filehandling as MTfh +import mtpy.core.z as MTz + +tab = ' '*4 + +class Edi(object): + """ + + """ + + def __init__(self, edi_fn=None, **kwargs): + + self.edi_fn = edi_fn + self.header = Header(edi_fn=self.edi_fn) + self.info = Information(edi_fn=self.edi_fn) + +#============================================================================== +# Header object +#============================================================================== +class Header(object): + """ + Header object + """ + + def __init__(self, edi_fn=None, **kwargs): + self.edi_fn = edi_fn + self.dataid = None + self.acqby = None + self.fileby = None + self.acqdate = None + self.units = None + self.filedate = datetime.datetime.utcnow().strftime( + '%Y/%m/%d %H:%M:%S UTC') + self.loc = None + self.lat = None + self.lon = None + self.elev = None + self.empty = 1E32 + self.progvers = None + self.progdate = None + self.phoenix_edi = False + + self.header_list = None + + self._header_keys = ['acqby', + 'acqdate', + 'dataid', + 'elev', + 'fileby', + 'lat', + 'loc', + 'lon', + 'filedate', + 'empty', + 'progdate', + 'progvers'] + + for key in kwargs.keys(): + setattr(self, key, kwargs[key]) + + if self.edi_fn is not None: + self.read_header() + + def get_header_list(self): + """ + Get the header information from the .edi file in the form of a list, + where each item is a line in the header section. + """ + + if self.edi_fn == None: + print 'No edi file to read' + return + if os.path.isfile(self.edi_fn) == False: + print 'Could not find {0}, check path'.format(self.edi_fn) + + self.header_list = [] + head_find = False + count = 0 + with open(self.edi_fn, 'r') as fid: + for line in fid: + if line.find('>') == 0: + count += 1 + if line.lower().find('head') > 0: + head_find = True + else: + head_find = False + if count == 2 and head_find == False: + break + elif count == 1 and line.find('>') != 0 and head_find == True: + line = line.strip() + # skip any blank lines + if len(line) > 2: + self.header_list.append(line.strip()) + + self.header_list = self._validate_header_list(self.header_list) + + def read_header(self, header_list=None): + """ + read a header information + """ + + if header_list is not None: + self.header_list = self._validate_header_list(header_list) + + if self.header_list is None and self.edi_fn is None: + print 'Nothing to read. header_list and edi_fn are None' + + if self.header_list is None and self.edi_fn is not None: + self.get_header_list() + + for h_line in self.header_list: + h_list = h_line.split('=') + key = h_list[0].lower() + value = h_list[1].replace('"', '') + + if key in 'latitude': + key = 'lat' + value = MTft._assert_position_format(key, value) + + elif key in 'longitude': + key = 'lon' + value = MTft._assert_position_format(key, value) + + elif key in 'elevation': + key = 'elev' + try: + value = float(value) + except ValueError: + value = 0.0 + print 'No elevation data' + + elif key in ['country', 'state', 'loc', 'location', 'prospect']: + key = 'loc' + try: + if self.__dict__[key] is not None: + value = '{0}, {1}'.format(self.__dict__[key], value) + except KeyError: + pass + # test if its a phoenix formated .edi file + elif key in ['progvers']: + if value.lower().find('mt-editor') != -1: + self.phoenix_edi = True + + elif key in ['fileby']: + if value == '': + value = 'mtpy' + + setattr(self, key, value) + + def write_header(self, header_list=None): + """ + write header information to a list of lines + """ + + if header_list is not None: + self.header_list = self._validate_header_list(header_list) + + if self.header_list is None and self.edi_fn is None: + print 'Nothing to read. header_list and edi_fn are None' + + if self.header_list is None and self.edi_fn is not None: + self.get_header_list() + + header_lines = ['>HEAD\n\n'] + for key in sorted(self._header_keys): + value = self.__dict__[key] + if key in ['progdate', 'progvers']: + if value is None: + value = 'mtpy' + elif key in ['lat', 'lon']: + value = MTft.convert_dms_tuple2string( + MTft.convert_degrees2dms_tuple(value)) + if key in ['elev']: + try: + value = '{0:.3f}'.format(value) + except ValueError: + value = '0.000' + + if key in ['filedate']: + value = datetime.datetime.utcnow().strftime( + '%Y/%m/%d %H:%M:%S UTC') + + header_lines.append('{0}{1}={2}\n'.format(tab, key.upper(), value)) + header_lines.append('\n') + return header_lines + + def _validate_header_list(self, header_list): + """ + make sure the input header list is valid + + returns a validated header list + """ + + if header_list is None: + print 'No header information to read' + return None + + new_header_list = [] + for h_line in header_list: + h_line = h_line.strip().replace('"', '') + if len(h_line) > 1: + h_list = h_line.split('=') + if len(h_list) == 2: + key = h_list[0] + value = h_list[1] + new_header_list.append('{0}={1}'.format(key, value)) + + return new_header_list + +#============================================================================== +# Info object +#============================================================================== +class Information(object): + """ + Contain, read, and write info section of .edi file + + not much to really do here, but just keep it in the same format that it is + read in as, except if it is in phoenix format then split the two paragraphs + up + """ + + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + self.info_list = None + + if self.edi_fn is not None: + self.read_info() + + def get_info_list(self): + """ + get a list of lines from the info section + """ + + if self.edi_fn is None: + print 'no edi file input, check edi_fn attribute' + return + if os.path.isfile(self.edi_fn) is False: + print 'Could not find {0}, check path'.format(self.edi_fn) + return + + self.info_list = [] + info_find = False + phoenix_file = False + phoenix_list_02 = [] + count = 0 + with open(self.edi_fn, 'r') as fid: + for line in fid: + if line.find('>') == 0: + count += 1 + if line.lower().find('info') > 0: + info_find = True + else: + info_find = False + if count > 2 and info_find == False: + break + elif count > 1 and line.find('>') != 0 and info_find == True: + if line.lower().find('run information') >= 0: + phoenix_file = True + if phoenix_file == True and len(line) > 40: + self.info_list.append(line[0:37].strip()) + phoenix_list_02.append(line[38:].strip()) + else: + if len(line.strip()) > 1: + self.info_list.append(line.strip()) + + self.info_list += phoenix_list_02 + # validate the information list + self.info_list = self._validate_info_list(self.info_list) + + def read_info(self, info_list=None): + """ + read information section of the .edi file + """ + + if info_list is not None: + self.info_list = self._validate_info_list(info_list) + + if self.edi_fn is not None and self.info_list is None: + self.get_info_list() + + if self.info_list is None: + print "Could not read information" + return + + def write_info(self, info_list=None): + """ + + """ + + if info_list is not None: + self.info_list = self._validate_info_list(info_list) + + + info_lines = ['>INFO\n\n'] + for line in self.info_list: + info_lines.append('{0}{1}\n'.format(tab, line)) + + return info_lines + + + def _validate_info_list(self, info_list): + """ + check to make sure the info list input is valid, really just checking + for Phoenix format where they put two columns in the file and remove + any blank lines and the >info line + """ + + new_info_list = [] + for line in info_list: + # get rid of empty lines + lt = str(line).strip() + if len(lt) > 1: + if line.find('>') == 0: + pass + else: + new_info_list.append(line.strip()) + + return new_info_list + + +#============================================================================== +# Define measurement class +#============================================================================== +class DefineMeasurement(object): + """ + hold information about the measurement + """ + + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + self.measurement_list = None + + self.maxchan = None + self.maxmeas = 99999 + self.maxrun = 999 + self.refelev = None + self.reflat = None + self.reflon = None + self.reftype = None + self.units = 'm' + + if self.edi_fn is not None: + self.read_define_measurement() + + def get_measurement_lists(self): + """ + get measurement list including measurement setup + """ + if self.edi_fn is None: + print 'No edi file input, check edi_fn attribute' + return + + if os.path.isfile(self.edi_fn) is False: + print 'Could not find {0}, check path'.format(self.edi_fn) + + self.measurement_list = [] + meas_find = False + count = 0 + with open(fn, 'r') as fid: + for line in fid: + if line.find('>=') == 0: + count += 1 + if line.lower().find('definemeas') > 0: + meas_find = True + else: + meas_find = False + if count == 2 and meas_find == False: + break + elif count == 1 and line.find('>') != 0 and meas_find == True: + line = line.strip() + if len(line) > 2: + self.measurement_list.append(line.strip()) + + # look for the >XMEAS parts + elif count == 1 and line.find('>') == 0 and meas_find == True: + if line.find('!') > 0: + pass + else: + line_list = line.strip().split() + m_dict = {} + for ll in line_list[1:]: + ll_list = ll.split('=') + key = ll_list[0].lower() + value = ll_list[1] + m_dict[key] = value + self.measurement_list.append(m_dict) + + def read_define_measurement(self, measurement_list=None): + """ + read the define measurment section of the edi file + + should be a list with lines for: + - maxchan + - maxmeas + - maxrun + - refelev + - reflat + - reflon + - reftype + - units + - dictionaries for >XMEAS with keys: + - id + - chtype + - x + - y + - axm + -acqchn + + """ + + if measurement_list is not None: + self.measurement_list = measurement_list + + if self.measurement_list is None and self.edi_fn is not None: + self.get_measurement_lists() + + if self.measurement_list is None and self.edi_fn is None: + print 'Nothing to read, check edi_fn or measurement_list attributes' + return + + m_count = 1 + for line in self.measurement_list: + if type(line) is str: + line_list = line.split('=') + key = line_list[0].lower() + value = line_list[1] + if key in 'reflatitude': + key = 'reflat' + value = MTft._assert_position_format(key, value) + elif key in 'reflongitude': + key = 'reflon' + value = MTft._assert_position_format(key, value) + elif key in 'refelevation': + key = 'refelev' + try: + value = float(value) + except ValueError: + value = 0.0 + elif key in 'maxchannels': + key = 'maxchan' + value = int(value) + elif key in 'maxmeasurements': + key = 'maxmeas' + value = int(value) + setattr(self, key, value) + + elif type(line) is dict: + try: + key = 'meas_{0:02.0f}'.format(float(line['id'])) + except KeyError: + key = 'meas_{0:02}'.format(m_count) + value = Measurement(**line) + + setattr(self, key, value) + +class Measurement(object): + """ + class to put the MT measurements in + """ + + def __init__(self, **kwargs): + + self._kw_list = ['id', 'chtype', 'x', 'y', 'azm', 'acqchan'] + for key in self._kw_list: + setattr(self, key, None) + + for key in kwargs.keys(): + setattr(self, key, kwargs[key]) + + +#============================================================================== +# Test +#============================================================================== +#fn = r"d:\Peacock\MTData\EDI_Files\mb018.edi" +fn = r"c:\Users\jpeacock\Documents\SaudiArabia\edi_files_fixed_lon\101_rr.edi" +#h = Header(edi_fn=fn) +#h.read_header() + +m = DefineMeasurement(edi_fn=fn) + +#print ''.join(f.write_info()) + + +#for key in sorted(h.__dict__.keys()): +# print key, h.__dict__[key] + \ No newline at end of file From d931654e80b949fbdca867bf9e999a3038afd1a9 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 7 Apr 2016 18:37:19 -0700 Subject: [PATCH 028/124] adding to new_edi_object to read edi files, soon to write as well --- mtpy/core/edi_object_new.py | 351 +++++++++++++++++++++++++++++++++--- 1 file changed, 327 insertions(+), 24 deletions(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index 7343f8a1..9ab4f2f1 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -28,6 +28,116 @@ def __init__(self, edi_fn=None, **kwargs): self.edi_fn = edi_fn self.header = Header(edi_fn=self.edi_fn) self.info = Information(edi_fn=self.edi_fn) + self.define_measurement = DefineMeasurement(edi_fn=self.edi_fn) + self.data_sect = DataSection(edi_fn=self.edi_fn) + self.Z = MTz.Z() + self.Tipper = MTz.Tipper() + + if self.edi_fn is not None: + self.read_data() + + + def read_data(self): + """ + read either impedance or spectra data + """ + + if self.edi_fn is None: + raise MTex.MTpyError_EDI('No edi file input, check edi_fn') + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI('No edi file input, check edi_fn') + + with open(self.edi_fn, 'r') as fid: + lines = fid.readlines()[self.data_sect.line_num+2:] + + if self.data_sect.data_type == 'spectra': + self._read_spectra(lines) + + elif self.data_sect.data_type == 'z': + self._read_mt(lines) + + def _read_mt(self, data_lines): + """ + read in impedance and tipper data if its there + """ + data_dict = {} + data_find = False + for line in data_lines: + if line.find('>') == 0 and line.find('!') == -1: + line_list = line[1:].strip().split() + key = line_list[0].lower() + if key[0] == 'z' or key[0] == 't' or key == 'freq': + data_find = True + data_dict[key] = [] + else: + data_find = False + + + elif data_find == True and line.find('>') == -1 and line.find('!') == -1: + d_lines = line.strip().split() + for ii, dd in enumerate(d_lines): + # check for empty values and set them to 0, check for any + # other characters sometimes there are ****** for a null + # component + try: + d_lines[ii] = float(dd) + if d_lines[ii] == 1.0e32: + d_lines[ii] = 0.0 + except ValueError: + d_lines[ii] = 0.0 + data_dict[key] += d_lines + + ## fill useful arrays + freq_arr = np.array(data_dict['freq'], dtype=np.float) + + ## fill impedance tensor + self.Z.freq = freq_arr.copy() + self.Z.z = np.zeros((self.data_sect.nfreq, 2, 2), dtype=np.complex) + self.Z.zerr = np.zeros((self.data_sect.nfreq, 2, 2), dtype=np.float) + + self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ + np.array(data_dict['zxxi'])*1j + self.Z.z[:, 0, 1] = np.array(data_dict['zxyr'])+\ + np.array(data_dict['zxyi'])*1j + self.Z.z[:, 1, 0] = np.array(data_dict['zyxr'])+\ + np.array(data_dict['zyxi'])*1j + self.Z.z[:, 1, 1] = np.array(data_dict['zyyr'])+\ + np.array(data_dict['zyyi'])*1j + + self.Z.zerr[:, 0, 0] = np.array(data_dict['zxx.var']) + self.Z.zerr[:, 0, 1] = np.array(data_dict['zxy.var']) + self.Z.zerr[:, 1, 0] = np.array(data_dict['zyx.var']) + self.Z.zerr[:, 1, 1] = np.array(data_dict['zyy.var']) + + + ## fill tipper data if there it exists + self.Tipper.tipper = np.zeros((self.data_sect.nfreq, 1, 2), + dtype=np.complex) + self.Tipper.tippererr = np.zeros((self.data_sect.nfreq, 1, 2), + dtype=np.float) + self.Tipper.freq = freq_arr.copy() + + if 'txr.exp' in data_dict.keys(): + self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ + np.array(data_dict['txi.exp'])*1j + self.Tipper.tipper[:, 0, 1] = np.array(data_dict['tyr.exp'])+\ + np.array(data_dict['tyi.exp'])*1j + + self.Tipper.tippererr[:, 0, 0] = np.array(data_dict['txvar.exp']) + self.Tipper.tippererr[:, 0, 1] = np.array(data_dict['tyvar.exp']) + + else: + print 'Could not find any Tipper data.' + + def _read_spectra(self, data_lines): + """ + read in spectra data + """ + + data_dict = {} + + + #============================================================================== # Header object @@ -147,8 +257,8 @@ def read_header(self, header_list=None): elif key in ['country', 'state', 'loc', 'location', 'prospect']: key = 'loc' try: - if self.__dict__[key] is not None: - value = '{0}, {1}'.format(self.__dict__[key], value) + if getattr(self, key) is not None: + value = '{0}, {1}'.format(getattr(self, key), value) except KeyError: pass # test if its a phoenix formated .edi file @@ -168,17 +278,14 @@ def write_header(self, header_list=None): """ if header_list is not None: - self.header_list = self._validate_header_list(header_list) - - if self.header_list is None and self.edi_fn is None: - print 'Nothing to read. header_list and edi_fn are None' + self.read_header(header_list) if self.header_list is None and self.edi_fn is not None: self.get_header_list() header_lines = ['>HEAD\n\n'] for key in sorted(self._header_keys): - value = self.__dict__[key] + value = getattr(self, key) if key in ['progdate', 'progvers']: if value is None: value = 'mtpy' @@ -346,14 +453,23 @@ def __init__(self, edi_fn=None): self.measurement_list = None self.maxchan = None - self.maxmeas = 99999 + self.maxmeas = 7 self.maxrun = 999 self.refelev = None self.reflat = None self.reflon = None - self.reftype = None + self.reftype = 'cartesian' self.units = 'm' + self._define_meas_keys = ['maxchan', + 'maxrun', + 'maxmeas', + 'reflat', + 'reflon', + 'refelev', + 'reftype', + 'units'] + if self.edi_fn is not None: self.read_define_measurement() @@ -441,16 +557,13 @@ def read_define_measurement(self, measurement_list=None): value = line_list[1] if key in 'reflatitude': key = 'reflat' - value = MTft._assert_position_format(key, value) + value = MTft._assert_position_format('lat', value) elif key in 'reflongitude': key = 'reflon' - value = MTft._assert_position_format(key, value) + value = MTft._assert_position_format('lon', value) elif key in 'refelevation': key = 'refelev' - try: - value = float(value) - except ValueError: - value = 0.0 + value = MTft._assert_position_format('elev', value) elif key in 'maxchannels': key = 'maxchan' value = int(value) @@ -464,11 +577,63 @@ def read_define_measurement(self, measurement_list=None): key = 'meas_{0:02.0f}'.format(float(line['id'])) except KeyError: key = 'meas_{0:02}'.format(m_count) - value = Measurement(**line) - + if line['chtype'].lower().find('h') >= 0: + value = HMeasurement(**line) + elif line['chtype'].lower().find('e') >= 0: + value = EMeasurement(**line) setattr(self, key, value) - -class Measurement(object): + + def write_define_measurement(self, measurement_list=None): + """ + write the define measurement block as a list of strings + """ + + if measurement_list is not None: + self.read_define_measurement(measurement_list=measurement_list) + + measurement_lines = ['>=DEFINEMEAS\n\n'] + for key in self._define_meas_keys: + value = getattr(self, key) + if key == 'reflat' or key == 'reflon': + value = MTft.convert_dms_tuple2string( + MTft.convert_degrees2dms_tuple(value)) + elif key == 'refelev': + value = '{0:.3f}'.format(value) + + measurement_lines.append('{0}{1}={2}\n'.format(tab, + key.upper(), + value)) + measurement_lines.append('\n') + + ## need to write the >XMEAS type + m_key_list = [kk for kk in self.__dict__.keys() if kk.find('meas_')==0] + if len(m_key_list) == 0: + print 'No XMEAS information.' + else: + for key in sorted(m_key_list): + m_obj = getattr(self, key) + if m_obj.chtype.lower().find('h') >= 0: + head = 'hmeas' + elif m_obj.chtype.lower().find('e') >= 0: + head = 'emeas' + else: + head = None + + m_list = ['>{0}'.format(head.upper())] + for mkey, mfmt in zip(m_obj._kw_list, m_obj._fmt_list): + print mkey, mfmt, getattr(m_obj, mkey) + m_list.append(' {0}={1:{2}}'.format(mkey.upper(), + getattr(m_obj, mkey), + mfmt)) + m_list.append('\n') + measurement_lines.append(''.join(m_list)) + + return measurement_lines + +#============================================================================== +# magnetic measurements +#============================================================================== +class HMeasurement(object): """ class to put the MT measurements in """ @@ -476,26 +641,164 @@ class to put the MT measurements in def __init__(self, **kwargs): self._kw_list = ['id', 'chtype', 'x', 'y', 'azm', 'acqchan'] + self._fmt_list = ['<4.4g','<3', '<4.1f', '<4.1f', '<4.1f', '<4'] for key in self._kw_list: setattr(self, key, None) for key in kwargs.keys(): - setattr(self, key, kwargs[key]) + try: + setattr(self, key, float(kwargs[key])) + except ValueError: + setattr(self, key, kwargs[key]) + +#============================================================================== +# electric measurements +#============================================================================== +class EMeasurement(object): + """ + class to put the MT measurements in + """ + + def __init__(self, **kwargs): + + self._kw_list = ['id', 'chtype', 'x', 'y', 'x2', 'y2', 'acqchan'] + self._fmt_list = ['<4.4g', '<3', '<4.1f', '<4.1f', '<4.1f', '<4.1f', + '<4'] + for key in self._kw_list: + setattr(self, key, None) + + for key in kwargs.keys(): + try: + setattr(self, key, float(kwargs[key])) + except ValueError: + setattr(self, key, kwargs[key]) + + +#============================================================================== +# data section +#============================================================================== +class DataSection(object): + """ + read the data section (XSECT part) + """ + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + + self.data_type = 'z' + self.line_num = 0 + self.data_sect_list = None + + self._kw_list = ['ex', + 'ey', + 'hx', + 'hy', + 'hz', + 'nfreq', + 'sectid', + 'nchan', + 'maxblks'] + + for key in self._kw_list: + setattr(self, key, None) + + if self.edi_fn is not None: + self.read_data_sect() + + + def get_data_sect(self): + """ + read in the data of the file, will detect if reading spectra or + impedance. + """ + + if self.edi_fn is None: + raise MTex.MTpyError_EDI('No edi file to read. Check edi_fn') + + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI('Could not find {0}. Check path'.format(self.edi_fn)) + + self.data_sect_list = [] + data_sect_find = False + count = 0 + with open(self.edi_fn) as fid: + for ii, line in enumerate(fid): + if line.find('>=') == 0: + count += 1 + if line.lower().find('sect') > 0: + data_sect_find = True + self.line_num = ii + if line.lower().find('spect') > 0: + self.data_type = 'spectra' + elif line.lower().find('mt') > 0: + self.data_type = 'z' + else: + data_sect_find = False + if count > 2 and data_sect_find == False: + break + elif count == 2 and line.find('>') != 0 and \ + data_sect_find == True: + if len(line.strip()) > 2: + self.data_sect_list.append(line.strip()) + + def read_data_sect(self, data_sect_list=None): + """ + read data section + """ + + if data_sect_list is not None: + self.data_sect_list = data_sect_list + + if self.edi_fn is not None and self.data_sect_list is None: + self.get_data_sect() + + for d_line in self.data_sect_list: + d_list = d_line.split('=') + if len(d_list) > 1: + key = d_list[0].lower() + try: + value = int(d_list[1].strip()) + except ValueError: + value = d_list[1].strip().replace('"', '') + + setattr(self, key, value) + + def write_data_sect(self, data_sect_list=None): + """ + write a data section + """ + if data_sect_list is not None: + self.read_data_sect(data_sect_list) + + if self.data_type == 'spectra': + data_sect_lines = ['\n>=spectrasect\n'.upper()] + + if self.data_type == 'z': + data_sect_lines = ['\n>=mtsect\n'.upper()] + for key in self._kw_list: + data_sect_lines.append('{0}{1}={2}\n'.format(tab, + key, + getattr(self, key))) + return data_sect_lines + + #============================================================================== # Test #============================================================================== #fn = r"d:\Peacock\MTData\EDI_Files\mb018.edi" -fn = r"c:\Users\jpeacock\Documents\SaudiArabia\edi_files_fixed_lon\101_rr.edi" +fn = r"c:\Users\jpeacock\Documents\ShanesBugs\Jess\EDI_files\104A.edi" +#fn = r"c:\Users\jpeacock\Documents\SaudiArabia\edi_files_fixed_lon\101_rr.edi" #h = Header(edi_fn=fn) #h.read_header() -m = DefineMeasurement(edi_fn=fn) - -#print ''.join(f.write_info()) +#m = DefineMeasurement(edi_fn=fn) +# +#print ''.join(m.write_define_measurement()) +edi_obj = Edi(edi_fn=fn) +#d = DataSection(edi_fn=fn) #for key in sorted(h.__dict__.keys()): # print key, h.__dict__[key] \ No newline at end of file From a39e1cff4e7e90575247b3597b53f7210ad5cf11 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 12:40:19 -0700 Subject: [PATCH 029/124] added write edi to new_edi_object --- mtpy/core/edi_object_new.py | 187 ++++++++++++++++++++++++++++++++++-- 1 file changed, 180 insertions(+), 7 deletions(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index 9ab4f2f1..6026cf5b 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -7,7 +7,6 @@ import os import numpy as np -import time import datetime import mtpy.utils.format as MTft @@ -26,16 +25,62 @@ class Edi(object): def __init__(self, edi_fn=None, **kwargs): self.edi_fn = edi_fn + self.header = Header() + self.info = Information() + self.define_measurement = DefineMeasurement() + self.data_sect = DataSection() + self.Z = MTz.Z() + self.Tipper = MTz.Tipper() + + self._z_labels = [['zxxr', 'zxxi', 'zxx.var'], + ['zxyr', 'zxyi', 'zxy.var'], + ['zyxr', 'zyxi', 'zyx.var'], + ['zyyr', 'zyyi', 'zyy.var']] + + self._t_labels = [['txr.exp', 'txi.exp', 'txvar.exp'], + ['tyr.exp', 'tyi.exp', 'tyvar.exp']] + + self._data_header_str = '!****{0}****!\n' + + self._num_format = ' 15.6e' + self._block_len = 6 + + if self.edi_fn is not None: + self.read_edi_file() + + def read_edi_file(self, edi_fn=None): + """ + read in an edi file + """ + + if edi_fn is not None: + self.edi_fn = edi_fn + + if self.edi_fn is None: + raise MTex.MTpyError_EDI("No edi file input, check edi_fn") + + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI("Could not find {0}, check path".format(self.edi_fn)) + + self.header = Header(edi_fn=self.edi_fn) self.info = Information(edi_fn=self.edi_fn) self.define_measurement = DefineMeasurement(edi_fn=self.edi_fn) self.data_sect = DataSection(edi_fn=self.edi_fn) - self.Z = MTz.Z() - self.Tipper = MTz.Tipper() - if self.edi_fn is not None: - self.read_data() + self.read_data() + + if self.header.lat is None: + self.header.lat = self.define_measurement.reflat + print 'Got latitude from reflat for {0}'.format(self.header.dataid) + if self.header.lon is None: + self.header.lon = self.define_measurement.reflon + print 'Got longitude from reflon for {0}'.format(self.header.dataid) + if self.header.elev is None: + self.header.elev = self.define_measurement.refelev + print 'Got elevation from refelev for {0}'.format(self.header.dataid) + print "Read in edi file for station {0}".format(self.header.dataid) def read_data(self): """ @@ -136,6 +181,132 @@ def _read_spectra(self, data_lines): data_dict = {} + def write_edi(self, new_edi_fn=None): + """ + write a new edi file + """ + + if new_edi_fn is None: + if self.edi_fn is not None: + new_edi_fn = self.edi_fn + else: + new_edi_fn = os.path.join(os.getcwd(), + '{0}.edi'.format(self.header.dataid)) + new_edi_fn = MTfh.make_unique_filename(new_edi_fn) + + if self.header.dataid is None: + self.read_edi_file() + + # write lines + header_lines = self.header.write_header() + info_lines = self.info.write_info() + define_lines = self.define_measurement.write_define_measurement() + dsect_lines = self.data_sect.write_data_sect() + + # write out frequencies + freq_lines = [self._data_header_str.format('frequencies'.upper())] + freq_lines += self._write_data_block(self.Z.freq, 'freq') + + # write out rotation angles + zrot_lines = [self._data_header_str.format('impedance rotation angles'.upper())] + zrot_lines += self._write_data_block(self.Z.rotation_angle, 'zrot') + + # write out data only impedance and tipper + z_data_lines = [self._data_header_str.format('impedances'.upper())] + for ii in range(2): + for jj in range(2): + z_lines_real = self._write_data_block(self.Z.z[:, ii, jj].real, + self._z_labels[2*ii+jj][0]) + z_lines_imag = self._write_data_block(self.Z.z[:, ii, jj].imag, + self._z_labels[2*ii+jj][1]) + z_lines_var = self._write_data_block(self.Z.zerr[:, ii, jj], + self._z_labels[2*ii+jj][2]) + + z_data_lines += z_lines_real + z_data_lines += z_lines_imag + z_data_lines += z_lines_var + + # write out rotation angles + trot_lines = [self._data_header_str.format('tipper rotation angles'.upper())] + if type(self.Tipper.rotation_angle) is float: + trot = np.repeat(self.Tipper.rotation_angle, self.Tipper.freq.size) + else: + trot = self.Tipper.rotation_angle + trot_lines += self._write_data_block(trot, 'trot') + + # write out tipper lines + t_data_lines = [self._data_header_str.format('tipper'.upper())] + for jj in range(2): + t_lines_real = self._write_data_block(self.Tipper.tipper[:, 0, jj].real, + self._t_labels[jj][0]) + t_lines_imag = self._write_data_block(self.Tipper.tipper[:, 0, jj].imag, + self._t_labels[jj][1]) + t_lines_var = self._write_data_block(self.Tipper.tippererr[:, 0, jj], + self._t_labels[jj][2]) + + t_data_lines += t_lines_real + t_data_lines += t_lines_imag + t_data_lines += t_lines_var + + edi_lines = header_lines+\ + info_lines+\ + define_lines+\ + dsect_lines+\ + freq_lines+\ + zrot_lines+\ + z_data_lines+\ + trot_lines+\ + t_data_lines+['>END'] + + with open(new_edi_fn, 'w') as fid: + fid.write(''.join(edi_lines)) + + print 'Wrote {0}'.format(new_edi_fn) + return new_edi_fn + + def _write_data_block(self, data_comp_arr, data_key): + """ + write a data block + + return a list of strings + """ + if data_key.lower().find('z') >= 0 and \ + data_key.lower() not in ['zrot', 'trot']: + block_lines = ['>{0} ROT=ZROT // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + elif data_key.lower().find('t') >= 0 and \ + data_key.lower() not in ['zrot', 'trot']: + block_lines = ['>{0} ROT=TROT // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + elif data_key.lower() == 'freq': + block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + + elif data_key.lower() in ['zrot', 'trot']: + block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + + else: + raise MTex.MTpyError_EDI('Cannot write block for {0}'.format(data_key)) + + for d_index, d_comp in enumerate(data_comp_arr, 1): + if d_comp == 0.0 and data_key.lower() not in ['zrot', 'trot']: + d_comp = float(self.header.empty) + # write the string in the specified format + num_str = '{0:{1}}'.format(d_comp, self._num_format) + + # check to see if a new line is needed + if d_index%self._block_len == 0: + num_str += '\n' + # at the end of the block add a return + if d_index == data_comp_arr.size: + num_str += '\n' + + block_lines.append(num_str) + + return block_lines + + @@ -621,7 +792,6 @@ def write_define_measurement(self, measurement_list=None): m_list = ['>{0}'.format(head.upper())] for mkey, mfmt in zip(m_obj._kw_list, m_obj._fmt_list): - print mkey, mfmt, getattr(m_obj, mkey) m_list.append(' {0}={1:{2}}'.format(mkey.upper(), getattr(m_obj, mkey), mfmt)) @@ -780,6 +950,8 @@ def write_data_sect(self, data_sect_list=None): key, getattr(self, key))) + data_sect_lines.append('\n') + return data_sect_lines @@ -787,7 +959,8 @@ def write_data_sect(self, data_sect_list=None): # Test #============================================================================== #fn = r"d:\Peacock\MTData\EDI_Files\mb018.edi" -fn = r"c:\Users\jpeacock\Documents\ShanesBugs\Jess\EDI_files\104A.edi" +#fn = r"c:\Users\jpeacock\Documents\ShanesBugs\Jess\EDI_files\104A.edi" +fn = r"C:\Users\jrpeacock\Documents\Test_Data\Faults\par28ew.edi" #fn = r"c:\Users\jpeacock\Documents\SaudiArabia\edi_files_fixed_lon\101_rr.edi" #h = Header(edi_fn=fn) #h.read_header() From 13566577a21b2bb78d7062e08d4985c1fbfeaddd Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:03:09 -0700 Subject: [PATCH 030/124] documented new_edi_object and added lat, lon, elev, station as attributes --- mtpy/core/edi_object_new.py | 569 +++++++++++++++++++++++++++++++++--- 1 file changed, 521 insertions(+), 48 deletions(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index 6026cf5b..fcb8e803 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -19,16 +19,90 @@ class Edi(object): """ + This class is for .edi files, mainly reading and writing. Has been tested + on Winglink and Phoenix output .edi's, which are meant to follow the + archaic EDI format put forward by SEG. Can read impedance, Tipper and/or + spectra data. + The Edi class contains a class for each major section of the .edi file. + + Arguments + --------------- + + **edi_fn** : string + full path to .edi file to be read in. + *default* is None. If an .edi file is input, it is + automatically read in and attributes of Edi are filled + + + Methods + --------------- + ===================== ===================================================== + Methods Description + ===================== ===================================================== + read_edi_file Reads in an edi file and populates the associated + classes and attributes. + write_edi_file Writes an .edi file following the EDI format given + the apporpriate attributes are filled. Writes out + in impedance and Tipper format. + _read_data Reads in the impedance and Tipper blocks, if the + .edi file is in 'spectra' format, read_data converts + the data to impedance and Tipper. + _read_mt Reads impedance and tipper data from the appropriate + blocks of the .edi file. + _read_spectra Reads in spectra data and converts it to impedance + and Tipper data. + ===================== ===================================================== + + Attributes + --------------- + + ===================== ========================================== ========== + Attributes Description default + ===================== ========================================== ========== + Data_sect DataSection class, contains basin + information on the data collected and in + whether the data is in impedance or + spectra. + Define_measurement DefineMeasurement class, contains + information on how the data was + collected. + edi_fn full path to edi file read in None + Header Header class, contains metadata on + where, when, and who collected the data + Info Information class, contains information + on how the data was processed and how the + transfer functions where estimated. + Tipper mtpy.core.z.Tipper class, contains the + tipper data + Z mtpy.core.z.Z class, contains the + impedance data + _block_len number of data in one line. 6 + _data_header_str header string for each of the data '!****{0}****!' + section + _num_format string format of data. ' 15.6e' + _t_labels labels for tipper blocks + _z_labels labels for impedance blocks + ===================== ========================================== ========== + + Examples + --------------------- + :Change Latitude: :: + + >>> import mtpy.core.edi as mtedi + >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01.edi") + >>> # change the latitude + >>> edi_obj.header.lat = 45.7869 + >>> new_edi_fn = edi_obj.write_edi_file() """ - def __init__(self, edi_fn=None, **kwargs): + def __init__(self, edi_fn=None): self.edi_fn = edi_fn - self.header = Header() - self.info = Information() - self.define_measurement = DefineMeasurement() - self.data_sect = DataSection() + self.Header = Header() + self.Info = Information() + self.Define_measurement = DefineMeasurement() + self.Data_sect = DataSection() self.Z = MTz.Z() self.Tipper = MTz.Tipper() @@ -50,7 +124,36 @@ def __init__(self, edi_fn=None, **kwargs): def read_edi_file(self, edi_fn=None): """ - read in an edi file + Read in an edi file and fill attributes of each section's classes. + Including: + * Header + * Info + * Define_measurement + * Data_sect + * Z + * Tipper + + .. note:: Automatically detects if data is in spectra format. All + data read in is converted to impedance and Tipper. + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to be read in + *default* is None + + + + Examples + ------------- + + :Read edi: :: + + >>> import mtpy.core.Edi as mtedi + >>> edi_obj = mtedi.Edi() + >>> edi_obj.read_edi_file(edi_fn=r"/home/mt/mt01.edi") + """ if edi_fn is not None: @@ -63,26 +166,26 @@ def read_edi_file(self, edi_fn=None): raise MTex.MTpyError_EDI("Could not find {0}, check path".format(self.edi_fn)) - self.header = Header(edi_fn=self.edi_fn) - self.info = Information(edi_fn=self.edi_fn) - self.define_measurement = DefineMeasurement(edi_fn=self.edi_fn) - self.data_sect = DataSection(edi_fn=self.edi_fn) + self.Header = Header(edi_fn=self.edi_fn) + self.Info = Information(edi_fn=self.edi_fn) + self.Define_measurement = DefineMeasurement(edi_fn=self.edi_fn) + self.Data_sect = DataSection(edi_fn=self.edi_fn) - self.read_data() + self._read_data() - if self.header.lat is None: - self.header.lat = self.define_measurement.reflat - print 'Got latitude from reflat for {0}'.format(self.header.dataid) - if self.header.lon is None: - self.header.lon = self.define_measurement.reflon - print 'Got longitude from reflon for {0}'.format(self.header.dataid) - if self.header.elev is None: - self.header.elev = self.define_measurement.refelev - print 'Got elevation from refelev for {0}'.format(self.header.dataid) + if self.Header.lat is None: + self.Header.lat = self.Define_measurement.reflat + print 'Got latitude from reflat for {0}'.format(self.Header.dataid) + if self.Header.lon is None: + self.Header.lon = self.Define_measurement.reflon + print 'Got longitude from reflon for {0}'.format(self.Header.dataid) + if self.Header.elev is None: + self.Header.elev = self.Define_measurement.refelev + print 'Got elevation from refelev for {0}'.format(self.Header.dataid) - print "Read in edi file for station {0}".format(self.header.dataid) + print "Read in edi file for station {0}".format(self.Header.dataid) - def read_data(self): + def _read_data(self): """ read either impedance or spectra data """ @@ -93,12 +196,12 @@ def read_data(self): raise MTex.MTpyError_EDI('No edi file input, check edi_fn') with open(self.edi_fn, 'r') as fid: - lines = fid.readlines()[self.data_sect.line_num+2:] + lines = fid.readlines()[self.Data_sect.line_num+2:] - if self.data_sect.data_type == 'spectra': + if self.Data_sect.data_type == 'spectra': self._read_spectra(lines) - elif self.data_sect.data_type == 'z': + elif self.Data_sect.data_type == 'z': self._read_mt(lines) def _read_mt(self, data_lines): @@ -137,8 +240,8 @@ def _read_mt(self, data_lines): ## fill impedance tensor self.Z.freq = freq_arr.copy() - self.Z.z = np.zeros((self.data_sect.nfreq, 2, 2), dtype=np.complex) - self.Z.zerr = np.zeros((self.data_sect.nfreq, 2, 2), dtype=np.float) + self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) + self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ np.array(data_dict['zxxi'])*1j @@ -156,9 +259,9 @@ def _read_mt(self, data_lines): ## fill tipper data if there it exists - self.Tipper.tipper = np.zeros((self.data_sect.nfreq, 1, 2), + self.Tipper.tipper = np.zeros((self.Data_sect.nfreq, 1, 2), dtype=np.complex) - self.Tipper.tippererr = np.zeros((self.data_sect.nfreq, 1, 2), + self.Tipper.tippererr = np.zeros((self.Data_sect.nfreq, 1, 2), dtype=np.float) self.Tipper.freq = freq_arr.copy() @@ -181,9 +284,29 @@ def _read_spectra(self, data_lines): data_dict = {} - def write_edi(self, new_edi_fn=None): + def write_edi_file(self, new_edi_fn=None): """ - write a new edi file + Write a new edi file from either an existing .edi file or from data + input by the user into the attributes of Edi. + + Arguments + ----------- + + **new_edi_fn** : string + full path to new edi file. + *default* is None, which will write to the same + file as the input .edi with as: + r"/home/mt/mt01_1.edi" + + Examples + ----------- + + :Write EDI file: :: + + >>> import mtpy.core.edi as mtedi + >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01/edi") + >>> edi_obj.Header.dataid = 'mt01_rr' + >>> edi_obj.write_edi_file() """ if new_edi_fn is None: @@ -191,17 +314,17 @@ def write_edi(self, new_edi_fn=None): new_edi_fn = self.edi_fn else: new_edi_fn = os.path.join(os.getcwd(), - '{0}.edi'.format(self.header.dataid)) + '{0}.edi'.format(self.Header.dataid)) new_edi_fn = MTfh.make_unique_filename(new_edi_fn) - if self.header.dataid is None: + if self.Header.dataid is None: self.read_edi_file() # write lines - header_lines = self.header.write_header() - info_lines = self.info.write_info() - define_lines = self.define_measurement.write_define_measurement() - dsect_lines = self.data_sect.write_data_sect() + header_lines = self.Header.write_header() + info_lines = self.Info.write_info() + define_lines = self.Define_measurement.write_define_measurement() + dsect_lines = self.Data_sect.write_data_sect() # write out frequencies freq_lines = [self._data_header_str.format('frequencies'.upper())] @@ -291,7 +414,7 @@ def _write_data_block(self, data_comp_arr, data_key): for d_index, d_comp in enumerate(data_comp_arr, 1): if d_comp == 0.0 and data_key.lower() not in ['zrot', 'trot']: - d_comp = float(self.header.empty) + d_comp = float(self.Header.empty) # write the string in the specified format num_str = '{0:{1}}'.format(d_comp, self._num_format) @@ -305,17 +428,163 @@ def _write_data_block(self, data_comp_arr, data_key): block_lines.append(num_str) return block_lines + + #----------------------------------------------------------------------- + # set a few important properties + # --> Latitude + def _get_lat(self): + """ + get latitude + """ + + return self.Header.lat + + def _set_lat(self, input_lat): + """ + set latitude and make sure it is converted to a float + """ + self.Header.lat = MTft._assert_position_format('lat', input_lat) + print 'Converted input latitude to decimal degrees: {0: .6f}'.format( + self.Header.lat) - + lat = property(fget=_get_lat, fset=_set_lat, + doc='Latitude in decimal degrees') + + # --> Longitude + def _get_lon(self): + return self.Header.lon - + def _set_lon(self, input_lon): + self.Header.lon = MTft._assert_position_format('lon', input_lon) + print 'Converted input longitude to decimal degrees: {0: .6f}'.format( + self.Header.lon) + + lon = property(fget=_get_lon, fset=_set_lon, + doc='Longitude in decimal degrees') + + # --> Elevation + def _get_elev(self): + return self.Header.elev + + def _set_elev(self, input_elev): + self.Header.elev = MTft._assert_position_format('elev', input_elev) + + elev = property(fget=_get_elev, fset=_set_elev, + doc='Elevation in meters') + + # --> station + def _get_station(self): + return self.Header.dataid + + def _set_station(self, new_station): + if type(new_station) is not str: + new_station = '{0}'.format(new_station) + self.Header.dataid = new_station + self.Data_sect.sectid = new_station + + station = property(fget=_get_station, fset=_set_station, + doc="station name") #============================================================================== # Header object #============================================================================== class Header(object): """ - Header object + Header class contains all the information in the header section of the .edi + file. A typical header block looks like:: + + >HEAD + + ACQBY=None + ACQDATE=None + DATAID=par28ew + ELEV=0.000 + EMPTY=1e+32 + FILEBY=WG3DForward + FILEDATE=2016/04/11 19:37:37 UTC + LAT=-30:12:49 + LOC=None + LON=139:47:50 + PROGDATE=2002-04-22 + PROGVERS=WINGLINK EDI 1.0.22 + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to be read in. + *default* is None. If an .edi file is input, it is + automatically read in and attributes of Header are filled + + Attributes + ------------- + + Many of the attributes are needed in the .edi file. They are marked with + a yes for 'In .edi' + + ============== ======================================= ======== =========== + Attributes Description Default In .edi + ============== ======================================= ======== =========== + acqby Acquired by None yes + acqdate Acquired date (YYYY-MM-DD) None yes + dataid Station name, should be a string None yes + edi_fn Full path to .edi file None no + elev Elevation of station (m) None yes + empty Value for missing data 1e32 yes + fileby File written by None yes + filedate Date the file is written (YYYY-MM-DD) None yes + header_list List of header lines None no + lat Latitude of station [1]_ None yes + loc Location name where station was None yes + collected + lon Longitude of station [1]_ None yes + phoenix_edi [ True | False ] if phoenix .edi format False no + progdate Date of program version to write .edi None yes + progvers Version of program writing .edi None yes + stdvers Standard version None yes + units Units of distance m yes + _header_keys list of metadata input into .edi [2]_ + header block. no + ============== ======================================= ======== =========== + + .. rubric:: footnotes + .. [1] Internally everything is converted to decimal degrees. Output is + written as HH:MM:SS.ss so Winglink can read them in. + .. [2] If you want to change what metadata is written into the .edi file + change the items in _header_keys. Default attributes are: + * acqby + * acqdate + * dataid + * elev + * fileby + * lat + * loc + * lon + * filedate + * empty + * progdate + * progvers + + Methods + ------------- + + ====================== ==================================================== + Methods Description + ====================== ==================================================== + get_header_list get header lines from edi file + read_header read in header information from header_lines + write_header write header lines, returns a list of lines to write + ====================== ==================================================== + + + Examples + -------------- + + :Read Header: :: + + >>> import mtpy.core.edi as mtedi + >>> header_obj = mtedi.Header(edi_fn=r"/home/mt/mt01.edi") + """ def __init__(self, edi_fn=None, **kwargs): @@ -392,7 +661,27 @@ def get_header_list(self): def read_header(self, header_list=None): """ - read a header information + read a header information from either edi file or a list of lines + containing header information. + + Arguments + ----------- + + **header_list** : list + should be read from an .edi file or input as + ['key_01=value_01', 'key_02=value_02'] + + Examples + ---------- + + :Input header_list: :: + + >>> h_list = ['lat=36.7898', 'lon=120.73532', 'elev=120.0', ... + >>> 'dataid=mt01'] + >>> import mtpy.core.edi as mtedi + >>> header = mtedi.Header() + >>> header.read_header(h_list) + """ if header_list is not None: @@ -445,7 +734,26 @@ def read_header(self, header_list=None): def write_header(self, header_list=None): """ - write header information to a list of lines + Write header information to a list of lines. + + Arguments + ------------- + + **header_list** : list + should be read from an .edi file or input as + ['key_01=value_01', 'key_02=value_02'] + + Returns + --------------- + + **header_lines** : list + list of lines containing header information + will be of the form + ['>HEAD\n', + ' key_01=value_01\n'] + if None is input then reads from input .edi + file or uses attribute information to write + metadata. """ if header_list is not None: @@ -509,7 +817,8 @@ class Information(object): not much to really do here, but just keep it in the same format that it is read in as, except if it is in phoenix format then split the two paragraphs - up + up so they are sequential. + """ def __init__(self, edi_fn=None): @@ -616,7 +925,78 @@ def _validate_info_list(self, info_list): #============================================================================== class DefineMeasurement(object): """ - hold information about the measurement + DefineMeasurement class holds information about the measurement. This + includes how each channel was setup. The main block contains information + on the reference location for the station. This is a bit of an archaic + part and was meant for a multiple station .edi file. This section is also + important if you did any forward modeling with Winglink cause it only gives + the station location in this section. The other parts are how each channel + was collected. An example define measurement section looks like:: + + >=DEFINEMEAS + + MAXRUN=999 + MAXMEAS=9999 + UNITS=M + REFTYPE=CART + REFLOC="par28ew" + REFLAT=-30:12:49.4693 + REFLONG=139:47:50.87 + REFELEV=0 + + >HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + >HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 + >EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 + >HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to read in. + + Attributes + ------------- + + ================= ==================================== ======== =========== + Attributes Description Default In .edi + ================= ==================================== ======== =========== + edi_fn Full path to edi file read in None no + maxchan Maximum number of channels measured None yes + maxmeas Maximum number of measurements 9999 yes + maxrun Maximum number of measurement runs 999 yes + meas_#### HMeasurement or EMEasurment object None yes + defining the measurement made [1]_ + refelev Reference elevation (m) None yes + reflat Reference latitude [2]_ None yes + refloc Reference location None yes + reflon Reference longituted [2]_ None yes + reftype Reference coordinate system 'cart' yes + units Units of length m yes + _define_meas_keys Keys to include in define_measurment [3]_ no + section. + ================= ==================================== ======== =========== + + .. rubric:: footnotes + .. [1] Each channel with have its own define measurement and depending on + whether it is an E or H channel the metadata will be different. + the #### correspond to the channel number. + .. [2] Internally everything is converted to decimal degrees. Output is + written as HH:MM:SS.ss so Winglink can read them in. + .. [3] If you want to change what metadata is written into the .edi file + change the items in _header_keys. Default attributes are: + * maxchan + * maxrun + * maxmeas + * reflat + * reflon + * refelev + * reftype + * units + """ def __init__(self, edi_fn=None): @@ -805,7 +1185,31 @@ def write_define_measurement(self, measurement_list=None): #============================================================================== class HMeasurement(object): """ - class to put the MT measurements in + HMeasurement contains metadata for a magnetic field measurement + + Attributes + ------------ + + ====================== ==================================================== + Attributes Description + ====================== ==================================================== + id Channel number + chtype [ HX | HY | HZ | RHX | RHY ] + x x (m) north from reference point (station) + y y (m) east from reference point (station) + azm angle of sensor relative to north = 0 + acqchan name of the channel acquired usually same as chtype + ====================== ==================================================== + + Example + ------------ + + :Fill Metadata: :: + + >>> import mtpy.core.edi as mtedi + >>> h_dict = {'id': '1', 'chtype':'hx', 'x':0, 'y':0, 'azm':0} + >>> h_dict['acqchn'] = 'hx' + >>> hmeas = mtedi.HMeasurement(**h_dict) """ def __init__(self, **kwargs): @@ -826,7 +1230,36 @@ def __init__(self, **kwargs): #============================================================================== class EMeasurement(object): """ - class to put the MT measurements in + EMeasurement contains metadata for an electric field measurement + + Attributes + ------------ + + ====================== ==================================================== + Attributes Description + ====================== ==================================================== + id Channel number + chtype [ EX | EY ] + x x (m) north from reference point (station) of one + electrode of the dipole + y y (m) east from reference point (station) of one + electrode of the dipole + x2 x (m) north from reference point (station) of the + other electrode of the dipole + y2 y (m) north from reference point (station) of the + other electrode of the dipole + acqchan name of the channel acquired usually same as chtype + ====================== ==================================================== + + Example + ------------ + + :Fill Metadata: :: + + >>> import mtpy.core.edi as mtedi + >>> e_dict = {'id': '1', 'chtype':'ex', 'x':0, 'y':0, 'x2':50, 'y2':50} + >>> e_dict['acqchn'] = 'ex' + >>> emeas = mtedi.EMeasurement(**e_dict) """ def __init__(self, **kwargs): @@ -849,7 +1282,47 @@ def __init__(self, **kwargs): #============================================================================== class DataSection(object): """ - read the data section (XSECT part) + DataSection contains the small metadata block that describes which channel + is which. A typical block looks like:: + + >=MTSECT + + ex=1004.001 + ey=1005.001 + hx=1001.001 + hy=1002.001 + hz=1003.001 + nfreq=14 + sectid=par28ew + nchan=None + maxblks=None + + Arguments + ------------- + **edi_fn** : string + full path to .edi file to read in. + + Attributes + ------------- + + ================= ==================================== ======== =========== + Attributes Description Default In .edi + ================= ==================================== ======== =========== + ex ex channel id number None yes + ey ey channel id number None yes + hx hx channel id number None yes + hy hy channel id number None yes + hz hz channel id number None yes + nfreq number of frequencies None yes + sectid section id, should be the same + as the station name -> Header.dataid None yes + maxblks maximum number of data blocks None yes + nchan number of channels None yes + _kw_list list of key words to put in metadata [1]_ no + ================= ==================================== ======== =========== + + .. rubric:: Footnotes + .. [1] Changes these values to change what is written to edi file """ def __init__(self, edi_fn=None): self.edi_fn = edi_fn From ced3593fc9bf3c978272cff777abeb508805646e Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:16:24 -0700 Subject: [PATCH 031/124] adapting mtpy.core.mt to new_edi_object --- mtpy/core/mt.py | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index fa6a8259..847ae6b0 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -13,7 +13,7 @@ """ #============================================================================== -import mtpy.core.edi as MTedi +import mtpy.core.edi_object_new as MTedi import mtpy.core.z as MTz import mtpy.utils.latlongutmconversion as MTutm import mtpy.utils.exceptions as MTex @@ -45,10 +45,12 @@ class MT(object): """ Basic object containing all information necessary for a single MT station - including: + including + Attributes + ------------ ===================== ===================================================== - **Attribute** Description + Attribute Description ===================== ===================================================== name station name lat station latitude in decimal degrees @@ -88,8 +90,10 @@ class MT(object): - tipper --> np.ndarray(n_freq, 1, 2, dtype='complex') - tippererr --> np.ndarray(n_freq, 1, 2) + Methods + ------------ ===================== ===================================================== - **methods** Description + Methods Description ===================== ===================================================== write_edi_file write an edi_file from the MT data remove_distortion remove distortion from the data following @@ -103,12 +107,12 @@ class MT(object): Examples ------------------- - * Read in Spectra data: + * Read in Spectra data:: >>> import mtpy.core.mt as mt >>> mt_obj = mt.MT(r"/home/edi_files/mt_01.edi", data_type='spectra') - * Plot MT response: + * Plot MT response:: >>> import mtpy.core.mt as mt >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") @@ -118,7 +122,7 @@ class MT(object): >>> plot_obj.plot_tipper = 'yri' >>> plot_obj.redraw_plot() - * Remove Distortion: + * Remove Distortion:: >>> import mtpy.core.mt as mt >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") @@ -130,7 +134,7 @@ class MT(object): >>> mt_obj.write_edi_file(new_Z=new_z) wrote file to: /home/edi_files/s01_RW.edi - * Interpolate: + * Interpolate:: >>> import mtpy.core.mt as mt >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") @@ -458,14 +462,14 @@ def write_edi_file(self, new_fn=None, new_Z=None, new_Tipper=None): """ if new_Z is not None: - self.edi_object.set_Z(new_Z) + self.edi_object.Z = new_Z else: - self.edi_object.set_Z(self._Z) + self.edi_object.Z = self._Z if new_Tipper is not None: - self.edi_object.set_Tipper(new_Tipper) + self.edi_object.Tipper = new_Tipper else: - self.edi_object.set_Tipper(self._Tipper) + self.edi_object.Tipper = self._Tipper self.edi_object.lat = self._lat self.edi_object.lon = self._lon @@ -475,7 +479,7 @@ def write_edi_file(self, new_fn=None, new_Z=None, new_Tipper=None): if new_fn is None: new_fn = self.fn[:-4]+'_RW'+'.edi' - self.edi_object.writefile(new_fn) + self.edi_object.write_edi_file(new_edi_fn=new_fn) #--> check the order of frequencies From 909b765be1a8a498442cc72566ecdb6796f0af6b Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:22:56 -0700 Subject: [PATCH 032/124] removed an old piece in occam1d.py --- mtpy/modeling/occam1d.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 9b65c462..778548ad 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -363,7 +363,6 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, for ii in range(nf): if 'te' in mode.lower(): pol = 'xy' -<<<<<<< HEAD if res_err == 'data': rerr = rho_err[ii, 0, 1] else: @@ -382,12 +381,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, '{0:{1}}\n'.format(perr, self._string_fmt)])) data_count += 2 - elif mode.lower() == 'tm': -======= - i1,i2 = 0,1 - tetm = True elif 'tm' in mode.lower(): ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 pol = 'yx' i1,i2 = 1,0 tetm = True From 5913f79a6685628689d5f418bc7e644ebd5dfa44 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:26:45 -0700 Subject: [PATCH 033/124] removed an old piece in occam1d_gui.py --- mtpy/gui/occam1d_gui.py | 71 ++--------------------------------------- 1 file changed, 2 insertions(+), 69 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 6808be94..bf2ae502 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -84,8 +84,6 @@ def ui_setup(self): self.occam_widget = OccamWidget() self.central_widget = self.setCentralWidget(self.occam_widget) -<<<<<<< HEAD -======= ## menu bar self.menu_bar = self.menuBar() #self.menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 40)) @@ -105,11 +103,6 @@ def ui_setup(self): #self.setMenuBar(self.menu_bar) #self.show() -<<<<<<< HEAD ->>>>>>> 25c182d0d6e41e01d66b435fe9b8ffce7fe89287 -======= ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 ->>>>>>> fdb88b7b1352dd3519c7cca9844034a6fcd4799e #-------------------------------------------------------- # stream the output of occam 1D self.my_stream = MyStream() @@ -118,9 +111,6 @@ def ui_setup(self): sys.stdout = self.my_stream QtCore.QMetaObject.connectSlotsByName(self) -<<<<<<< HEAD - -======= def display_help(self): ll = ['***Be sure you have a working executable of Occam1D first***\n', @@ -146,11 +136,6 @@ def display_help(self): help_string = '\n'.join(ll) QtGui.QMessageBox.information(self.central_widget, 'Help', help_string) -<<<<<<< HEAD ->>>>>>> 25c182d0d6e41e01d66b435fe9b8ffce7fe89287 -======= ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 ->>>>>>> fdb88b7b1352dd3519c7cca9844034a6fcd4799e #============================================================================== # Occam 1D widget #============================================================================== @@ -168,29 +153,16 @@ def __init__(self): self.occam_exec = '' self.mpl_widget = OccamPlot() -<<<<<<< HEAD self.l2_widget = PlotL2() self.l2_widget.l2_widget.mpl_connect('pick event', self.on_click) self.l2_widget.l2_widget.setFocusPolicy(QtCore.Qt.ClickFocus) self.l2_widget.l2_widget.setFocus() - self.res_err = 10. - self.phase_err = 5. - self.data_mode = 'TE' - self.edi_fn = '' -======= - self.l2_widget = PlotL2() -<<<<<<< HEAD ->>>>>>> 25c182d0d6e41e01d66b435fe9b8ffce7fe89287 -======= ->>>>>>> fdb88b7b1352dd3519c7cca9844034a6fcd4799e - self.res_err = 10. self.phase_err = 5. self.data_mode = 'Det' self.edi_fn = '' self.ss = 1.0 ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 self.save_dir = None self.station_dir = None @@ -207,27 +179,6 @@ def setup_ui(self): label_font.setPointSize (16) #--------------------------------------------------- -<<<<<<< HEAD - # menu bar -# self.menu_bar = QtGui.QMenuBar(self) -# self.menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 40)) -# -# self.menu_data = QtGui.QMenu(self.menu_bar) -# self.menu_data.setTitle("Data") -# -# self.menu_model = QtGui.QMenu(self.menu_bar) -# self.menu_model.setTitle("Model") -# -# self.menu_startup = QtGui.QMenu(self.menu_bar) -# self.menu_startup.setTitle('Startup') -# -# self.setMenuBar(self.menu_bar) -======= -<<<<<<< HEAD ->>>>>>> 25c182d0d6e41e01d66b435fe9b8ffce7fe89287 -======= ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 ->>>>>>> fdb88b7b1352dd3519c7cca9844034a6fcd4799e self.get_occam_path_button = QtGui.QPushButton('Occam1D Path') self.get_occam_path_button.clicked.connect(self.get_occam_path) @@ -258,14 +209,7 @@ def setup_ui(self): self.data_mode_label = QtGui.QLabel('Mode') self.data_mode_combo = QtGui.QComboBox() -<<<<<<< HEAD - self.data_mode_combo.addItem('TE') - self.data_mode_combo.addItem('TM') - self.data_mode_combo.addItem('Det') - #self.data_mode_combo.addItem('Both') - self.data_mode_combo.activated[str].connect(self.set_data_mode) - -======= + self.data_mode_combo.addItem('Det') self.data_mode_combo.addItem('TE') self.data_mode_combo.addItem('TM') @@ -277,7 +221,6 @@ def setup_ui(self): self.data_ss_edit.setText('{0:.2f}'.format(self.ss)) self.data_ss_edit.editingFinished.connect(self.set_ss) ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 # vertical layer parameters self.model_label = QtGui.QLabel('Model Parameters') self.model_label.setFont(label_font) @@ -339,14 +282,7 @@ def setup_ui(self): self.iter_combo_edit.setMinimumWidth(50) self.output_box = QtGui.QTextEdit() -<<<<<<< HEAD -======= - -<<<<<<< HEAD ->>>>>>> 25c182d0d6e41e01d66b435fe9b8ffce7fe89287 -======= ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 ->>>>>>> fdb88b7b1352dd3519c7cca9844034a6fcd4799e + #---set the layout--------------- path_layout = QtGui.QHBoxLayout() path_layout.addWidget(self.get_occam_path_button) @@ -364,12 +300,9 @@ def setup_ui(self): data_grid.addWidget(self.data_mode_label, 3, 0) data_grid.addWidget(self.data_mode_combo, 3, 1) -<<<<<<< HEAD -======= data_grid.addWidget(self.data_ss_button, 4, 0) data_grid.addWidget(self.data_ss_edit, 4, 1) ->>>>>>> a99e84edafbd1ce411b4e09b68a1f74f7b362fa3 model_grid = QtGui.QGridLayout() model_grid.addWidget(self.model_label, 0, 0) From 66422a9f66dbef8cfb20df7c412f1b2378e4cecc Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:28:27 -0700 Subject: [PATCH 034/124] removed an old piece in occam1d_gui.py --- mtpy/gui/occam1d_gui.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index bf2ae502..0802ec2e 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -972,8 +972,8 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, if len(rxy) > 0: rte = self.axr.errorbar(1./r1.freq[rxy], r1.res_te[2][rxy], - yerr=None, - **r_kwargs)) + yerr=None, + **r_kwargs) self.resp_obj = occam1d.Data() self.resp_obj.read_resp_file(resp_fn, data_fn=data_fn) From 6993b2088a67d559192cb1364d7387ca1637e1bd Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:30:55 -0700 Subject: [PATCH 035/124] documented new_edi_object and added lat, lon, elev, station as attributes --- mtpy/gui/occam1d_gui.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 0802ec2e..f8fac81d 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -977,16 +977,6 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, self.resp_obj = occam1d.Data() self.resp_obj.read_resp_file(resp_fn, data_fn=data_fn) - #--> cut out missing data - rxy = np.where(self.resp_obj.res_te[2] != 0)[0] - - #--> TE mode Data - if len(rxy) > 0: - rter = self.axr.errorbar(1./self.resp_obj.freq[rxy], - self.resp_obj.res_te[2][rxy], - - else: - pass #--> cut out missing data ryx = np.where(self.resp_obj.res_tm[2] != 0)[0] @@ -998,8 +988,6 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, yerr=None, **r_kwargs) - else: - pass #--------------------plot phase-------------------------------- #cut out missing data points first pxy = np.where(self.resp_obj.phase_te[2]!=0)[0] From eeda34801b2b2ccc85f4ab7f17f29e43d5ade4e4 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:34:38 -0700 Subject: [PATCH 036/124] removed test from new_edi_object.py --- mtpy/core/edi_object_new.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index fcb8e803..390cbc58 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -1427,24 +1427,4 @@ def write_data_sect(self, data_sect_list=None): return data_sect_lines - -#============================================================================== -# Test -#============================================================================== -#fn = r"d:\Peacock\MTData\EDI_Files\mb018.edi" -#fn = r"c:\Users\jpeacock\Documents\ShanesBugs\Jess\EDI_files\104A.edi" -fn = r"C:\Users\jrpeacock\Documents\Test_Data\Faults\par28ew.edi" -#fn = r"c:\Users\jpeacock\Documents\SaudiArabia\edi_files_fixed_lon\101_rr.edi" -#h = Header(edi_fn=fn) -#h.read_header() - -#m = DefineMeasurement(edi_fn=fn) -# -#print ''.join(m.write_define_measurement()) - -edi_obj = Edi(edi_fn=fn) - -#d = DataSection(edi_fn=fn) -#for key in sorted(h.__dict__.keys()): -# print key, h.__dict__[key] \ No newline at end of file From 4c546ac0544c3b35cff05c4dcc16536032126a1c Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:39:33 -0700 Subject: [PATCH 037/124] removed data_type key word from edi_editor.py --- mtpy/core/mt.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index 847ae6b0..c987f86b 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -157,7 +157,6 @@ def __init__(self, fn=None, **kwargs): self._east = kwargs.pop('east', None) self._north = kwargs.pop('north', None) self._rotation_angle = kwargs.pop('rotation_angle', 0) - self._data_type = kwargs.pop('data_type', 'z') #provide key words to fill values if an edi file does not exist if 'z_object' in kwargs: @@ -420,7 +419,7 @@ def _read_edi_file(self): """ - self.edi_object = MTedi.Edi(self.fn, datatype=self._data_type) + self.edi_object = MTedi.Edi(self.fn) self.lat = self.edi_object.lat self.lon = self.edi_object.lon self.elev = self.edi_object.elev From 2ff31452306ea5eae179216f0484af8ea9046bda Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:42:27 -0700 Subject: [PATCH 038/124] added keyword edi_fn to mt.py --- mtpy/core/mt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index c987f86b..478cb390 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -419,7 +419,7 @@ def _read_edi_file(self): """ - self.edi_object = MTedi.Edi(self.fn) + self.edi_object = MTedi.Edi(edi_fn=self.fn) self.lat = self.edi_object.lat self.lon = self.edi_object.lon self.elev = self.edi_object.elev From 02d48836f7f59600fb53af53cb0f98b44954eed2 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 17:52:15 -0700 Subject: [PATCH 039/124] fixed the rogue reference to fn in line 1041 in edi_new_object.py --- mtpy/core/edi_object_new.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index 390cbc58..d8a3281d 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -1038,7 +1038,7 @@ def get_measurement_lists(self): self.measurement_list = [] meas_find = False count = 0 - with open(fn, 'r') as fid: + with open(self.edi_fn, 'r') as fid: for line in fid: if line.find('>=') == 0: count += 1 From 13fa0f87d523676d09bd23dc42f9d9aad81b28d5 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 18:00:09 -0700 Subject: [PATCH 040/124] fixed capitalization of data_sect to be upper. --- mtpy/core/edi_object_new.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index d8a3281d..a3cf4ac7 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -1420,7 +1420,7 @@ def write_data_sect(self, data_sect_list=None): data_sect_lines = ['\n>=mtsect\n'.upper()] for key in self._kw_list: data_sect_lines.append('{0}{1}={2}\n'.format(tab, - key, + key.upper(), getattr(self, key))) data_sect_lines.append('\n') From 40bd9a13e8472363f71139fc55d7289214463a52 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 18:07:58 -0700 Subject: [PATCH 041/124] fixed assignment of zrot and trot --- mtpy/core/edi_object_new.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py index a3cf4ac7..e52a45b4 100644 --- a/mtpy/core/edi_object_new.py +++ b/mtpy/core/edi_object_new.py @@ -242,6 +242,7 @@ def _read_mt(self, data_lines): self.Z.freq = freq_arr.copy() self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) + self.Z.rotation_angle = data_dict['zrot'] self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ np.array(data_dict['zxxi'])*1j @@ -264,6 +265,10 @@ def _read_mt(self, data_lines): self.Tipper.tippererr = np.zeros((self.Data_sect.nfreq, 1, 2), dtype=np.float) self.Tipper.freq = freq_arr.copy() + try: + self.Tipper.rotation_angle = data_dict['trot'] + except KeyError: + self.Tipper.rotation_angle = data_dict['zrot'] if 'txr.exp' in data_dict.keys(): self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ From 4c6c8daa0339fef648a5de566216e20bd28544bd Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 18:31:42 -0700 Subject: [PATCH 042/124] changed edi_new_object to edi and edi to edi_old --- mtpy/core/edi.py | 4277 +++++++++++------------------------ mtpy/core/edi_object_new.py | 1435 ------------ mtpy/core/edi_old.py | 3050 +++++++++++++++++++++++++ 3 files changed, 4381 insertions(+), 4381 deletions(-) delete mode 100644 mtpy/core/edi_object_new.py create mode 100644 mtpy/core/edi_old.py diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 0de4c337..e52a45b4 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1,40 +1,13 @@ -#!/usr/bin/env python - +# -*- coding: utf-8 -*- """ -============= -edi module -============= - -Classes --------- - * **Edi** reads and writes .edi files - -Functions ----------- - - - read_edifile - - write_edifile - - combine_edifiles - - validate_edifile - - rotate_edifile - - _generate_edifile_string - - _cut_sectionstring - - _validate_edifile_string - - -LK, JP 2013 +Created on Tue Dec 22 16:03:31 2015 +@author: jpeacock """ -#================================================================= +import os import numpy as np -import os,sys -import os.path as op -import time, calendar, datetime -import copy -#required for finding HMEAS and EMEAS at once: -import re - +import datetime import mtpy.utils.format as MTft import mtpy.utils.calculator as MTcc @@ -42,3009 +15,1421 @@ import mtpy.utils.filehandling as MTfh import mtpy.core.z as MTz -#for interactive debugging: -reload(MTex) -reload(MTft) -reload(MTcc) -reload(MTz) - -# try: -# import ipdb -# except: -# pass - - -#================================================================= +tab = ' '*4 class Edi(object): """ - Edi class - generates an edi-object. - - Methods include reading and writing from and to edi-files, - rotations/combinations of edi-files, as well as 'get' and - 'set' for all edi file sections - - Errors are given as standard deviations (sqrt(VAR)) + This class is for .edi files, mainly reading and writing. Has been tested + on Winglink and Phoenix output .edi's, which are meant to follow the + archaic EDI format put forward by SEG. Can read impedance, Tipper and/or + spectra data. - **Agruments:** + The Edi class contains a class for each major section of the .edi file. + + Arguments + --------------- - **filename** : string - full path to file name - - ====================== ==================================================== - **Attributes** Description - ====================== ==================================================== - period periods extracted from edi file - data_dict dictionary of data information - definemeas definemeas block - edi_dict dictionary of edi blocks - elev elevation of station - filename name of edi file - freq frequencies extracted from edi file - head header information - hmeas_emeas hmeas and emeas block - infile_string full string of edi file - info_dict ditionary of information block - info_string full string of information block - lat latitude in decimal degrees - lon longitude in decimal degrees - mtsect mtsect block - n_freq number of frequencies - Tipper mtpy.core.z.Tipper object - zrot rotation angle in degrees - Z mtpy.core.z.Z object - ====================== ==================================================== - - ====================== ==================================================== - **Methods** Description - ====================== ==================================================== - readfile read edi file - rotate rotate Z and Tipper - writefile write edi file - ====================== ==================================================== + **edi_fn** : string + full path to .edi file to be read in. + *default* is None. If an .edi file is input, it is + automatically read in and attributes of Edi are filled + - :Example: :: + Methods + --------------- + ===================== ===================================================== + Methods Description + ===================== ===================================================== + read_edi_file Reads in an edi file and populates the associated + classes and attributes. + write_edi_file Writes an .edi file following the EDI format given + the apporpriate attributes are filled. Writes out + in impedance and Tipper format. + _read_data Reads in the impedance and Tipper blocks, if the + .edi file is in 'spectra' format, read_data converts + the data to impedance and Tipper. + _read_mt Reads impedance and tipper data from the appropriate + blocks of the .edi file. + _read_spectra Reads in spectra data and converts it to impedance + and Tipper data. + ===================== ===================================================== - >>> import mtpy.core.edi as mtedi - >>> e1 = mtedi.Edi(r"/home/MT/mt01.edi") - >>> e1.rotate(30) - >>> e1.writefile(r"/home/MT/Rotated/mt01.edi") + Attributes + --------------- + + ===================== ========================================== ========== + Attributes Description default + ===================== ========================================== ========== + Data_sect DataSection class, contains basin + information on the data collected and in + whether the data is in impedance or + spectra. + Define_measurement DefineMeasurement class, contains + information on how the data was + collected. + edi_fn full path to edi file read in None + Header Header class, contains metadata on + where, when, and who collected the data + Info Information class, contains information + on how the data was processed and how the + transfer functions where estimated. + Tipper mtpy.core.z.Tipper class, contains the + tipper data + Z mtpy.core.z.Z class, contains the + impedance data + _block_len number of data in one line. 6 + _data_header_str header string for each of the data '!****{0}****!' + section + _num_format string format of data. ' 15.6e' + _t_labels labels for tipper blocks + _z_labels labels for impedance blocks + ===================== ========================================== ========== + Examples + --------------------- + :Change Latitude: :: + >>> import mtpy.core.edi as mtedi + >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01.edi") + >>> # change the latitude + >>> edi_obj.header.lat = 45.7869 + >>> new_edi_fn = edi_obj.write_edi_file() """ - def __init__(self, filename=None, datatype = 'z'): - - """ - Initialise an instance of the Edi class. - - Initialise the attributes with None/empty dictionary + def __init__(self, edi_fn=None): - **Agruments:** - - **filename** : string - full path to file name - """ - - self.filename = filename - self.infile_string = None - self._head = {'lat':None,'long':None,'elev':None} - self._info_string = None - self._info_dict = {} - self._definemeas = {} - self._hmeas_emeas = None - self._mtsect = {} - self._freq = None - self._zrot = None + self.edi_fn = edi_fn + self.Header = Header() + self.Info = Information() + self.Define_measurement = DefineMeasurement() + self.Data_sect = DataSection() self.Z = MTz.Z() self.Tipper = MTz.Tipper() - self._station = None - self._lat = None - self._lon = None - self._elev = None - - if filename is not None: - self.readfile(self.filename, datatype = datatype) - - def readfile(self, fn, datatype = 'z'): - """ - Read in an EDI file. - - Returns an exception, if the file is invalid - (following MTpy standards). - - **Agruments:** + self._z_labels = [['zxxr', 'zxxi', 'zxx.var'], + ['zxyr', 'zxyi', 'zxy.var'], + ['zyxr', 'zyxi', 'zyx.var'], + ['zyyr', 'zyyi', 'zyy.var']] + + self._t_labels = [['txr.exp', 'txi.exp', 'txvar.exp'], + ['tyr.exp', 'tyi.exp', 'tyvar.exp']] + + self._data_header_str = '!****{0}****!\n' + + self._num_format = ' 15.6e' + self._block_len = 6 - **fn** : string - full path to .edi file name + if self.edi_fn is not None: + self.read_edi_file() - **daytatype** : | 'z' | 'resphase' | 'spectra' | - * 'z' for impedance data *default* - * 'resphase' for resistivity and phase data - * 'spectra' for spectra data + def read_edi_file(self, edi_fn=None): + """ + Read in an edi file and fill attributes of each section's classes. + Including: + * Header + * Info + * Define_measurement + * Data_sect + * Z + * Tipper + .. note:: Automatically detects if data is in spectra format. All + data read in is converted to impedance and Tipper. + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to be read in + *default* is None + + + + Examples + ------------- + + :Read edi: :: + + >>> import mtpy.core.Edi as mtedi + >>> edi_obj = mtedi.Edi() + >>> edi_obj.read_edi_file(edi_fn=r"/home/mt/mt01.edi") + """ - - self.__init__() + if edi_fn is not None: + self.edi_fn = edi_fn + + if self.edi_fn is None: + raise MTex.MTpyError_EDI("No edi file input, check edi_fn") + + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI("Could not find {0}, check path".format(self.edi_fn)) - print ' ...nulled all attributes of current MTedi.Edi instance.' - print 'reading in Edi file: {0}'.format(fn) - print datatype - infile = op.abspath(fn) - - - try: - datatype = datatype.lower() - if not datatype in ['z' , 'resphase', 'spectra']: - raise - except: - raise MTex.MTpyError_edi_file('ERROR - datatype not understood') - - #check for existence - if not op.isfile(infile): - raise MTex.MTpyError_edi_file('File is not existing: %s'%infile) - - with open(infile,'r') as F: - edistring = F.read() - - #validate edi file string following MTpy standard - if not _validate_edifile_string(edistring): - raise MTex.MTpyError_edi_file('%s is no proper EDI file'%infile) - - self.filename = infile - self.infile_string = edistring - - #read out the mandatory EDI file sections from the raw string - try: - self._read_head(edistring) - except: - raise MTex.MTpyError_edi_file( - 'Could not read HEAD section: %s'%infile) - - try: - self._read_info(edistring) - except: - print 'Could not read INFO section: {0}'.format(infile) - - - try: - self._read_definemeas(edistring) - except: - raise MTex.MTpyError_edi_file( - 'Could not read DEFINEMEAS section: %s'%infile) - - try: - self._read_hmeas_emeas(edistring) - except: - print 'Could not read HMEAS/EMEAS sub-section: %s'%infile - - try: - self._read_mtsect(edistring) - except: - print 'Could not read MTSECT section: %s'%infile - - try: - self._read_freq(edistring) - except: - print 'Could not read FREQ section: %s'%infile - - if datatype == 'z': - try: - self._read_z(edistring) - except: - raise MTex.MTpyError_edi_file( - 'Could not read Z section: %s -- check datatype!'%infile) - - elif datatype == 'resphase': - try: - self._read_res_phase(edistring) - except: - raise MTex.MTpyError_edi_file( - 'Could not read ResPhase-/Rho-section -- check datatype!: %s'%infile) - #rotation is optional - try: - self._read_rhorot(edistring) - except: - self.zrot = None #list(np.zeros((self.n_freq()))) - print 'Could not read Rhorot section: %s'%infile - - elif datatype == 'spectra': - try: - self._read_spectra(edistring) - except: - raise MTex.MTpyError_edi_file( - 'Could not read Spectra section: %s'%infile) - - - #Tipper is optional - if self.Tipper.tipper is None: - try: - self._read_tipper(edistring) - except: - self.Tipper = MTz.Tipper() - #self.tippererr = None - print 'Could not read Tipper section: %s'%infile - - #rotation is optional - if self._zrot is None: - try: - self._read_zrot(edistring) - except: - self.zrot = np.zeros((len(self.Z.z))) - print 'Could not read Zrot section: %s'%infile - - - def edi_dict(self): + + self.Header = Header(edi_fn=self.edi_fn) + self.Info = Information(edi_fn=self.edi_fn) + self.Define_measurement = DefineMeasurement(edi_fn=self.edi_fn) + self.Data_sect = DataSection(edi_fn=self.edi_fn) + + self._read_data() + + if self.Header.lat is None: + self.Header.lat = self.Define_measurement.reflat + print 'Got latitude from reflat for {0}'.format(self.Header.dataid) + if self.Header.lon is None: + self.Header.lon = self.Define_measurement.reflon + print 'Got longitude from reflon for {0}'.format(self.Header.dataid) + if self.Header.elev is None: + self.Header.elev = self.Define_measurement.refelev + print 'Got elevation from refelev for {0}'.format(self.Header.dataid) + + print "Read in edi file for station {0}".format(self.Header.dataid) + + def _read_data(self): """ - Collect sections of the EDI file and return them as a dictionary. - + read either impedance or spectra data """ - - edi_dict = {} - - edi_dict['HEAD'] = self.head - edi_dict['INFO'] = self.info_dict - edi_dict['info_string'] = self.info_string - edi_dict['DEFINEMEAS'] = self.definemeas - edi_dict['HMEAS_EMEAS'] = self.hmeas_emeas - edi_dict['MTSECT'] = self.mtsect - edi_dict['FREQ'] = self.freq - edi_dict['Z'] = _make_z_dict(self.Z) - if self.Tipper.tipper is not None: - edi_dict['TIPPER'] = _make_tipper_dict(self.Tipper) - edi_dict['ZROT'] = self.zrot - - - return edi_dict - - - def data_dict(self): + + if self.edi_fn is None: + raise MTex.MTpyError_EDI('No edi file input, check edi_fn') + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI('No edi file input, check edi_fn') + + with open(self.edi_fn, 'r') as fid: + lines = fid.readlines()[self.Data_sect.line_num+2:] + + if self.Data_sect.data_type == 'spectra': + self._read_spectra(lines) + + elif self.Data_sect.data_type == 'z': + self._read_mt(lines) + + def _read_mt(self, data_lines): """ - Return collected raw data information in one dictionary: - Z, Tipper, Zrot, freq - + read in impedance and tipper data if its there """ data_dict = {} + data_find = False + for line in data_lines: + if line.find('>') == 0 and line.find('!') == -1: + line_list = line[1:].strip().split() + key = line_list[0].lower() + if key[0] == 'z' or key[0] == 't' or key == 'freq': + data_find = True + data_dict[key] = [] + else: + data_find = False + + + elif data_find == True and line.find('>') == -1 and line.find('!') == -1: + d_lines = line.strip().split() + for ii, dd in enumerate(d_lines): + # check for empty values and set them to 0, check for any + # other characters sometimes there are ****** for a null + # component + try: + d_lines[ii] = float(dd) + if d_lines[ii] == 1.0e32: + d_lines[ii] = 0.0 + except ValueError: + d_lines[ii] = 0.0 + data_dict[key] += d_lines + + ## fill useful arrays + freq_arr = np.array(data_dict['freq'], dtype=np.float) + + ## fill impedance tensor + self.Z.freq = freq_arr.copy() + self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) + self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) + self.Z.rotation_angle = data_dict['zrot'] + + self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ + np.array(data_dict['zxxi'])*1j + self.Z.z[:, 0, 1] = np.array(data_dict['zxyr'])+\ + np.array(data_dict['zxyi'])*1j + self.Z.z[:, 1, 0] = np.array(data_dict['zyxr'])+\ + np.array(data_dict['zyxi'])*1j + self.Z.z[:, 1, 1] = np.array(data_dict['zyyr'])+\ + np.array(data_dict['zyyi'])*1j + + self.Z.zerr[:, 0, 0] = np.array(data_dict['zxx.var']) + self.Z.zerr[:, 0, 1] = np.array(data_dict['zxy.var']) + self.Z.zerr[:, 1, 0] = np.array(data_dict['zyx.var']) + self.Z.zerr[:, 1, 1] = np.array(data_dict['zyy.var']) - data_dict['z'] = self.Z.z - data_dict['zerr'] = self.Z.zerr - data_dict['tipper'] = self.Tipper.tipper - data_dict['tippererr'] = self.Tipper.tippererr - data_dict['zrot'] = self.zrot - data_dict['freq'] = self.freq - - return data_dict - - #----------------Periods---------------------------------------------- - def _get_period(self): - """ - Return an array of periods (output values in seconds). - """ - + + ## fill tipper data if there it exists + self.Tipper.tipper = np.zeros((self.Data_sect.nfreq, 1, 2), + dtype=np.complex) + self.Tipper.tippererr = np.zeros((self.Data_sect.nfreq, 1, 2), + dtype=np.float) + self.Tipper.freq = freq_arr.copy() try: - return 1./np.array(self.freq) - except: - return None - - def _set_period(self, period_lst): + self.Tipper.rotation_angle = data_dict['trot'] + except KeyError: + self.Tipper.rotation_angle = data_dict['zrot'] + + if 'txr.exp' in data_dict.keys(): + self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ + np.array(data_dict['txi.exp'])*1j + self.Tipper.tipper[:, 0, 1] = np.array(data_dict['tyr.exp'])+\ + np.array(data_dict['tyi.exp'])*1j + + self.Tipper.tippererr[:, 0, 0] = np.array(data_dict['txvar.exp']) + self.Tipper.tippererr[:, 0, 1] = np.array(data_dict['tyvar.exp']) + + else: + print 'Could not find any Tipper data.' + + def _read_spectra(self, data_lines): """ - Set freq by a list of periods (values in seconds). + read in spectra data """ - if len(period_lst) is not len(self.Z.z): - print 'length of periods list not correct'+\ - '({0} instead of {1})'.format(len(period_lst), - len(self.Z.z)) - return - self.freq = 1./np.array(period_lst) - - period = property(_get_period, _set_period, - doc='List of periods (values in seconds)') - - #----------------number of freq------------------------------------- - def n_freq(self): + + data_dict = {} + + def write_edi_file(self, new_edi_fn=None): """ - Return the number of freq/length of the Z data array . + Write a new edi file from either an existing .edi file or from data + input by the user into the attributes of Edi. + + Arguments + ----------- + + **new_edi_fn** : string + full path to new edi file. + *default* is None, which will write to the same + file as the input .edi with as: + r"/home/mt/mt01_1.edi" + + Examples + ----------- + + :Write EDI file: :: + + >>> import mtpy.core.edi as mtedi + >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01/edi") + >>> edi_obj.Header.dataid = 'mt01_rr' + >>> edi_obj.write_edi_file() """ - if self.freq is not None: - return len(self.freq) + + if new_edi_fn is None: + if self.edi_fn is not None: + new_edi_fn = self.edi_fn + else: + new_edi_fn = os.path.join(os.getcwd(), + '{0}.edi'.format(self.Header.dataid)) + new_edi_fn = MTfh.make_unique_filename(new_edi_fn) + + if self.Header.dataid is None: + self.read_edi_file() + + # write lines + header_lines = self.Header.write_header() + info_lines = self.Info.write_info() + define_lines = self.Define_measurement.write_define_measurement() + dsect_lines = self.Data_sect.write_data_sect() + + # write out frequencies + freq_lines = [self._data_header_str.format('frequencies'.upper())] + freq_lines += self._write_data_block(self.Z.freq, 'freq') + + # write out rotation angles + zrot_lines = [self._data_header_str.format('impedance rotation angles'.upper())] + zrot_lines += self._write_data_block(self.Z.rotation_angle, 'zrot') + + # write out data only impedance and tipper + z_data_lines = [self._data_header_str.format('impedances'.upper())] + for ii in range(2): + for jj in range(2): + z_lines_real = self._write_data_block(self.Z.z[:, ii, jj].real, + self._z_labels[2*ii+jj][0]) + z_lines_imag = self._write_data_block(self.Z.z[:, ii, jj].imag, + self._z_labels[2*ii+jj][1]) + z_lines_var = self._write_data_block(self.Z.zerr[:, ii, jj], + self._z_labels[2*ii+jj][2]) + + z_data_lines += z_lines_real + z_data_lines += z_lines_imag + z_data_lines += z_lines_var + + # write out rotation angles + trot_lines = [self._data_header_str.format('tipper rotation angles'.upper())] + if type(self.Tipper.rotation_angle) is float: + trot = np.repeat(self.Tipper.rotation_angle, self.Tipper.freq.size) else: - return None - - #----------------elevation---------------------------------------------- - def _get_elev(self): - """ - get elevation from either header or definmeas + trot = self.Tipper.rotation_angle + trot_lines += self._write_data_block(trot, 'trot') + + # write out tipper lines + t_data_lines = [self._data_header_str.format('tipper'.upper())] + for jj in range(2): + t_lines_real = self._write_data_block(self.Tipper.tipper[:, 0, jj].real, + self._t_labels[jj][0]) + t_lines_imag = self._write_data_block(self.Tipper.tipper[:, 0, jj].imag, + self._t_labels[jj][1]) + t_lines_var = self._write_data_block(self.Tipper.tippererr[:, 0, jj], + self._t_labels[jj][2]) + + t_data_lines += t_lines_real + t_data_lines += t_lines_imag + t_data_lines += t_lines_var + + edi_lines = header_lines+\ + info_lines+\ + define_lines+\ + dsect_lines+\ + freq_lines+\ + zrot_lines+\ + z_data_lines+\ + trot_lines+\ + t_data_lines+['>END'] + + with open(new_edi_fn, 'w') as fid: + fid.write(''.join(edi_lines)) + + print 'Wrote {0}'.format(new_edi_fn) + return new_edi_fn + def _write_data_block(self, data_comp_arr, data_key): """ - try: - return self.head['elev'] - except KeyError: - try: - return self.definemeas['refelev'] - except KeyError: - print 'Could not find elevation value' + write a data block - def _set_elev(self, value): + return a list of strings + """ + if data_key.lower().find('z') >= 0 and \ + data_key.lower() not in ['zrot', 'trot']: + block_lines = ['>{0} ROT=ZROT // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + elif data_key.lower().find('t') >= 0 and \ + data_key.lower() not in ['zrot', 'trot']: + block_lines = ['>{0} ROT=TROT // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + elif data_key.lower() == 'freq': + block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + + elif data_key.lower() in ['zrot', 'trot']: + block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), + data_comp_arr.size)] + + else: + raise MTex.MTpyError_EDI('Cannot write block for {0}'.format(data_key)) - no_key = True - try: - self.head['elev'] = MTft._assert_position_format('elev',value) - no_key = False - except : - pass - try: - self.definemeas['refelev'] = \ - MTft._assert_position_format('elev',value) - no_key = False - except : - pass - - if no_key is True: - print 'Invalid elevation value' + for d_index, d_comp in enumerate(data_comp_arr, 1): + if d_comp == 0.0 and data_key.lower() not in ['zrot', 'trot']: + d_comp = float(self.Header.empty) + # write the string in the specified format + num_str = '{0:{1}}'.format(d_comp, self._num_format) + + # check to see if a new line is needed + if d_index%self._block_len == 0: + num_str += '\n' + # at the end of the block add a return + if d_index == data_comp_arr.size: + num_str += '\n' - elev = property(_get_elev, _set_elev, doc='Location elevation in meters') - - #----------------latitude---------------------------------------------- + block_lines.append(num_str) + + return block_lines + + #----------------------------------------------------------------------- + # set a few important properties + # --> Latitude def _get_lat(self): + """ + get latitude + """ + + return self.Header.lat + + def _set_lat(self, input_lat): """ - get latitude looking for keywords 'lat' in head or 'reflat' in definemeas - - """ -# try: - return self.head['lat'] - # except KeyError: - # try: - # return self.definemeas['reflat'] - # except KeyError: - # print 'Could not find Latitude' - - def _set_lat(self, value): - """ - set latitude value in head and defmeas - converts to decimal degrees + set latitude and make sure it is converted to a float """ - no_key = True - try: - self.head['lat'] = MTft._assert_position_format('lat',value) - no_key = False - except: - pass - try: - self.definemeas['reflat'] = \ - MTft._assert_position_format('lat',value) - no_key = False - except: - pass - if no_key is True: - print 'Invalid latitude value' - - lat = property(_get_lat, _set_lat, doc='Location latitude in degrees') + self.Header.lat = MTft._assert_position_format('lat', input_lat) + print 'Converted input latitude to decimal degrees: {0: .6f}'.format( + self.Header.lat) + + lat = property(fget=_get_lat, fset=_set_lat, + doc='Latitude in decimal degrees') + + # --> Longitude + def _get_lon(self): + return self.Header.lon + + def _set_lon(self, input_lon): + self.Header.lon = MTft._assert_position_format('lon', input_lon) + print 'Converted input longitude to decimal degrees: {0: .6f}'.format( + self.Header.lon) + + lon = property(fget=_get_lon, fset=_set_lon, + doc='Longitude in decimal degrees') + + # --> Elevation + def _get_elev(self): + return self.Header.elev + + def _set_elev(self, input_elev): + self.Header.elev = MTft._assert_position_format('elev', input_elev) + + elev = property(fget=_get_elev, fset=_set_elev, + doc='Elevation in meters') + + # --> station + def _get_station(self): + return self.Header.dataid + + def _set_station(self, new_station): + if type(new_station) is not str: + new_station = '{0}'.format(new_station) + self.Header.dataid = new_station + self.Data_sect.sectid = new_station + + station = property(fget=_get_station, fset=_set_station, + doc="station name") +#============================================================================== +# Header object +#============================================================================== +class Header(object): + """ + Header class contains all the information in the header section of the .edi + file. A typical header block looks like:: + + >HEAD + + ACQBY=None + ACQDATE=None + DATAID=par28ew + ELEV=0.000 + EMPTY=1e+32 + FILEBY=WG3DForward + FILEDATE=2016/04/11 19:37:37 UTC + LAT=-30:12:49 + LOC=None + LON=139:47:50 + PROGDATE=2002-04-22 + PROGVERS=WINGLINK EDI 1.0.22 + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to be read in. + *default* is None. If an .edi file is input, it is + automatically read in and attributes of Header are filled + + Attributes + ------------- + + Many of the attributes are needed in the .edi file. They are marked with + a yes for 'In .edi' + + ============== ======================================= ======== =========== + Attributes Description Default In .edi + ============== ======================================= ======== =========== + acqby Acquired by None yes + acqdate Acquired date (YYYY-MM-DD) None yes + dataid Station name, should be a string None yes + edi_fn Full path to .edi file None no + elev Elevation of station (m) None yes + empty Value for missing data 1e32 yes + fileby File written by None yes + filedate Date the file is written (YYYY-MM-DD) None yes + header_list List of header lines None no + lat Latitude of station [1]_ None yes + loc Location name where station was None yes + collected + lon Longitude of station [1]_ None yes + phoenix_edi [ True | False ] if phoenix .edi format False no + progdate Date of program version to write .edi None yes + progvers Version of program writing .edi None yes + stdvers Standard version None yes + units Units of distance m yes + _header_keys list of metadata input into .edi [2]_ + header block. no + ============== ======================================= ======== =========== + + .. rubric:: footnotes + .. [1] Internally everything is converted to decimal degrees. Output is + written as HH:MM:SS.ss so Winglink can read them in. + .. [2] If you want to change what metadata is written into the .edi file + change the items in _header_keys. Default attributes are: + * acqby + * acqdate + * dataid + * elev + * fileby + * lat + * loc + * lon + * filedate + * empty + * progdate + * progvers + + Methods + ------------- + + ====================== ==================================================== + Methods Description + ====================== ==================================================== + get_header_list get header lines from edi file + read_header read in header information from header_lines + write_header write header lines, returns a list of lines to write + ====================== ==================================================== + + + Examples + -------------- + + :Read Header: :: - #----------------longitude---------------------------------------------- - def _get_lon(self): + >>> import mtpy.core.edi as mtedi + >>> header_obj = mtedi.Header(edi_fn=r"/home/mt/mt01.edi") + + """ + + def __init__(self, edi_fn=None, **kwargs): + self.edi_fn = edi_fn + self.dataid = None + self.acqby = None + self.fileby = None + self.acqdate = None + self.units = None + self.filedate = datetime.datetime.utcnow().strftime( + '%Y/%m/%d %H:%M:%S UTC') + self.loc = None + self.lat = None + self.lon = None + self.elev = None + self.empty = 1E32 + self.progvers = None + self.progdate = None + self.phoenix_edi = False + + self.header_list = None + + self._header_keys = ['acqby', + 'acqdate', + 'dataid', + 'elev', + 'fileby', + 'lat', + 'loc', + 'lon', + 'filedate', + 'empty', + 'progdate', + 'progvers'] + + for key in kwargs.keys(): + setattr(self, key, kwargs[key]) + + if self.edi_fn is not None: + self.read_header() + + def get_header_list(self): """ - get longitude looking for keywords 'long' in head or 'reflong' in - definemeas + Get the header information from the .edi file in the form of a list, + where each item is a line in the header section. """ - try: - return self.head['long'] - except KeyError: - try: - return self.definemeas['reflong'] - except KeyError: - print 'Could not find Longitude' - - def _set_lon(self, value): + + if self.edi_fn == None: + print 'No edi file to read' + return + if os.path.isfile(self.edi_fn) == False: + print 'Could not find {0}, check path'.format(self.edi_fn) + + self.header_list = [] + head_find = False + count = 0 + with open(self.edi_fn, 'r') as fid: + for line in fid: + if line.find('>') == 0: + count += 1 + if line.lower().find('head') > 0: + head_find = True + else: + head_find = False + if count == 2 and head_find == False: + break + elif count == 1 and line.find('>') != 0 and head_find == True: + line = line.strip() + # skip any blank lines + if len(line) > 2: + self.header_list.append(line.strip()) + + self.header_list = self._validate_header_list(self.header_list) + + def read_header(self, header_list=None): """ - set longitude value in head and defmeas - converts to decimal degrees + read a header information from either edi file or a list of lines + containing header information. + + Arguments + ----------- + + **header_list** : list + should be read from an .edi file or input as + ['key_01=value_01', 'key_02=value_02'] + + Examples + ---------- + + :Input header_list: :: + + >>> h_list = ['lat=36.7898', 'lon=120.73532', 'elev=120.0', ... + >>> 'dataid=mt01'] + >>> import mtpy.core.edi as mtedi + >>> header = mtedi.Header() + >>> header.read_header(h_list) + """ - no_key = True - - try: - self.head['long'] = MTft._assert_position_format('lon',value) - no_key = False - except: - pass - try: - self.definemeas['reflong'] = \ - MTft._assert_position_format('lon',value) - no_key = False - except: - pass - - if no_key is True: - - print 'Invalid longitude value' - - + if header_list is not None: + self.header_list = self._validate_header_list(header_list) + + if self.header_list is None and self.edi_fn is None: + print 'Nothing to read. header_list and edi_fn are None' + + if self.header_list is None and self.edi_fn is not None: + self.get_header_list() + + for h_line in self.header_list: + h_list = h_line.split('=') + key = h_list[0].lower() + value = h_list[1].replace('"', '') + + if key in 'latitude': + key = 'lat' + value = MTft._assert_position_format(key, value) + + elif key in 'longitude': + key = 'lon' + value = MTft._assert_position_format(key, value) - lon = property(_get_lon, _set_lon, doc='Location longitude in degrees') - - #--------------Read Header---------------------------------------------- - def _read_head(self, edistring): + elif key in 'elevation': + key = 'elev' + try: + value = float(value) + except ValueError: + value = 0.0 + print 'No elevation data' + + elif key in ['country', 'state', 'loc', 'location', 'prospect']: + key = 'loc' + try: + if getattr(self, key) is not None: + value = '{0}, {1}'.format(getattr(self, key), value) + except KeyError: + pass + # test if its a phoenix formated .edi file + elif key in ['progvers']: + if value.lower().find('mt-editor') != -1: + self.phoenix_edi = True + + elif key in ['fileby']: + if value == '': + value = 'mtpy' + + setattr(self, key, value) + + def write_header(self, header_list=None): + """ + Write header information to a list of lines. + + Arguments + ------------- + + **header_list** : list + should be read from an .edi file or input as + ['key_01=value_01', 'key_02=value_02'] + + Returns + --------------- + + **header_lines** : list + list of lines containing header information + will be of the form + ['>HEAD\n', + ' key_01=value_01\n'] + if None is input then reads from input .edi + file or uses attribute information to write + metadata. + """ + + if header_list is not None: + self.read_header(header_list) + + if self.header_list is None and self.edi_fn is not None: + self.get_header_list() + + header_lines = ['>HEAD\n\n'] + for key in sorted(self._header_keys): + value = getattr(self, key) + if key in ['progdate', 'progvers']: + if value is None: + value = 'mtpy' + elif key in ['lat', 'lon']: + value = MTft.convert_dms_tuple2string( + MTft.convert_degrees2dms_tuple(value)) + if key in ['elev']: + try: + value = '{0:.3f}'.format(value) + except ValueError: + value = '0.000' + + if key in ['filedate']: + value = datetime.datetime.utcnow().strftime( + '%Y/%m/%d %H:%M:%S UTC') + + header_lines.append('{0}{1}={2}\n'.format(tab, key.upper(), value)) + header_lines.append('\n') + return header_lines + + def _validate_header_list(self, header_list): """ - Read in the HEAD section from the raw edi-string. + make sure the input header list is valid + + returns a validated header list """ - - try: - temp_string = _cut_sectionstring(edistring,'HEAD') - except: - raise - - head_dict = {} - t1 = temp_string.strip().split('\n') - t2 = [i.strip() for i in t1 if '=' in i] - for j in t2: - k = j.split('=') - key = str(k[0]).lower().strip() - value = k[1].replace('"','') - if key == 'dataid': - value = value.replace(' ','_') - if key in ['lat','long','lon','latitude','longitude','ele','elev', - 'elevation']: - value = MTft._assert_position_format(key,value) - - if key in ['ele','elev','elevation']: - key = 'elev' - if key in ['lat','latitude']: - key = 'lat' - if key in ['long','lon','longitude']: - key = 'long' - #bring longitude to standard interval: - if 180 < value <= 360: - value -= 360 - - head_dict[key] = value - - if not head_dict.has_key('elev'): - head_dict['elev'] = 0. - try: - self.station = head_dict['dataid'].replace(' ','_') - except KeyError: - print 'Did not find station name under dataid in HEAD' - - self._head = head_dict + if header_list is None: + print 'No header information to read' + return None + + new_header_list = [] + for h_line in header_list: + h_line = h_line.strip().replace('"', '') + if len(h_line) > 1: + h_list = h_line.split('=') + if len(h_list) == 2: + key = h_list[0] + value = h_list[1] + new_header_list.append('{0}={1}'.format(key, value)) - - #--------------Read Info---------------------------------------------- - def _read_info(self, edistring): + return new_header_list + +#============================================================================== +# Info object +#============================================================================== +class Information(object): + """ + Contain, read, and write info section of .edi file + + not much to really do here, but just keep it in the same format that it is + read in as, except if it is in phoenix format then split the two paragraphs + up so they are sequential. + + """ + + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + self.info_list = None + + if self.edi_fn is not None: + self.read_info() + + def get_info_list(self): """ - Read in the INFO section from the raw edi-string. + get a list of lines from the info section """ - - try: - temp_string = _cut_sectionstring(edistring,'INFO') - except: - raise - - self._info_string = temp_string.strip() - - - t1 = temp_string.strip().split('\n') - t2 = [i.strip() for i in t1 if '=' in i or ':' in i] - - info_dict = {} - - for tmp_str in t2: - #fill dictionary - #ignore lines with no information after '='' or ':' - - if '=' in tmp_str: - t3 = tmp_str.split('=') - key = str(t3[0]).lower().strip() - value = t3[1].replace('"','').strip() - if not len(value) == 0: - info_dict[key] = value - - elif ':' in tmp_str: - #consider potential ':' characters in coordinates! - t3 = tmp_str.split(':') - key = str(t3[0]).lower().strip() - value = t3[1:] - value = [i.strip().replace('"','').strip() for i in value] - if len(value) > 1: - value = ':'.join(value) - else: - value = value[0] - - if not len(value) == 0: - info_dict[key] = value - - if 'station' not in info_dict: - station = self.head['dataid'] - if len(station) == 0: - station = op.splitext(op.basename(self.filename))[0] - info_dict['station'] = station - - info_dict['Z_unit'] = 'km/s' - - self._info_dict = info_dict - - #--------------Read Definemeas-------------------------------------------- - def _read_definemeas(self, edistring): - """ - Read in the DEFINEMEAS section from the raw edi-string. - """ - - try: - temp_string = _cut_sectionstring(edistring,'DEFINEMEAS') - except: - raise - - d_dict = {} - - t1 = temp_string.strip().split('\n') - - for tmp_str in t1: - if '=' in tmp_str: - k = tmp_str.strip().split('=') - key = k[0].lower() - value = k[1].replace('"','').strip() - if len(value) != 0: - if 'lat' in key: - value = MTft._assert_position_format('lat',value) - if 'lon' in key: - value = MTft._assert_position_format('lon',value) - - - d_dict[key] = value - - if len(d_dict.keys()) == 0: - raise - - - self._definemeas = d_dict - - #--------------Read h and e measure--------------------------------------- - def _read_hmeas_emeas(self, edistring): + + if self.edi_fn is None: + print 'no edi file input, check edi_fn attribute' + return + if os.path.isfile(self.edi_fn) is False: + print 'Could not find {0}, check path'.format(self.edi_fn) + return + + self.info_list = [] + info_find = False + phoenix_file = False + phoenix_list_02 = [] + count = 0 + with open(self.edi_fn, 'r') as fid: + for line in fid: + if line.find('>') == 0: + count += 1 + if line.lower().find('info') > 0: + info_find = True + else: + info_find = False + if count > 2 and info_find == False: + break + elif count > 1 and line.find('>') != 0 and info_find == True: + if line.lower().find('run information') >= 0: + phoenix_file = True + if phoenix_file == True and len(line) > 40: + self.info_list.append(line[0:37].strip()) + phoenix_list_02.append(line[38:].strip()) + else: + if len(line.strip()) > 1: + self.info_list.append(line.strip()) + + self.info_list += phoenix_list_02 + # validate the information list + self.info_list = self._validate_info_list(self.info_list) + + def read_info(self, info_list=None): """ - Read in the HMEAS/EMEAS section from the raw edi-string. + read information section of the .edi file """ - try: - temp_string = _cut_sectionstring(edistring,'HMEAS_EMEAS') - except: - raise - - t1 = temp_string.strip().split('\n') - lo_hmeas_emeas = [] - for j in t1: - j = j.replace('>','') - lo_j = j.split() - hemeas_line = ' '.join(lo_j) - #skip empty lines - if len(lo_j) == 0 : - continue - - lo_hmeas_emeas.append(hemeas_line) - - self._hmeas_emeas = lo_hmeas_emeas - - #--------------Read mt sect-------------------------------------------- - def _read_mtsect(self, edistring): + if info_list is not None: + self.info_list = self._validate_info_list(info_list) + + if self.edi_fn is not None and self.info_list is None: + self.get_info_list() + + if self.info_list is None: + print "Could not read information" + return + + def write_info(self, info_list=None): """ - Read in the MTSECT section from the raw edi-string. + """ - - try: - temp_string = _cut_sectionstring(edistring,'MTSECT') - except: - raise - m_dict = {} - - t1 = temp_string.strip().split('\n') - - for tmp_str in t1: - if '=' in tmp_str: - k = tmp_str.strip().split('=') - key = k[0].lower() - value = k[1].replace('"','').strip() - if len(value) != 0: - m_dict[key] = value - - if len(m_dict.keys()) == 0: - raise - - - self._mtsect = m_dict - - #--------------Read freq-------------------------------------------- - def _read_freq(self, edistring): + + if info_list is not None: + self.info_list = self._validate_info_list(info_list) + + + info_lines = ['>INFO\n\n'] + for line in self.info_list: + info_lines.append('{0}{1}\n'.format(tab, line)) + + return info_lines + + + def _validate_info_list(self, info_list): """ - Read in the FREQ section from the raw edi-string. + check to make sure the info list input is valid, really just checking + for Phoenix format where they put two columns in the file and remove + any blank lines and the >info line """ - - try: - temp_string = _cut_sectionstring(edistring,'FREQ') - except: - raise - - lo_freqs = [] - - t1 = temp_string.strip().split('\n')[1:] - - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_freqs.append(float(k)) - except: + + new_info_list = [] + for line in info_list: + # get rid of empty lines + lt = str(line).strip() + if len(lt) > 1: + if line.find('>') == 0: pass - - self._freq = np.array(lo_freqs) - - #be sure to set tipper freq - if self.Tipper.tipper is not None: - self.Tipper.freq = self._freq + else: + new_info_list.append(line.strip()) + + return new_info_list - #be sure to set z_object's freq - self.Z.freq = self._freq - - #--------------Read impedance tensor-------------------------------------- - def _read_z(self, edistring): - """ - Read in impedances information from a raw EDI-string. - Store it as attribute (complex array). - - """ - - compstrings = ['ZXX','ZXY','ZYX','ZYY'] - Z_entries = ['R','I','.VAR'] - z_array = np.zeros((self.n_freq(), 2, 2), dtype=np.complex) - zerr_array = np.zeros((self.n_freq(), 2, 2), dtype=np.float) - z_dict = {} - - for idx_comp,comp in enumerate(compstrings): - for idx_zentry,zentry in enumerate(Z_entries): - sectionhead = comp + zentry - try: - temp_string = _cut_sectionstring(edistring,sectionhead) - except: - continue - - lo_z_vals = [] - - #check, if correct number of entries are given in the block - t0 = temp_string.strip().split('\n')[0] - n_dummy = int(float(t0.split('//')[1].strip())) - if not n_dummy == self.n_freq(): - raise MTex.MTpyError_edi_file("Error - number of entries"+\ - " does not equal number of"+\ - " freq") - - - t1 = temp_string.strip().split('\n')[1:] - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_z_vals.append(float(k)) - except: - pass - - z_dict[sectionhead] = lo_z_vals - - if len(z_dict) == 0 : - raise MTex.MTpyError_inputarguments("ERROR - Could not find "+\ - "any Z component") - - - for idx_freq in range( self.n_freq()): - try: - z_array[idx_freq,0,0] = np.complex(z_dict['ZXXR'][idx_freq], - z_dict['ZXXI'][idx_freq]) - except: - pass - try: - z_array[idx_freq,0,1] = np.complex(z_dict['ZXYR'][idx_freq], - z_dict['ZXYI'][idx_freq]) - except: - pass - try: - z_array[idx_freq,1,0] = np.complex(z_dict['ZYXR'][idx_freq], - z_dict['ZYXI'][idx_freq]) - except: - pass - try: - z_array[idx_freq,1,1] = np.complex(z_dict['ZYYR'][idx_freq], - z_dict['ZYYI'][idx_freq]) - except: - pass - - - for idx_comp,comp in enumerate(compstrings): - sectionhead = comp + '.VAR' - if sectionhead in z_dict: - zerr_array[idx_freq, idx_comp/2, idx_comp%2] = \ - z_dict[sectionhead][idx_freq] - - self.Z.z = z_array - - #errors are stddev, not VAR : - self.Z.zerr = np.sqrt(zerr_array) + +#============================================================================== +# Define measurement class +#============================================================================== +class DefineMeasurement(object): + """ + DefineMeasurement class holds information about the measurement. This + includes how each channel was setup. The main block contains information + on the reference location for the station. This is a bit of an archaic + part and was meant for a multiple station .edi file. This section is also + important if you did any forward modeling with Winglink cause it only gives + the station location in this section. The other parts are how each channel + was collected. An example define measurement section looks like:: + + >=DEFINEMEAS + + MAXRUN=999 + MAXMEAS=9999 + UNITS=M + REFTYPE=CART + REFLOC="par28ew" + REFLAT=-30:12:49.4693 + REFLONG=139:47:50.87 + REFELEV=0 + + >HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + >HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 + >EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 + >HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 + >HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + + Arguments + ------------- + + **edi_fn** : string + full path to .edi file to read in. + + Attributes + ------------- + + ================= ==================================== ======== =========== + Attributes Description Default In .edi + ================= ==================================== ======== =========== + edi_fn Full path to edi file read in None no + maxchan Maximum number of channels measured None yes + maxmeas Maximum number of measurements 9999 yes + maxrun Maximum number of measurement runs 999 yes + meas_#### HMeasurement or EMEasurment object None yes + defining the measurement made [1]_ + refelev Reference elevation (m) None yes + reflat Reference latitude [2]_ None yes + refloc Reference location None yes + reflon Reference longituted [2]_ None yes + reftype Reference coordinate system 'cart' yes + units Units of length m yes + _define_meas_keys Keys to include in define_measurment [3]_ no + section. + ================= ==================================== ======== =========== + + .. rubric:: footnotes + .. [1] Each channel with have its own define measurement and depending on + whether it is an E or H channel the metadata will be different. + the #### correspond to the channel number. + .. [2] Internally everything is converted to decimal degrees. Output is + written as HH:MM:SS.ss so Winglink can read them in. + .. [3] If you want to change what metadata is written into the .edi file + change the items in _header_keys. Default attributes are: + * maxchan + * maxrun + * maxmeas + * reflat + * reflon + * refelev + * reftype + * units - #--------------Read Tipper---------------------------------------------- - def _read_tipper(self, edistring): + """ + + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + self.measurement_list = None + + self.maxchan = None + self.maxmeas = 7 + self.maxrun = 999 + self.refelev = None + self.reflat = None + self.reflon = None + self.reftype = 'cartesian' + self.units = 'm' + + self._define_meas_keys = ['maxchan', + 'maxrun', + 'maxmeas', + 'reflat', + 'reflon', + 'refelev', + 'reftype', + 'units'] + + if self.edi_fn is not None: + self.read_define_measurement() + + def get_measurement_lists(self): """ - Read in Tipper information from a raw EDI-string. - Store it as attribute (complex array). - + get measurement list including measurement setup """ - - compstrings = ['TX','TY'] - T_entries = ['R','I','VAR'] - - tipper_array = np.zeros((self.n_freq(),1,2),dtype=np.complex) - tippererr_array = np.zeros((self.n_freq(),1,2),dtype=np.float) - t_dict = {} - - - for idx_comp,comp in enumerate(compstrings): - for idx_tentry,tentry in enumerate(T_entries): - temp_string = None - try: - sectionhead = comp + tentry + '.EXP' - temp_string = _cut_sectionstring(edistring,sectionhead) - except: - try: - sectionhead = comp + tentry - temp_string = _cut_sectionstring(edistring,sectionhead) - except: - # if tipper is given with sectionhead "TX.VAR" - if (idx_tentry == 2) and (temp_string is None): - try: - sectionhead = comp + '.' + tentry - temp_string = _cut_sectionstring(edistring, - sectionhead) - except: - pass + if self.edi_fn is None: + print 'No edi file input, check edi_fn attribute' + return + + if os.path.isfile(self.edi_fn) is False: + print 'Could not find {0}, check path'.format(self.edi_fn) + + self.measurement_list = [] + meas_find = False + count = 0 + with open(self.edi_fn, 'r') as fid: + for line in fid: + if line.find('>=') == 0: + count += 1 + if line.lower().find('definemeas') > 0: + meas_find = True + else: + meas_find = False + if count == 2 and meas_find == False: + break + elif count == 1 and line.find('>') != 0 and meas_find == True: + line = line.strip() + if len(line) > 2: + self.measurement_list.append(line.strip()) + + # look for the >XMEAS parts + elif count == 1 and line.find('>') == 0 and meas_find == True: + if line.find('!') > 0: pass - - lo_t_vals = [] - - #check, if correct number of entries are given in the block - t0 = temp_string.strip().split('\n')[0] - n_dummy = int(float(t0.split('//')[1].strip())) - - if not n_dummy == self.n_freq(): - raise MTex.MTpyError_edi_file("Error - number of entries"+\ - " does not equal number of"+\ - " freq") - - t1 = temp_string.strip().split('\n')[1:] - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_t_vals.append(float(k)) - except: - pass - - t_dict[comp + tentry] = lo_t_vals - - - for idx_freq in range( self.n_freq()): - tipper_array[idx_freq,0,0] = np.complex(t_dict['TXR'][idx_freq], - t_dict['TXI'][idx_freq]) - tippererr_array[idx_freq,0,0] = t_dict['TXVAR'][idx_freq] - tipper_array[idx_freq,0,1] = np.complex(t_dict['TYR'][idx_freq], - t_dict['TYI'][idx_freq]) - tippererr_array[idx_freq,0,1] = t_dict['TYVAR'][idx_freq] - - self.Tipper.tipper = tipper_array - #errors are stddev, not VAR : - self.Tipper.tippererr = np.sqrt(tippererr_array) - self.Tipper.freq = self.freq - - #--------------Read Resistivity and Phase--------------------------------- - def _read_res_phase(self, edistring): - """ - Read in ResPhase-(RhoPhi-)information from a raw EDI-string. - Convert the information into Z and Zerr. - Store this as attribute (complex array). - + else: + line_list = line.strip().split() + m_dict = {} + for ll in line_list[1:]: + ll_list = ll.split('=') + key = ll_list[0].lower() + value = ll_list[1] + m_dict[key] = value + self.measurement_list.append(m_dict) + + def read_define_measurement(self, measurement_list=None): """ - # using the loop over all components. For each component check, - # if Rho and Phi are given, raise exception if not! Then convert the - # polar RhoPhi representation into the cartesian Z. Rho is assumed to - # be in Ohm m, Phi in degrees. Z will be in km/s. - z_array = np.zeros((self.n_freq(),2,2), 'complex') - zerr_array = np.zeros((self.n_freq(),2,2)) - - rhophistrings = ['RHO','PHS'] - compstrings = ['XX','XY','YX','YY'] - entries = ['','.ERR'] - - rhophi_dict = {} - for rp in rhophistrings: - for comp in compstrings: - for entry in entries: - sectionhead = rp + comp + entry - try: - temp_string = _cut_sectionstring(edistring,sectionhead) - except: - continue - - lo_vals = [] - #check, if correct number of entries are given in the block - t0 = temp_string.strip().split('\n')[0] - n_dummy = int(float(t0.split('//')[1].strip())) - if not n_dummy == self.n_freq(): - raise - - t1 = temp_string.strip().split('\n')[1:] - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_vals.append(float(k)) - except: - pass - - rhophi_dict[sectionhead] = lo_vals + read the define measurment section of the edi file + + should be a list with lines for: + - maxchan + - maxmeas + - maxrun + - refelev + - reflat + - reflon + - reftype + - units + - dictionaries for >XMEAS with keys: + - id + - chtype + - x + - y + - axm + -acqchn - if len (rhophi_dict) == 0: - raise - - for idx_freq in range( self.n_freq()): - r = np.zeros((2,2)) - tmp_rho = np.zeros((2,2)) - phi = np.zeros((2,2)) - rerr = np.zeros((2,2)) - phierr = np.zeros((2,2)) - zerr = np.zeros((2,2)) - - for idx_c, comp in enumerate(compstrings): - #convert rho to resistivity: - try: - r[idx_c/2,idx_c%2] = \ - np.sqrt(rhophi_dict['RHO'+comp][idx_freq] *\ - 5 * self.freq[idx_freq]) - tmp_rho[idx_c/2,idx_c%2] = rhophi_dict['RHO'+comp][idx_freq] - except: - pass - try: - phi[idx_c/2,idx_c%2] = rhophi_dict['PHS'+comp][idx_freq] - except: - pass - try: - try: - #check for small amplitude close to zero - if r[idx_c/2,idx_c%2] == 0: - raise - f1 = np.abs(np.sqrt(2.5*self.freq[idx_freq]/\ - r[idx_c/2,idx_c%2])*\ - (rhophi_dict['RHO'+comp+'.ERR'][idx_freq])) - except: - f1 = np.sqrt(rhophi_dict['RHO'+comp+'.ERR'][idx_freq]*\ - 5 * self.freq[idx_freq] ) - rerr[idx_c/2,idx_c%2] = f1 - except: - pass - try: - phierr[idx_c/2,idx_c%2] = \ - rhophi_dict['PHS'+comp +'.ERR'][idx_freq] - except: - pass - zerr[idx_c/2,idx_c%2] = max(MTcc.propagate_error_polar2rect( - r[idx_c/2,idx_c%2], - rerr[idx_c/2,idx_c%2], - phi[idx_c/2,idx_c%2], - phierr[idx_c/2,idx_c%2])) - - z_array[idx_freq] = MTcc.rhophi2z(tmp_rho, phi,self.freq[idx_freq]) - - zerr_array[idx_freq] = zerr - - - self.Z.z = z_array - self.Z.zerr = zerr_array - - - #--------------Read Rho rotations------------------------------------------ - def _read_rhorot(self, edistring): - """ - Read in the (optional) RhoRot section from the raw edi-string for - data file containing data in ResPhase style. Angles are stored in - the ZROT attribute. """ - - try: - temp_string = _cut_sectionstring(edistring,'RHOROT') - except: - lo_angles = np.zeros((self.n_freq())) - self.zrot = lo_angles - self.Z.rotation_angle = self.zrot - if self.Tipper.tipper is not None: - self.Tipper.rotation_angle = self.zrot - + + if measurement_list is not None: + self.measurement_list = measurement_list + + if self.measurement_list is None and self.edi_fn is not None: + self.get_measurement_lists() + + if self.measurement_list is None and self.edi_fn is None: + print 'Nothing to read, check edi_fn or measurement_list attributes' return - - - lo_angles = [] - - t1 = temp_string.strip().split('\n')[1:] - - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_angles.append(float(k)) - except: - pass - + + m_count = 1 + for line in self.measurement_list: + if type(line) is str: + line_list = line.split('=') + key = line_list[0].lower() + value = line_list[1] + if key in 'reflatitude': + key = 'reflat' + value = MTft._assert_position_format('lat', value) + elif key in 'reflongitude': + key = 'reflon' + value = MTft._assert_position_format('lon', value) + elif key in 'refelevation': + key = 'refelev' + value = MTft._assert_position_format('elev', value) + elif key in 'maxchannels': + key = 'maxchan' + value = int(value) + elif key in 'maxmeasurements': + key = 'maxmeas' + value = int(value) + setattr(self, key, value) - if len(lo_angles) != self.n_freq(): - raise - - self.zrot = np.array(lo_angles) - self.Z.rotation_angle = self.zrot - if self.Tipper.tipper is not None: - self.Tipper.rotation_angle = self.zrot - - #--------------Read Spectra---------------------------------------------- - def _read_spectra(self,edistring): + elif type(line) is dict: + try: + key = 'meas_{0:02.0f}'.format(float(line['id'])) + except KeyError: + key = 'meas_{0:02}'.format(m_count) + if line['chtype'].lower().find('h') >= 0: + value = HMeasurement(**line) + elif line['chtype'].lower().find('e') >= 0: + value = EMeasurement(**line) + setattr(self, key, value) + + def write_define_measurement(self, measurement_list=None): """ - Read in Spectra information from a raw EDI-string. - Convert the information into Z and Tipper. - + write the define measurement block as a list of strings """ - #identify and cut spectrasect part: - specset_string = _cut_sectionstring(edistring,'SPECTRASECT') - s_dict = {} - t1 = specset_string.strip().split('\n') - tipper_array = None - - s_dict['sectid'] = '' - - sectid = _find_key_value('sectid', '=',specset_string ) - if sectid is not None : - s_dict['sectid'] = sectid - - for tmp_str in t1: - if '=' in tmp_str: - k = tmp_str.strip().split('=') - key = k[0].lower() - value = k[1].replace('"','').strip() - if len(value) != 0: - s_dict[key] = value - - dummy4 = specset_string.upper().find('NCHAN') - n_chan = int(float( - specset_string[dummy4:].strip().split('=')[1].split()[0])) - try: - id_list = specset_string.split('//')[1].strip().split()[1:n_chan+1] - except: - raise MTex.MTpyError_EDI("ERROR - check number of channels in >=spectrasect") - - dummy5 = specset_string.upper().find('NFREQ') - n_freq = int(float( - specset_string[dummy5:].strip().split('=')[1].split()[0])) - lo_spectra_strings = [] - tmp_string = copy.copy(edistring) - - #read in all SPECTRA subsections into a list - while True: - try: - dummy3 = tmp_string.find('>SPECTRA') - #check, if SPECTRA subsection exists - - if dummy3 <0 : - raise - # cut the respective sub string - tmp_cut_string = _cut_sectionstring(tmp_string,'SPECTRA') - - #append to the list - lo_spectra_strings.append(tmp_cut_string) - - # reduce the input string by the keyword 'SPECTRA', - #so the subsequent subsection will be read in the next - #loop-run instead - tmp_string = tmp_string[:dummy3] + tmp_string[dummy3+8:] + if measurement_list is not None: + self.read_define_measurement(measurement_list=measurement_list) + + measurement_lines = ['>=DEFINEMEAS\n\n'] + for key in self._define_meas_keys: + value = getattr(self, key) + if key == 'reflat' or key == 'reflon': + value = MTft.convert_dms_tuple2string( + MTft.convert_degrees2dms_tuple(value)) + elif key == 'refelev': + value = '{0:.3f}'.format(value) + + measurement_lines.append('{0}{1}={2}\n'.format(tab, + key.upper(), + value)) + measurement_lines.append('\n') + + ## need to write the >XMEAS type + m_key_list = [kk for kk in self.__dict__.keys() if kk.find('meas_')==0] + if len(m_key_list) == 0: + print 'No XMEAS information.' + else: + for key in sorted(m_key_list): + m_obj = getattr(self, key) + if m_obj.chtype.lower().find('h') >= 0: + head = 'hmeas' + elif m_obj.chtype.lower().find('e') >= 0: + head = 'emeas' + else: + head = None - #exceptions for breaking the while, called, if no more SPECTRA - #subsections can be found - except: - break - - #assert that the list of read in SPECTRA subsection is not empty: - if len(lo_spectra_strings) == 0: - raise MTex.MTpyError_EDI('ERROR - EDI file does not contain'+\ - 'readable SPECTRA sections!') - - z_array = np.zeros((len(lo_spectra_strings),2,2), 'complex') - zerr_array = np.zeros((len(lo_spectra_strings),2,2)) + m_list = ['>{0}'.format(head.upper())] + for mkey, mfmt in zip(m_obj._kw_list, m_obj._fmt_list): + m_list.append(' {0}={1:{2}}'.format(mkey.upper(), + getattr(m_obj, mkey), + mfmt)) + m_list.append('\n') + measurement_lines.append(''.join(m_list)) - id_comps = ['HX', 'HY', 'EX', 'EY','RX', 'RY'] - if n_chan%2 != 0 : - id_comps = ['HX', 'HY','HZ', 'EX', 'EY','RX', 'RY'] - - tipper_array = np.zeros((len(lo_spectra_strings),1,2), 'complex') - tippererr_array = np.zeros((len(lo_spectra_strings),1,2)) - - lo_freqs = [] - lo_rots = [] - - id_channel_dict = _build_id_channel_dict(self.hmeas_emeas) - - channellist = [id_channel_dict[i] for i in id_list] - - for j in ['HX', 'HY', 'EX', 'EY'] : - if j not in channellist: - raise MTex.MTpyError_edi_file('Mandatory data for channel'+\ - '{0} missing!'.format(j)) - - - for s_idx, spectra in enumerate(lo_spectra_strings): - firstline = spectra.split('\n')[0] - freq = float(_find_key_value('FREQ','=',firstline)) - # Read information on uncertainties on data, given by AVGT value: - avgt = None + return measurement_lines + +#============================================================================== +# magnetic measurements +#============================================================================== +class HMeasurement(object): + """ + HMeasurement contains metadata for a magnetic field measurement + + Attributes + ------------ + + ====================== ==================================================== + Attributes Description + ====================== ==================================================== + id Channel number + chtype [ HX | HY | HZ | RHX | RHY ] + x x (m) north from reference point (station) + y y (m) east from reference point (station) + azm angle of sensor relative to north = 0 + acqchan name of the channel acquired usually same as chtype + ====================== ==================================================== + + Example + ------------ + + :Fill Metadata: :: + + >>> import mtpy.core.edi as mtedi + >>> h_dict = {'id': '1', 'chtype':'hx', 'x':0, 'y':0, 'azm':0} + >>> h_dict['acqchn'] = 'hx' + >>> hmeas = mtedi.HMeasurement(**h_dict) + """ + + def __init__(self, **kwargs): + + self._kw_list = ['id', 'chtype', 'x', 'y', 'azm', 'acqchan'] + self._fmt_list = ['<4.4g','<3', '<4.1f', '<4.1f', '<4.1f', '<4'] + for key in self._kw_list: + setattr(self, key, None) + + for key in kwargs.keys(): try: - avgt = float(_find_key_value('AVGT','=',firstline)) - except: - avgt = None - #if AVGT cannot be read, no errors are calculated - - lo_freqs.append(freq) - rotangle = 0. + setattr(self, key, float(kwargs[key])) + except ValueError: + setattr(self, key, kwargs[key]) + +#============================================================================== +# electric measurements +#============================================================================== +class EMeasurement(object): + """ + EMeasurement contains metadata for an electric field measurement + + Attributes + ------------ + + ====================== ==================================================== + Attributes Description + ====================== ==================================================== + id Channel number + chtype [ EX | EY ] + x x (m) north from reference point (station) of one + electrode of the dipole + y y (m) east from reference point (station) of one + electrode of the dipole + x2 x (m) north from reference point (station) of the + other electrode of the dipole + y2 y (m) north from reference point (station) of the + other electrode of the dipole + acqchan name of the channel acquired usually same as chtype + ====================== ==================================================== + + Example + ------------ + + :Fill Metadata: :: + + >>> import mtpy.core.edi as mtedi + >>> e_dict = {'id': '1', 'chtype':'ex', 'x':0, 'y':0, 'x2':50, 'y2':50} + >>> e_dict['acqchn'] = 'ex' + >>> emeas = mtedi.EMeasurement(**e_dict) + """ + + def __init__(self, **kwargs): + + self._kw_list = ['id', 'chtype', 'x', 'y', 'x2', 'y2', 'acqchan'] + self._fmt_list = ['<4.4g', '<3', '<4.1f', '<4.1f', '<4.1f', '<4.1f', + '<4'] + for key in self._kw_list: + setattr(self, key, None) + + for key in kwargs.keys(): try: - rotangle = float(_find_key_value('ROTSPEC','=',firstline)) - except: - pass - lo_rots.append(rotangle) - - datalist = [] - for innerline in spectra.split('\n')[1:]: - datalist.extend(innerline.strip().split()) - data = np.array([float(i) - for i in datalist]).reshape(n_chan,n_chan) + setattr(self, key, float(kwargs[key])) + except ValueError: + setattr(self, key, kwargs[key]) + + +#============================================================================== +# data section +#============================================================================== +class DataSection(object): + """ + DataSection contains the small metadata block that describes which channel + is which. A typical block looks like:: + + >=MTSECT + + ex=1004.001 + ey=1005.001 + hx=1001.001 + hy=1002.001 + hz=1003.001 + nfreq=14 + sectid=par28ew + nchan=None + maxblks=None - zdata = spectra2z(data, avgt, channellist) - z_array[s_idx] = zdata[0] - if zdata[2] is not None: - zerr_array[s_idx] = zdata[2] + Arguments + ------------- + **edi_fn** : string + full path to .edi file to read in. + + Attributes + ------------- + + ================= ==================================== ======== =========== + Attributes Description Default In .edi + ================= ==================================== ======== =========== + ex ex channel id number None yes + ey ey channel id number None yes + hx hx channel id number None yes + hy hy channel id number None yes + hz hz channel id number None yes + nfreq number of frequencies None yes + sectid section id, should be the same + as the station name -> Header.dataid None yes + maxblks maximum number of data blocks None yes + nchan number of channels None yes + _kw_list list of key words to put in metadata [1]_ no + ================= ==================================== ======== =========== + + .. rubric:: Footnotes + .. [1] Changes these values to change what is written to edi file + """ + def __init__(self, edi_fn=None): + self.edi_fn = edi_fn + + self.data_type = 'z' + self.line_num = 0 + self.data_sect_list = None + + self._kw_list = ['ex', + 'ey', + 'hx', + 'hy', + 'hz', + 'nfreq', + 'sectid', + 'nchan', + 'maxblks'] + + for key in self._kw_list: + setattr(self, key, None) - if n_chan%2 != 0 : - tipper_array[s_idx] = zdata[1] - if zdata[3] is not None: - tippererr_array[s_idx] = zdata[3] + if self.edi_fn is not None: + self.read_data_sect() + + + def get_data_sect(self): + """ + read in the data of the file, will detect if reading spectra or + impedance. + """ + + if self.edi_fn is None: + raise MTex.MTpyError_EDI('No edi file to read. Check edi_fn') - - self.Z = MTz.Z(z_array=z_array,zerr_array=zerr_array,freq=np.array(lo_freqs)) - self._set_freq(self.Z.freq) - self.Z.rotation_angle = np.array(lo_rots) - - self.zrot = self.Z.rotation_angle.copy() - - - if tipper_array is not None: - self.Tipper = MTz.Tipper(tipper_array=tipper_array, - tippererr_array= tippererr_array, - freq=self.freq) - self.Tipper.rotation_angle = self.zrot.copy() - - for i,j in enumerate(id_list): - s_dict[ id_comps[i] ] = j - - self.mtsect = s_dict - - - #--------------Read impedance rotation angles----------------------------- - def _read_zrot(self, edistring): + if os.path.isfile(self.edi_fn) is False: + raise MTex.MTpyError_EDI('Could not find {0}. Check path'.format(self.edi_fn)) + + self.data_sect_list = [] + data_sect_find = False + count = 0 + with open(self.edi_fn) as fid: + for ii, line in enumerate(fid): + if line.find('>=') == 0: + count += 1 + if line.lower().find('sect') > 0: + data_sect_find = True + self.line_num = ii + if line.lower().find('spect') > 0: + self.data_type = 'spectra' + elif line.lower().find('mt') > 0: + self.data_type = 'z' + else: + data_sect_find = False + if count > 2 and data_sect_find == False: + break + elif count == 2 and line.find('>') != 0 and \ + data_sect_find == True: + if len(line.strip()) > 2: + self.data_sect_list.append(line.strip()) + + def read_data_sect(self, data_sect_list=None): """ - Read in the (optional) Zrot section from the raw edi-string. + read data section """ - - try: - temp_string = _cut_sectionstring(edistring,'ZROT') - except: - lo_angles = np.zeros((self.n_freq())) - self.zrot = lo_angles - self.Z.rotation_angle = self.zrot - return - - - lo_angles = [] - - t1 = temp_string.strip().split('\n')[1:] - - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_angles.append(float(k)) - except: - pass - - if len(lo_angles) != self.n_freq(): - raise - - self.zrot = np.array(lo_angles) - self.Z.rotation_angle = self.zrot.copy() - if self.Tipper.tipper is not None: - self.Tipper.rotation_angle = self.zrot.copy() - - - #--------------Write out file--------------------------------------------- - def set_Z(self, z_object): - """ - Set the Z object attribute. - """ - if not isinstance(z_object, MTz.Z): - raise MTex.MTpyError_Z('Input argument is not an instance of '+\ - 'the Z class') - - self.Z = z_object - self.freq = z_object.freq - - #--------------Write out file--------------------------------------------- - def set_Tipper(self, tipper_object): - """ - Set the Tipper object attribute. - """ - if not isinstance(tipper_object, MTz.Tipper): - raise MTex.MTpyError_Tipper('Input argument is not an instance of '+\ - 'the Tipper class') - - self.Tipper = tipper_object - - #self.freq = tipper_object.freq - - - #--------------Write out file--------------------------------------------- - def writefile(self, fn=None, allow_overwrite=False, use_info_string=False): - """ - Write out the edi object into an EDI file. - - Default: existing files are not overwritten, a unique filename is - generated for each new file - - Default: the INFO section is written using the self.info_dict. This - behaviour can be changed to allow a verbatim write of the - self.info_string (useful if existing EDIs are only slightly altered) - - - """ - - if fn is not None and len(fn) == 0: - fn = None - elif fn is not None: - #see, if it's iterable - if type(fn) is not str: - fn = fn[0] - - self.info_dict['edifile_generated_with'] = 'MTpy' - - try: - outstring, stationname = _generate_edifile_string(self.edi_dict(),use_info_string) - except: - print 'ERROR - could not generate valid EDI file \n-> check, if'\ - ' method "edi_dict" returns sufficient information\n '\ - '' - return - - if stationname is None: - stationname = 'dummy' - if len(stationname) == 0: - stationname = 'unknown' - - if not _validate_edifile_string(outstring): - #return outstring - raise MTex.MTpyError_edi_file('Cannot write EDI file...'+\ - 'output string is invalid') - - - if fn != None: - try: - outfilename = op.abspath(fn) - if not outfilename.lower().endswith('.edi'): - outfilename += '.edi' - except: - fn = None - print 'ERROR - could not generate output file with '+\ - 'given name - trying generic name instead!' - - if fn == None: - outfilename = op.abspath(stationname.upper()+'.edi') - - if allow_overwrite is not True: - outfilename = MTfh.make_unique_filename(outfilename) - - try: - with open(outfilename , 'w') as F: - F.write(outstring) - except: - raise MTex.MTpyError_edi_file('Cannot write EDI file:'+\ - '{0}'.format(outfilename)) - - return outfilename - - #--------------Rotate data---------------------------------------------- - def rotate(self,angle): - """ - Rotate the Z and tipper information in the Edi object. Change the - rotation angles in Zrot respectively. - - Rotation angle must be given in degrees. All angles are referenced - to geographic North, positive in clockwise direction. - (Mathematically negative!) - - In non-rotated state, X refs to North and Y to East direction. - - Updates the attributes "z, zrot, tipper". - - """ - if type(angle) in [float,int]: - angle = np.array([float(angle)%360 for i in range(len(self.zrot))]) - else: - try: - if type(angle) is str: - try: - angle = float(angle) - angle = np.array([float(angle)%360 for i in range(len(self.zrot))]) - except: - raise - elif len(angle) != len(self.zrot): - raise - angle = np.array([float(i)%360 for i in angle]) - except: - raise MTex.MTpyError_inputarguments('ERROR - "angle" must'+\ - ' be a single numerical'+\ - ' value or a list of '+\ - 'values. In the latter'+\ - ' case, its length must'+\ - 'be {0}'.format( - len(self.zrot))) - - self.Z.rotate(angle) - self.zrot = self.Z.rotation_angle - # self.zrot = [(ang0+angle[i])%360 for i,ang0 in enumerate(self.zrot)] - # self.Z.rotation_angle = self.zrot - - if self.Tipper.tipper is not None: - self.Tipper.rotate(angle) - self.Tipper.rotation_angle = self.zrot - - - #--------------get/set header ------------------------------- - def _set_head(self, head_dict): - """ - Set the attribute 'head'. - - Input: - HEAD section dictionary - - No test for consistency! - - """ - - self._head = head_dict - - - def _get_head(self): - - - return self._head - - head = property(_get_head, _set_head, doc='HEAD attribute of EDI file') - - #--------------get/set station ------------------------------- - def _set_station(self, stationname): - """ - Set the attribute 'station'. - - Updates the 'dataid' key in 'HEAD'... - - Input: - HEAD section dictionary - - No test for consistency! - - """ - - self._station = stationname - if not 'dataid' in self._head : - self._head['dataid'] = stationname - - - def _get_station(self): - - return self._station - - station = property(_get_station, _set_station, doc='station attribute of EDI file') - - - #--------------get/set info dict ------------------------------- - def _set_info_dict(self,info_dict): - """ - Set the attribute 'info_dict'. - - Input: - INFO section dictionary - - No test for consistency! - - """ - - self._info_dict = info_dict - - def _get_info_dict(self): - return self._info_dict - - info_dict = property(_get_info_dict, _set_info_dict, - doc='INFO section dictionary') - - #--------------get/set info header ------------------------------- - def _set_info_string(self,info_string): - """ - Set the attribute 'info_string'. - - Input: - INFO section string - - No test for consistency! - - """ - - self._info_string = info_string - - def _get_info_string(self): - return self._info_string - - info_string = property(_get_info_string, _set_info_string, - doc='INFO section string') - - #--------------get/set definemeas ------------------------------- - def _set_definemeas(self,definemeas_dict): - """ - Set the attribute 'definemeas'. - - Input: - DEFINEMEAS section dictionary - - No test for consistency! - - """ - self._definemeas = definemeas_dict - def _get_definemeas(self): - return self._definemeas - - definemeas = property(_get_definemeas, _set_definemeas, - doc='DEFINEMEAS section dictionary') - - #--------------get/set h and e measurements ------------------------------ - def _set_hmeas_emeas(self,hmeas_emeas_list): - """ - Set the attribute 'hmeas_emeas'. - - Input: - hmeas_emeas section list of 7-tuples - - No test for consistency! - - """ - self._hmeas_emeas = hmeas_emeas_list - - def _get_hmeas_emeas(self): - return self._hmeas_emeas - - hmeas_emeas = property(_get_hmeas_emeas, _set_hmeas_emeas, - doc='hmeas_emeas section list of 7-tuples') - - #--------------get/set mtsect ------------------------------- - def _set_mtsect(self, mtsect_dict): - """ - Set the attribute 'mtsect'. - - Input: - MTSECT section dictionary - - No test for consistency! - - """ - - self._mtsect = mtsect_dict - def _get_mtsect(self): - return self._mtsect - - mtsect = property(_get_mtsect, _set_mtsect, - doc='MTSECT section dictionary') - - - #--------------get/set single component ------------------------------- - def _get_datacomponent(self, componentname): - """ - Return a specific data component. - - Input: - specification of the data component (Z or Tipper components) - """ - - data_dict = self.data_dict() - if componentname.lower() in data_dict: - return data_dict[componentname.lower()] - - compstrings = ['ZXX','ZXY','ZYX','ZYY'] - Z_entries = ['R','I','.VAR'] - for idx_comp,comp in enumerate(compstrings): - for idx_zentry,zentry in enumerate(Z_entries): - section = comp + zentry - if section.lower() == componentname.lower(): - return self.z_dict()[section] - - compstrings = ['TX','TY'] - T_entries = ['R','I','VAR'] - - for idx_comp,comp in enumerate(compstrings): - for idx_tentry,tentry in enumerate(T_entries): - section = comp + tentry - if section.lower() == componentname.lower(): - return self.tipper_dict()[section] - - print 'unknown data component: %s'%componentname.lower() - return - - - def _set_datacomponent(self, componentname, value): - """ - Set a specific data component. - - Input: - specification of the data component (Z or Tipper components) - new value - - No test for consistency! - """ - pass - - #--------------get/set freq ------------------------------- - def _set_freq(self, lo_freq): + if data_sect_list is not None: + self.data_sect_list = data_sect_list + + if self.edi_fn is not None and self.data_sect_list is None: + self.get_data_sect() + + for d_line in self.data_sect_list: + d_list = d_line.split('=') + if len(d_list) > 1: + key = d_list[0].lower() + try: + value = int(d_list[1].strip()) + except ValueError: + value = d_list[1].strip().replace('"', '') + + setattr(self, key, value) + + def write_data_sect(self, data_sect_list=None): """ - Set the array of freq. - - Input: - list/array of freq - - No test for consistency! + write a data section """ - # try: - # if len(lo_freq) is not len(self.Z.z): - # print 'length of freq list not correct'+\ - # '({0} instead of {1})'.format(len(lo_freq), - # len(self.Z.z)) - # return - # except: - # print 'array self.Z.z is not defined' - # return - - self._freq = np.array(lo_freq) - if self.Z.z is not None: - try: - self.Z._set_freq(self.freq) - except: - print 'length of freq list not consistent with Z.z array '+\ - '({0} instead of {1})'.format(len(lo_freq), - len(self.Z.z)) - if self.Tipper.tipper is not None: - try: - self.Tipper._set_freq(self.freq) - except: - print 'length of freq list not consistent with Tipper.tipper array '+\ - '({0} instead of {1})'.format(len(lo_freq), - len(self.Tipper.tipper)) - - def _get_freq(self): - if self._freq is not None: - self._freq = np.array(self._freq) - return self._freq - freq = property(_get_freq, _set_freq, - doc='array of freq') - - #--------------get/set impedance rotation ------------------------------- - def _set_zrot(self, angle): - """ - Set the list of rotation angles. - - Input: - single angle or list of angles (in degrees) - - No test for consistency! - """ + if data_sect_list is not None: + self.read_data_sect(data_sect_list) + + if self.data_type == 'spectra': + data_sect_lines = ['\n>=spectrasect\n'.upper()] + + if self.data_type == 'z': + data_sect_lines = ['\n>=mtsect\n'.upper()] + for key in self._kw_list: + data_sect_lines.append('{0}{1}={2}\n'.format(tab, + key.upper(), + getattr(self, key))) - - if type(angle) is str: - raise MTex.MTpyError_edi_file('list of angles contains string'+\ - 'literal(s)') - - if np.iterable(angle): - if len(angle) is not len(self.Z.z): - print 'length of angle list not correct'+\ - '({0} instead of {1})'.format(len(angle), len(self.z)) - return - try: - angle = [float(i%360) for i in angle] - except: - raise MTex.MTpyError_edi_file('list of angles contains'+\ - 'non-numercal values') - else: - try: - angle = [float(angle%360) for i in self.Z.z] - except: - raise MTex.MTpyError_edi_file('Angles is a non-numercal value') - - - self._zrot = np.array(angle) - self.Z.rotation_angle = angle - if self.Tipper.tipper is not None: - self.Tipper.rotation_angle = angle - - def _get_zrot(self): - if self._zrot is not None: - self._zrot = np.array(self._zrot) - return self._zrot + data_sect_lines.append('\n') - zrot = property(_get_zrot, _set_zrot, doc='') - - -#end of Edi Class -#========================= - - -def read_edifile(fn): - """ - Read in an EDI file. - - Return an instance of the Edi class. - """ - - edi_object = Edi() - - edi_object.readfile(fn) - - - return edi_object - - -def write_edifile(edi_object, out_fn = None): - """ - Write an EDI file from an instance of the Edi class. - - optional input: - EDI file name - """ - - if not isinstance(edi_object, Edi): - raise MTex.MTpyError_EDI('Input argument is not an instance of '+\ - 'the Edi class') - - if out_fn is not None: - dirname = op.dirname(op.abspath(op.join('.',out_fn))) - fn = op.basename(op.abspath(op.join('.',out_fn))) - if not op.isdir(dirname): - try: - os.makedirs(dirname) - out_fn = op.join(dirname,fn) - except: - out_fn = None - else: - out_fn = op.join(dirname,fn) - - outfilename = None - try: - outfilename = edi_object.writefile(out_fn) - except: - print 'Cannot write EDI file...output string invalid!' - - return outfilename - - -def combine_edifiles(fn1, fn2, merge_freq=None, out_fn = None, - allow_gaps = True): - """ - Combine two EDI files. - - Inputs: - - name of EDI file 1 - - name of EDI file 2 - - optional input: - - merge_freq : freq in Hz, on which to merge the files - - default is the middle of the overlap - - out_fn : output EDI file name - - allow_gaps : allow merging EDI files whose freq ranges does - not overlap - - Outputs: - - instance of Edi class, containing merged information - - full path of the output EDI file - """ - - #edi objects: - eo1 = Edi() - eo1.readfile(fn1) - eo2 = Edi() - eo2.readfile(fn2) - #edi object merged - eom = Edi() - - #check freq lists - lo_freqs1 = eo1.freq - lo_freqs2 = eo2.freq - - - lo_eos = [] - - #check for overlap of the freq regimes: - if (not min(lo_freqs1)>max(lo_freqs2)) and \ - (not max(lo_freqs1)>min(lo_freqs2)): - if allow_gaps is False: - raise MTex.MTpyError_edi_file('Cannot merge files'+\ - '{0} and {1}'.format(fn1,fn2)+\ - '- freq ranges do not '+\ - 'overlap and "allow_gaps" is'+\ - 'set to False') - - - #determine, which is the low freq part, sort descending - lo_eos = [eo2, eo1] - - if min(lo_freqs1) <= min(lo_freqs2): - if max(lo_freqs1) >= max(lo_freqs2): - print 'freq range of file {0} fully contained'.format(fn2)+\ - 'in range of file {1} => no merging of files!'.format(fn1) - return - - if min(lo_freqs1) >= min(lo_freqs2): - if max(lo_freqs1) <= max(lo_freqs2): - print 'freq range of file {0} fully contained'.format(fn1)+\ - 'in range of file {1} => no merging of files!'.format(fn2) - return - else: - lo_eos = [eo1, eo2] - - #find sorting indices for obtaining strictly decreasing frequencies: - dec_freq_idxs_lower = np.array(lo_eos[1].freq).argsort()[::-1] - dec_freq_idxs_upper = np.array(lo_eos[0].freq).argsort()[::-1] - - #determine overlap in frequencies - upper_bound = max(lo_eos[1].freq) - lower_bound = min(lo_eos[0].freq) - - - overlap_mid_freq = np.exp(0.5*(np.log(upper_bound) + np.log(lower_bound))) - - if merge_freq is not None: - try: - merge_freq = float(merge_freq) - except: - print 'could not read "merge freq" argument '+\ - '(float expected)...taking mean of freq overlap'+\ - 'instead: {0:.6g} Hz'.format(overlap_mid_freq) - merge_freq = overlap_mid_freq - else: - merge_freq = overlap_mid_freq - - #print merge_freq - - - #find indices for all freq from the freq lists, which are - #below(lower part) or above (upper part) of the merge freq - - #use sorted freq lists !: - - upper_idxs = np.where(np.array(lo_eos[0].freq)[dec_freq_idxs_upper]>\ - merge_freq)[0] - lower_idxs = np.where(np.array(lo_eos[1].freq)[dec_freq_idxs_lower]<=\ - merge_freq)[0] - - #total of freq in new edi object - new_freqs = lo_eos[0].freq[upper_idxs] - new_freqs= np.append(new_freqs,lo_eos[1].freq[lower_idxs]) - - n_total_freqs = len(new_freqs)# len(lower_idxs) + len(upper_idxs) - - - #------------ - # fill data fields - - new_z = np.zeros((n_total_freqs,2,2),dtype=np.complex) - new_zerr = np.zeros((n_total_freqs,2,2),dtype=np.float) - - #check, if tipper exists for both files: - if (eo1.Tipper.tipper is not None ) and (eo2.Tipper.tipper is not None ): - new_tipper = np.zeros((n_total_freqs,1,2),dtype=np.complex) - new_tippererr = np.zeros((n_total_freqs,1,2),dtype=np.float) - - - counter = 0 - zrot = [] - for idx_u in upper_idxs: - try: - new_z[counter] = lo_eos[0].Z.z[idx_u] - new_zerr[counter] = lo_eos[0].Z.zerr[idx_u] - except: - pass - try: - new_tipper[counter] = lo_eos[0].Tipper.tipper[idx_u] - new_tippererr[counter] = lo_eos[0].Tipper.tippererr[idx_u] - except: - pass - try: - zrot.append(lo_eos[0].zrot[idx_u]) - except: - zrot.append(0.) - - counter +=1 - - for idx_l in lower_idxs: - try: - new_z[counter] = lo_eos[1].Z.z[idx_l] - new_zerr[counter] = lo_eos[1].Z.zerr[idx_l] - except: - pass - try: - new_tipper[counter] = lo_eos[1].Tipper.tipper[idx_l] - new_tippererr[counter] = lo_eos[1].Tipper.tippererr[idx_l] - except: - pass - try: - zrot.append(lo_eos[1].zrot[idx_l]) - except: - zrot.append(0.) - counter +=1 - - - # eom.Z.z = np.zeros((n_total_freqs,2,2),dtype=np.complex) - # eom.Z.zerr = np.zeros((n_total_freqs,2,2),dtype=np.float) - - Znew = MTz.Z(z_array=new_z, zerr_array=new_zerr, freq=new_freqs) - eom.set_Z(Znew) - - - if (eo1.Tipper.tipper is not None ) and (eo2.Tipper.tipper is not None ): - TipperNew = MTz.Tipper(tipper_array=new_tipper, tippererr_array=new_tippererr, - freq=new_freqs) - - eom.set_Tipper(TipperNew) - - eom.zrot = zrot - - - #------------ - # fill header information - - #I) HEAD - head1 = dict((k.lower(),v) for k,v in eo1.head.items()) - head2 = dict((k.lower(),v) for k,v in eo2.head.items()) - - - so_headsections = set(head1.keys() + head2.keys()) - - head_dict = {} - for element in so_headsections: - if (element in head1) and (element not in head2): - head_dict[element] = str(head1[element]) - continue - if (element in head2) and (element not in head1): - head_dict[element] = str(head2[element]) - continue - if head1[element] == head2[element]: - head_dict[element] = str(head2[element]) - continue - - if element in ['lat','long','lon','latitude','longitude', 'elevation', - 'elev','ele']: - try: - head_dict[element] = 0.5 * (float(head1[element]) + \ - float(head2[element])) - except: - raise MTex.MTpyError_edi_file('Cannot merge files: wrong'+\ - 'format of "{0}" coordinate'.format(element)) - continue - - if element == 'dataid': - head_dict[element] = head1[element]+'+'+head2[element] - continue - - if 'date' in element: - dateformat1 = '%Y/%m/%d %H:%M:%S UTC' - dateformat2 = '%d.%m.%y %H:%M:%S UTC' - dateformat3 = '%d.%m.%Y %H:%M:%S UTC' - date1 = None - - try: - date1 = calendar.timegm(time.strptime(head1[element], - dateformat1)) - date2 = calendar.timegm(time.strptime(head2[element], - dateformat1)) - except: - pass - try: - date1 = calendar.timegm(time.strptime(head1[element], - dateformat2)) - date2 = calendar.timegm(time.strptime(head2[element], - dateformat2)) - except: - pass - try: - date1 = calendar.timegm(time.strptime(head1[element], - dateformat3)) - date2 = calendar.timegm(time.strptime(head2[element], - dateformat3)) - except: - pass - if date1 is None: - raise MTex.MTpyError_edi_file('Cannot merge file, because '+\ - 'data format is not '+\ - 'understood: '+\ - '{0}={1}|{2}'.format(element, - head1[element], - head2[element])) - - - if element in ['acqdate']: - date = min(date1, date2 ) - - elif element in ['enddate']: - date = max(date1, date2 ) - - elif element in ['filedate']: - todaystring = datetime.datetime.utcnow().strftime(dateformat1) - head_dict[element] = todaystring - continue + return data_sect_lines - datetuple = time.gmtime(date) - head_dict[element] = '{0:02}/{1:02}/{2:02} '.format(datetuple[0], - datetuple[1], - datetuple[2]) - #print head_dict[element] - - eom.head = head_dict - - - #II) INFO - info1 = dict((k.lower(),v) for k,v in eo1.info_dict.items()) - info2 = dict((k.lower(),v) for k,v in eo2.info_dict.items()) - - so_infosections = set(info1.keys() + info2.keys()) - - info_dict = {} - info_dict['merge_freq'] = merge_freq - - for element in so_infosections: - - if (element in info1) and (element not in info2): - info_dict[element] = str(info1[element]) - continue - if (element in info2) and (element not in info1): - info_dict[element] = str(info2[element]) - continue - if info1[element] == info2[element]: - info_dict[element] = str(info2[element]) - continue - - if element in ['lat','long','lon','latitude','longitude', - 'elevation','elev','ele']: - try: - info_dict[element] = 0.5 * (float(info1[element]) + \ - float(info2[element])) - except: - raise MTex.MTpyError_edi_file('Cannot merge files: wrong'+\ - 'format of "{0}" coordinate'.format(element)) - continue - - if element == 'dataid': - info_dict[element] = info1[element]+'_merged_with_'+info2[element] - continue - - if 'date' in element: - dateformat1 = '%d/%m/%y' - dateformat2 = '%d.%m.%y' - dateformat3 = '%d.%m.%Y' - date1 = None - try: - date1 = calendar.timegm(time.strptime(info1[element], - dateformat1)) - date2 = calendar.timegm(time.strptime(info2[element], - dateformat1)) - except: - pass - try: - date1 = calendar.timegm(time.strptime(info1[element], - dateformat2)) - date2 = calendar.timegm(time.strptime(info2[element], - dateformat2)) - except: - pass - try: - date1 = calendar.timegm(time.strptime(info1[element], - dateformat3)) - date2 = calendar.timegm(time.strptime(info2[element], - dateformat3)) - except: - pass - if date1 is None: - raise MTex.MTpyError_edi_file('Cannot merge file, because'+\ - 'data format is not '+\ - 'understood: '+\ - '{0}={1}|{2}'.format(element, - info1[element], - info2[element])) - - - if element in ['acqdate']: - date = min(date1, date2 ) - - elif element in ['enddate']: - date = max(date1, date2 ) - - elif element in ['filedate']: - date = calendar.timegm(time.gmtime()) - - #arbitrarily choisen to take information from low freq file: - else: - date = date1 - - datetuple = time.gmtime(date) - print datetuple - info_dict[element] = '{0:02}/{1:02}/{2:2}'.format(datetuple[2], - datetuple[1], - datetuple[0]) - continue - - if element == 'station': - info_dict['station'] = info1[element] + '+' + info2[element] - - - eom.info_dict = info_dict - - eom.info_string = '\n\t=== File 1: ===\n'+eo1.info_string+\ - '\n\n\t=== File 2: ===\n'+eo2.info_string - - - #III) DEFINEMEAS - dmeas1 = dict((k.lower(),v) for k,v in eo1.definemeas.items()) - dmeas2 = dict((k.lower(),v) for k,v in eo2.definemeas.items()) - - so_dmeassections = set(dmeas1.keys() + dmeas2.keys()) - - dmeas_dict = {} - - for element in so_dmeassections: - - if element == 'refloc': - dmeas_dict[element] = '' - continue - - if (element in dmeas1) and (element not in dmeas2): - dmeas_dict[element] = str(dmeas1[element]) - continue - if (element in dmeas2) and (element not in dmeas1): - dmeas_dict[element] = str(dmeas2[element]) - continue - if dmeas1[element] == dmeas2[element]: - dmeas_dict[element] = str(dmeas2[element]) - continue - - if 'lat' in element or 'lon' in element or 'elev' in element: - try: - dmeas_dict[element] = 0.5 * (float(dmeas1[element]) +\ - float(dmeas2[element])) - except: - raise MTex.MTpyError_edi_file('Cannot merge files: wrong '+\ - 'format of "{0}" coordinate'.format(element)) - continue - - - - eom.definemeas = dmeas_dict - - #take hmeas/dmeas section directly from file 1: - - eom.hmeas_emeas = eo1.hmeas_emeas - - - - #IV) MTSECT - - msec1 = dict((k.lower(),v) for k,v in eo1.mtsect.items()) - msec2 = dict((k.lower(),v) for k,v in eo2.mtsect.items()) - - so_msecsections = set(msec1.keys() + msec2.keys()) - - msec_dict = {} - - for element in so_msecsections: - #completely unimportant, kept just for the sake of the format: - if element in ['ex','ey','hx','hy','hz','bx','by','bz']: - msec_dict[element] = msec1[element] - if element == 'nfreq': - msec_dict[element] = eom.n_freq() - if element == 'sectid': - if msec1[element] != msec2[element]: - msec_dict[element] = msec1[element]+'+'+msec2[element] - else: - msec_dict[element] = msec1[element]+'(A)'+'+'+msec2[element]+'(B)' - - - eom.mtsect = msec_dict - - - if out_fn is not None: - dirname = op.dirname(op.abspath(op.join('.',out_fn))) - fn = op.basename(op.abspath(op.join('.',out_fn))) - if not op.isdir(dirname): - try: - os.makedirs(dirname) - out_fn = op.join(dirname,fn) - except: - out_fn = None - else: - out_fn = op.join(dirname,fn) - out_fn = op.splitext(out_fn)[0]+'_merged'+op.splitext(out_fn)[1] - - else: - stationname = eom.info_dict.get('station',None) - if stationname is None: - stationname = eom.head.get('dataid',None) - if stationname is None: - stationname = 'unknown' - out_fn = op.join(op.abspath(os.curdir),stationname.upper()+'_merged.edi') - - - out_fn = eom.writefile(out_fn) - if out_fn is not None: - print '\tWritten merged EDI file {0}\n'.format(out_fn) - - - return eom, out_fn - - -def validate_edifile(fn): - """ - Validate an EDI file following MTpy standard. - - Return boolean result. - """ - - edi_object = Edi() - - try: - edi_object.readfile(fn) - return True - except: - return False - - -def rotate_edifile(fn, angle, out_fn = None): - """ - Rotate data contents (Z and Tipper) of an EDI file and write it to a - new EDI file. - (Use a script with consecutive renaming of the file for in place - rotation. MTpy does not overwrite.) - - Input: - - angle/list of angles for the rotation - - optional input: - - name of output EDI file - - Output: - - full path to the new (rotated) EDI file - """ - - ediobject = Edi() - - ediobject.readfile(fn) - - ediobject.rotate(angle) - - if out_fn is not None: - dirname = op.dirname(op.abspath(op.join('.',out_fn))) - fn = op.basename(op.abspath(op.join('.',out_fn))) - if not op.isdir(dirname): - try: - os.makedirs(dirname) - out_fn = op.join(dirname,fn) - except: - out_fn = None - else: - out_fn = op.join(dirname,fn) - - - ediobject.writefile(out_fn) - - - return out_fn - - - -def _generate_edifile_string(edidict,use_info_string=False): - """ - Generate a string to write out to an EDI file. - - Reading in information from an edi file dictionary. Using the standard - sections: - HEAD, INFO, DEFINEMEAS, HMEAS_EMEAS, MTSECT, ZROT, FREQ, Z, TIPPER - - Can be extended later on... - - """ - # define section heads explicitely instead of iteration over the dictionary - # for getting the correct order! - lo_sectionheads = ['HEAD', 'INFO', 'DEFINEMEAS', 'HMEAS_EMEAS', 'MTSECT', - 'ZROT', 'FREQ', 'Z', 'TIPPER'] - - edistring = '' - stationname = None - ZROTflag = 0 - - if len(edidict.keys()) == 0: - raise MTex.MTpyError_edi_file('Cannot generate string from empty'+\ - 'EDI dictionary. Fill dict or read in file first') - - - for sectionhead in lo_sectionheads: - - if sectionhead == 'HEAD': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "HEAD" missing!') - edistring += '>HEAD\n' - head_dict = edidict['HEAD'] - checkdate = 0 - - for k in sorted(head_dict.iterkeys()): - v = str(head_dict[k]) - #remove old time stamp of former EDI file: - if k.lower() == 'filedate': - continue - - if k.lower()=='dataid': - - stationname = v - - if k.lower() in ['lat','long']: - v = MTft.convert_degrees2dms_tuple(v) - edistring += '\t{0}={1}:{2}:{3:.2f}\n'.format(k.upper(), - int(v[0]),int(v[1]),v[2]) - continue - - if len(v) == 0: - edistring += '\t%s=""\n'%(k.upper()) - elif len(v.split()) > 1: - edistring += '\t%s="%s"\n'%(k.upper(),v) - else: - try: - v = v.upper() - except: - pass - edistring += '\t%s=%s\n'%(k.upper(),v) - - #update time stamp of the file: - todaystring = datetime.datetime.utcnow().strftime( - '%Y/%m/%d %H:%M:%S UTC') - - todaystring = '\tfiledate="%s"\n'%(todaystring) - edistring += todaystring.upper() - - - if sectionhead == 'INFO': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "INFO" missing!') - info_dict = edidict['INFO'] - info_dict = dict((k.lower(),v) for k,v in info_dict.items()) - - # if 'max lines' in info_dict: - # edistring += '>INFO MAX LINES={0}\n'.format( - # int(float(info_dict.pop('max lines')))) - # else: - edistring += '>INFO \n' - - #If an existing info string is to be written verbatim - #to not lose any original information (even if uunnecessary/wrong): - if use_info_string is True: - try: - edistring += edidict['info_string'] - except: - pass - edistring += '\n' - #otherwise use the standard way of writing dict contents: - else: - for k in sorted(info_dict.iterkeys()): - # if k.startswith('__'): - # continue - v = str(info_dict[k]) - #get station name (to be returned aside with the edistring, - # allowing for proper naming of output file) - if k == 'station': - v = v.upper().replace(' ','_') - stationname = v - if k.lower() == 'max lines': - continue - - if len(v) == 0 or len(v.split()) > 1: - edistring += '\t%s: "%s"\n'%(k,v) - else: - edistring += '\t%s: %s\n'%(k,v) - - - - if sectionhead == 'DEFINEMEAS': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "DEFINEMEAS" missing!') - defm_dict = edidict['DEFINEMEAS'] - defm_dict = dict((k.upper(),v) for k,v in defm_dict.items()) - - edistring += '>=DEFINEMEAS \n' - - for k in sorted(defm_dict.iterkeys()): - v = str(defm_dict[k]) - if k == 'REFLAT': - v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['lat']) - edistring += '\tREFLAT={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) - continue - if k == 'REFLONG': - v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['long']) - edistring += '\tREFLONG={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) - continue - if k == 'REFELEV': - edistring += '\tREFELEV={0:.1f}\n'.format(float(edidict['HEAD']['elev'])) - continue - - if len(v) == 0 or len(v.split()) > 1: - edistring += '\t%s=""\n'%(k) - else: - edistring += '\t%s=%s\n'%(k,v) - - if 'REFLAT' not in sorted(defm_dict.iterkeys()): - v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['lat']) - edistring += '\tREFLAT={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) - if 'REFLONG' not in sorted(defm_dict.iterkeys()): - v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['long']) - edistring += '\tREFLONG={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) - if 'REFELEV' not in sorted(defm_dict.iterkeys()): - edistring += '\tREFELEV={0:.1f}\n'.format(edidict['HEAD']['elev']) - - - if sectionhead == 'HMEAS_EMEAS': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'subsection "HMEAS_EMEAS" missing!') - lo_hemeas = edidict['HMEAS_EMEAS'] - - for hemeas in lo_hemeas: - edistring += ('>'+' '.join(hemeas.split())+'\n').upper() - - - if sectionhead == 'MTSECT': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "MTSECT" missing!') - mtsct_dict = edidict['MTSECT'] - mtsct_dict = dict((k.upper(),v) for k,v in mtsct_dict.items()) - - edistring += '>=MTSECT \n' - - for k in sorted(mtsct_dict.iterkeys()): - v = str(mtsct_dict[k]) - if len(v) == 0 or len(v.split()) > 1: - edistring += '\t%s=""\n'%(k) - else: - edistring += '\t%s=%s\n'%(k,v) - - - if sectionhead == 'FREQ': - if not sectionhead in edidict: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "FREQ" missing!') - lo_freqs = edidict['FREQ'] - - #edistring += '>!****FREQUENCIES****!\n' - edistring+= '>FREQ // {0}\n'.format(len(lo_freqs)) - - for i,freq in enumerate(lo_freqs): - edistring += '\t%E'%(freq) - if (i+1)%5 == 0 and (i != len(lo_freqs) - 1) and i > 0: - edistring += '\n' - - if sectionhead == 'ZROT': - - try: - lo_rots = edidict['ZROT'] - except: - continue - - #edistring += '>!****IMPEDANCE ROTATION ANGLES****!\n' - edistring+= '>ZROT // {0}\n'.format(len(lo_rots)) - - for i,angle in enumerate(lo_rots): - edistring += '\t%E'%(angle) - if (i+1)%5 == 0 and (i != len(lo_rots) - 1) and i > 0: - edistring += '\n' - - ZROTflag = 1 - - if sectionhead == 'Z': - - compstrings = ['ZXX','ZXY','ZYX','ZYY'] - Z_entries = ['R','I','.VAR'] - - try: - z_dict = edidict['Z'] - except: - raise MTex.MTpyError_edi_file('Cannot write file - required'+\ - 'section "Z" missing!') - - #edistring += '>!****IMPEDANCES****!\n' - for idx_comp,comp in enumerate(compstrings): - for idx_zentry,zentry in enumerate(Z_entries): - section = comp + zentry - if not section in z_dict: - raise MTex.MTpyError_edi_file('Cannot write file - '+\ - 'required subsection "{0}" missing!'.format(section)) - lo_vals = z_dict[section] - #convert stddev into VAR: - if zentry.lower()=='.var': - lo_vals = [i**2 for i in lo_vals] - - if ZROTflag == 1: - edistring += '>{0} ROT=ZROT // {1}\n'.format(section, - len(lo_freqs)) - else: - edistring += '>{0} // {1}\n'.format(section, - len(lo_freqs)) - - for i,val in enumerate(lo_vals): - edistring += '\t%E'%(float(val)) - if (i+1)%5 == 0 and (i != len(lo_vals) - 1) and i > 0: - edistring += '\n' - edistring += '\n' - - - if sectionhead == 'TIPPER' and (edidict.has_key('TIPPER')): - - compstrings = ['TX','TY'] - T_entries = ['R','I','VAR'] - Tout_entries = ['R.EXP','I.EXP','VAR.EXP'] - - try: - t_dict = edidict['TIPPER'] - if t_dict == None: - continue - except: - continue - - #edistring += '>!****TIPPER PARAMETERS****!\n' - for idx_comp,comp in enumerate(compstrings): - for idx_tentry,tentry in enumerate(T_entries): - section = comp + tentry - outsection = comp + Tout_entries[idx_tentry] - if not section in t_dict: - raise MTex.MTpyError_edi_file('Cannot write file -'+\ - 'required subsection "{0}" missing!'.format(section)) - lo_vals = t_dict[section] - #convert stddev into VAR: - if tentry.lower()=='var': - lo_vals = [i**2 for i in lo_vals] - - if ZROTflag == 1: - edistring += '>{0} ROT=ZROT // {1}\n'.format(outsection, - len(lo_freqs)) - else: - edistring += '>{0} // {1}\n'.format(outsection, - len(lo_freqs)) - - for i,val in enumerate(lo_vals): - edistring += '\t%E'%(float(val)) - if (i+1)%5 == 0 and (i != len(lo_vals) - 1) and i > 0: - edistring += '\n' - - edistring += '\n' - - - - edistring += '\n' - - - edistring += '>END\n' - - - return edistring.expandtabs(4), stationname - - - -def _cut_sectionstring(edistring,sectionhead): - """ - Cut an edi-string for the specified section. - - Input: - - name of the section - - Output: - - string : part of the raw edi-string containing starting at the head - of the section and ends at beginnig of the next section. - """ - - #in this case, several blocks have to be handled together, therefore, a - #simple cut to the next block start does not work: - if sectionhead.upper() == 'HMEAS_EMEAS': - - lo_start_idxs = [m.start() for m in re.finditer('>[HE]MEAS',edistring)] - if len(lo_start_idxs) == 0 : - raise - - start_idx = lo_start_idxs[0] - - end_idx = edistring[(lo_start_idxs[-1]+1):].upper().find('>') +\ - lo_start_idxs[-1] - - hmeas_emeas_string = edistring[start_idx:end_idx] - - if len(hmeas_emeas_string) == 0: - raise - - return hmeas_emeas_string - - - - start_idx = edistring.upper().find('>'+sectionhead.upper()) - if start_idx == -1: - start_idx = edistring.upper().find('>='+sectionhead.upper()) - if start_idx == -1: - raise - #correct for the = character - start_idx += 1 - #start cut behind the section keyword - start_idx += (1+len(sectionhead)) - - next_block_start = edistring.upper().find('>', start_idx + 1) - - - cutstring = edistring[start_idx:next_block_start] - - if len(cutstring) == 0 : - raise - - - return cutstring - - -def _validate_edifile_string(edistring): - """ - Read the file as string and check, if blocks 'HEAD, =DEFINEMEAS, - =MTSECT, FREQ, (Z,) END' are present. If 'Z' is missing, check for - 'spectra' or 'rho'/'phs'! - - Within the blocks look for mandatory entries: - HEAD: 'DATAID' - DEFINEMEAS: subblocks 'HMEAS, EMEAS' - ('REFLAT, REFLONG, REFELEV' have to be present for - measured data though) - MTSECT: 'NFREQ' - FREQ: non empty list - - Z: at least one component xx, yy, xy, yx ; real, imag and var ; - containing a non-empty list - Otherwise check for presence of 'RHO'/'PHS' OR 'spectra' - - - """ - isvalid = False - found = 1 - - #adding 1 to position of find to correct for possible occurrence at - #position 0 ) - found *= np.sign(edistring.upper().find('>HEAD') + 1 ) - if found == 0: - print 'Could not find >HEAD block' - found *= np.sign(edistring.upper().find('DATAID') + 1 ) - if found == 0: - print 'Could not find DATAID block' - found *= np.sign(edistring.upper().find('>HMEAS') + 1 ) - if found == 0: - print 'Could not find >HMEAS block' - found *= np.sign(edistring.upper().find('>EMEAS') + 1 ) - if found == 0: - print 'Could not find >EMEAS block' - found *= np.sign(edistring.upper().find('NFREQ') + 1 ) - if found == 0: - print 'Could not find NFREQ block' - found *= np.sign(edistring.upper().find('>END') + 1 ) - if found == 0: - print 'Could not find END block' - found *= np.sign(edistring.upper().find('>=DEFINEMEAS') + 1 ) - if found == 0: - print 'Could not find >=DEFINEMEAS block' - #allow spectral information as alternative: - if np.sign(edistring.upper().find('>FREQ') + 1 ) == 0: - if np.sign(edistring.upper().find('>SPECTRA') + 1 ) == 0 : - found *= 0 - if np.sign(edistring.upper().find('>=MTSECT') + 1 ) == 0: - if np.sign(edistring.upper().find('>=SPECTRASECT') + 1 ) == 0: - found *= 0 - - - if found < 1 : - print 'Could not find all mandatory sections for a valid EDI file!\n'+\ - '(Most basic version must contain: "HEAD, =DEFINEMEAS, =MTSECT'+\ - 'or =SPECTRASECT, FREQ or SPECTRA, (Z,) END") ' - return False - - #checking for non empty freq list: - freq_start_idx = edistring.upper().find('>FREQ') - next_block_start = edistring.upper().find('>',freq_start_idx + 1) - string_dummy_2 = edistring[freq_start_idx:next_block_start] - lo_string_dummy_2 = string_dummy_2.strip().split() - #check, if there are actually one/some valid numbers: - n_numbers = 0 - for i in lo_string_dummy_2: - try: - n = float(i) - n_numbers +=1 - except: - continue - - if n_numbers == 0: - print MTex.MTpyError_edi_file('Problem in FREQ block: no frequencies '+\ - 'found...checking for spectra instead') - #found *= 0 - #Check for data entry following priority: - # 1. Z - z_found = 0 - rhophi_found = 0 - spectra_found = 0 - - compstrings = ['ZXX','ZXY','ZYX','ZYY'] - Z_entries = ['R','I','.VAR'] - - for comp in compstrings: - n_entries = 0 - - for zentry in Z_entries: - searchstring = '>'+comp+zentry - z_comp_start_idx = edistring.upper().find(searchstring) - if z_comp_start_idx < 0: - continue - #found *= np.sign(z_comp_start_idx + 1 ) - #checking for non empty value list: - next_block_start = edistring.upper().find('>',z_comp_start_idx+1) - string_dummy_1 = edistring[z_comp_start_idx:next_block_start] - lo_string_dummy_1 = string_dummy_1.strip().split() - n_numbers = 0 - for i in lo_string_dummy_1: - try: - n = float(i) - n_numbers +=1 - except: - continue - - if n_numbers == 0: - print MTex.MTpyError_edi_file('Error in {0}'.format(comp+\ - zentry)+\ - 'block: no values found') - continue - - if zentry in ['R','I']: - n_entries += 1 - if n_entries > 1: - z_found += 1 - - - # If no Z entry is found continue searching for RhoPhase information - # 2. RHO,PHS - if z_found == 0: - - rhophistrings = ['RHO','PHS'] - compstrings = ['XX','XY','YX','YY'] - - for comp in compstrings: - n_entries = 0 - for rp in rhophistrings: - sectionhead = rp + comp - try: - temp_string = _cut_sectionstring(edistring,sectionhead) - lo_vals = [] - t0 = temp_string.strip().split('\n')[0] - n_dummy = int(float(t0.split('//')[1].strip())) - t1 = temp_string.strip().split('\n')[1:] - for j in t1: - lo_j = j.strip().split() - for k in lo_j: - try: - lo_vals.append(float(k)) - except: - pass - if len(lo_vals) == 0: - raise - except: - continue - - n_entries += 1 - if n_entries > 1 : - rhophi_found += 1 - - # If neither Z nor RHO/PHS entries are found continue searching for - #spectra information - # 3. spectra - if z_found == 0 and rhophi_found == 0: - - spectrasect = _cut_sectionstring(edistring, '=SPECTRASECT') - if len(spectrasect) == 0 : - found *=0 - dummy4 = spectrasect.upper().find('NCHAN') - n_chan = int(float( - spectrasect[dummy4:].strip().split('=')[1].split()[0])) - - if n_chan not in [4,5,6,7]: - found *= 0 - - dummy5 = spectrasect.upper().find('NFREQ') - n_freq = int(float( - spectrasect[dummy5:].strip().split('=')[1].split()[0])) - - firstspectrum = _cut_sectionstring(edistring, 'SPECTRA') - if len(firstspectrum) == 0 : - found *=0 - - no_values = int(float( - firstspectrum.split('\n')[0].strip().split('//')[1])) - - if firstspectrum.upper().find('FREQ') <0 : - found *= 0 - - if not n_chan**2 == no_values: - found *= 0 - - lo_valuelines = firstspectrum.split('\n')[1:] - dummy6 = '' - for i in lo_valuelines: - dummy6 += (' '+i) - - if not len(dummy6.split()) == no_values: - found *= 0 - - - if not edistring.upper().count('>SPECTRA') == n_freq: - found *= 0 - if found > 0: - print 'Found spectra data !!' - spectra_found = 1 - - if z_found == 0 and rhophi_found == 0 and spectra_found == 0 : - print 'ERROR - no data found in terms of "Z" or "RHO/PHS" or '+\ - '"SPECTRA" - reading of multiple stations is not supported (yet)!' - found *= 0 - - if found > 0: isvalid = True - - return isvalid - - - -def _build_id_channel_dict(lo_hmeas_emeas): - """ - build a dictionary for emeas and hmeas - """ - - id_dict = {} - - for line in lo_hmeas_emeas: - line = line.split() - if len(''.join(line).strip()) == 0: - continue - - channel = _find_key_value('CHTYPE','=',' '.join(line),valuelength=2) - ID = _find_key_value('ID','=',' '.join(line)) - id_dict[ID] = channel - - return id_dict - -def _find_key_value(key, separator, instring, valuelength=None): - """ - find a key value in a given string - """ - - line = instring.strip().split() - value = None - #loop over list/line elements - for idx, element in enumerate(line): - #if keyword is not found in entry: - if element.upper().find(key.upper()) < 0: - continue - #else check, if the separator is present in the same element (equiv. - #to no spacing) - if element.upper().find(separator) >= 0: - - #, if the splitting worked out - if len(element.split(separator)) == 2 : - #if all fine until now, read in the part after the separator - #as value - value = element.split(separator)[1].upper() - - #if the separator was at the end of the element, read the next - #element as value - if len(element.split(separator)[1]) == 0 : - value = line[idx+1] - - #else, the separator is in the next element - else: - #check, if the next line is entirely defined by separator -> - #value must be one later - if line[idx+1] == separator: - value = line[idx+2] - #else, cut off the separator from the value - else: - value = line[idx+1].split(separator)[1] - #check for correct length of value, if specified - if valuelength is not None: - if len(value) != valuelength : - continue - - return value - - - -def spectra2z(data, avgt=None, channellist=None): - """ - Convert data from spectral form into Z - for one fixed freq. - - Input: - spectral data array, real-valued, n x n sized - degrees of freedom, equiv. to 'AVGT' (number of averaged time windows) - - Output: - Z array, complex valued, 2x2 sized - (Tipper array, complex valued, 2 x 1 sized) <- if HZ is present - - note: if n>5, remote reference is assumed, so the last 2 channels - are interpreted as 'HX/HY-remote' - otherwise, self-referencing is applied - """ - - z_array = np.zeros((2,2), 'complex') - zerr_array = np.zeros((2,2),'float') - - S = np.zeros(data.shape, 'complex') - tipper_array = None - tippererr_array = None - - #in case the components are in a crazy order - comps = ['HX', 'HY', 'HZ', 'EX', 'EY'] - idx = [] - for c in comps: - if c not in channellist: - idx.append(None) - continue - - idx.append(channellist.index(c)) - - #if remote ref. is applied, take the last two columns as rem ref for HX, - #Hy - if data.shape[0] in [6,7]: - idx.append(data.shape[0]-2) - idx.append(data.shape[0]-1) - elif data.shape[0] < 6 : - idx.append(0) - idx.append(1) - - - #idx contains the indices/positions of the components within the data - #matrix. The entries are in the order - # HX, HY, HZ, EX, EY, HXrem, HYrem - # if HY is not present, the list entry is a NONE - - #build upper right triangular matrix with compex valued entries - for i in range(data.shape[0]): - for j in range(i,data.shape[0]): - if i == j : - S[i,j] = ( data[i,j]) - else: - #minus sign for complex conjugation - # original spectra data are of form , but we need - # the order ... - # this is achieved by complex conjugation of the original entries - S[i,j] = np.complex( data[j,i] , -data[i,j] ) - #keep complex conjugated entries in the lower triangular matrix: - S[j,i] = np.complex( data[j,i] , +data[i,j] ) - - - - #use formulas from Bahr/Simpson to convert the Spectra into Z entries - # the entries of S are sorted like - # - # - # ..... - - # note: the sorting can be influenced by wrong order of indices - - # the list 'idx' takes care of that - - Zdet = ( S[idx[0],idx[5]] * S[idx[1],idx[6]] - S[idx[0],idx[6]] *\ - S[idx[1],idx[5]] ) - - z_array[0,0] = S[idx[3],idx[5]] * S[idx[1],idx[6]] - S[idx[3],idx[6]] *\ - S[idx[1],idx[5]] - z_array[0,1] = S[idx[3],idx[6]] * S[idx[0],idx[5]] - S[idx[3],idx[5]] *\ - S[idx[0],idx[6]] - z_array[1,0] = S[idx[4],idx[5]] * S[idx[1],idx[6]] - S[idx[4],idx[6]] *\ - S[idx[1],idx[5]] - z_array[1,1] = S[idx[4],idx[6]] * S[idx[0],idx[5]] - S[idx[4],idx[5]] *\ - S[idx[0],idx[6]] - - z_array /= Zdet - - - #if HZ information is present: - if data.shape[0] %2 != 0: - tipper_array = np.zeros((1,2),dtype=np.complex) - tipper_array[0,0] = S[idx[2],idx[5]] * S[idx[1],idx[6]] - \ - S[idx[2],idx[6]] * S[idx[1],idx[5]] - tipper_array[0,1] = S[idx[2],idx[6]] * S[idx[0],idx[5]] - \ - S[idx[2],idx[5]] * S[idx[0],idx[6]] - - tipper_array /= Zdet - - if avgt is None: - print 'Information on uncertainties (AVGT value) missing -- cannot calculate errors' - return z_array, tipper_array, None, None - - if avgt <= 4: - print 'Warning -- Information on uncertainties insufficient (AVGT <= 4)' - return z_array, tipper_array, None, None - - - #calculate error using formulas in Bahr&Simpson, Appendix 4. - # BUT: using 68% quantil to be consistent with general error bars, which - # are usually rather 1 sigma of a normal distribution - - # BUT: needs scipy.stats.distributions providing the Fisher distribution - try: - import scipy.stats.distributions as ssd - except: - print 'module "scipy.stats.distributions" not found -- cannot calculate errors' - return z_array, tipper_array, None, None - - - zerr_array,tippererr_array = _spectraerr2zerr(S,idx,z_array,tipper_array,avgt,ssd) - - del ssd - - return z_array, tipper_array, zerr_array, tippererr_array - - -def _spectraerr2zerr(S,idx,Z,Tipper,avgt,ssd): - """calculating spectral error for one frequency - - input: NxN complex valued matrix. Important entries containing remote reference - information are in the last two columns. - - Errors do only depend on the station - no remote reference used here! - - output: - 2-tuple: [2,2] array with errors for Z , [1,2] array with errors for tipper - - """ - zerr_array = np.zeros((2,2)) - - - Zdet = np.real (S[idx[0],idx[0]] * S[idx[1],idx[1]] - np.abs(S[idx[0],idx[1]])**2) - #split up into three steps: first for Ex component, second for Ey, and then Tipper - - # 68% Quantil of the Fisher distribution: - sigma_quantil = ssd.f.ppf(0.68,4,avgt-4) - - #1) Ex - a = S[idx[3],idx[0]] * S[idx[1],idx[1]] - S[idx[3],idx[1]] * S[idx[1],idx[0]] - b = S[idx[3],idx[1]] * S[idx[0],idx[0]] - S[idx[3],idx[0]] * S[idx[0],idx[1]] - a /= Zdet - b /= Zdet - - psi_squared = np.real(1./np.real(S[idx[3],idx[3]]) * (a*S[idx[0],idx[3]]+b*S[idx[1],idx[3]])) - epsilon_squared = 1.-psi_squared - - scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[3],idx[3]]) - zerr_array[0,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) - zerr_array[0,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) - - - #2) Ey - a = S[idx[4],idx[0]] * S[idx[1],idx[1]] - S[idx[4],idx[1]] * S[idx[1],idx[0]] - b = S[idx[4],idx[1]] * S[idx[0],idx[0]] - S[idx[4],idx[0]] * S[idx[0],idx[1]] - a /= Zdet - b /= Zdet - - psi_squared = np.real(1./np.real(S[idx[4],idx[4]]) * (a*S[idx[0],idx[4]]+b*S[idx[1],idx[4]])) - epsilon_squared = 1.-psi_squared - - scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[4],idx[4]]) - zerr_array[1,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) - zerr_array[1,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) - - tippererr_array = None - - if Tipper is not None: - tippererr_array = np.zeros((1,2)) - #3) Tipper - a = S[idx[2],idx[0]] * S[idx[1],idx[1]] - S[idx[2],idx[1]] * S[idx[1],idx[0]] - b = S[idx[2],idx[1]] * S[idx[0],idx[0]] - S[idx[2],idx[0]] * S[idx[0],idx[1]] - a /= Zdet - b /= Zdet - - psi_squared = np.real(1./np.real(S[idx[2],idx[2]]) * (a* S[idx[0],idx[2]] + b *S[idx[1],idx[2]])) - epsilon_squared = 1.-psi_squared - scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[2],idx[2]]) - - tippererr_array[0,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) - tippererr_array[0,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) - - - return zerr_array, tippererr_array - - -def _make_z_dict(Z_object): - """ - make a z dictionary from a z-object - """ - - z_dict = {} - if Z_object.z is None: - return None - - compstrings = ['ZXX','ZXY','ZYX','ZYY'] - Z_entries = ['R','I','.VAR'] - for idx_comp,comp in enumerate(compstrings): - for idx_zentry,zentry in enumerate(Z_entries): - section = comp + zentry - - if idx_zentry < 2: - data = Z_object.z[:,idx_comp/2, idx_comp%2] - if idx_zentry == 0 : - data = np.real(data) - else: - data = np.imag(data) - else: - data = Z_object.zerr[:,idx_comp/2, idx_comp%2] - - z_dict[section] = data - - - return z_dict - - -def _make_tipper_dict(Tipper_object): - """ - make a dictionary from tipper object. - """ - - if Tipper_object.tipper is None: - return None - - tipper_dict = {} - compstrings = ['TX','TY'] - T_entries = ['R','I','VAR'] - for idx_comp,comp in enumerate(compstrings): - for idx_tentry,tentry in enumerate(T_entries): - section = comp + tentry - - if idx_tentry < 2: - data = Tipper_object.tipper[:,idx_comp/2, idx_comp%2] - if idx_tentry == 0 : - data = np.real(data) - else: - data = np.imag(data) - else: - data = Tipper_object.tippererr[:,idx_comp/2, idx_comp%2] - - tipper_dict[section] = data - - - return tipper_dict \ No newline at end of file + \ No newline at end of file diff --git a/mtpy/core/edi_object_new.py b/mtpy/core/edi_object_new.py deleted file mode 100644 index e52a45b4..00000000 --- a/mtpy/core/edi_object_new.py +++ /dev/null @@ -1,1435 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Tue Dec 22 16:03:31 2015 - -@author: jpeacock -""" - -import os -import numpy as np -import datetime - -import mtpy.utils.format as MTft -import mtpy.utils.calculator as MTcc -import mtpy.utils.exceptions as MTex -import mtpy.utils.filehandling as MTfh -import mtpy.core.z as MTz - -tab = ' '*4 - -class Edi(object): - """ - This class is for .edi files, mainly reading and writing. Has been tested - on Winglink and Phoenix output .edi's, which are meant to follow the - archaic EDI format put forward by SEG. Can read impedance, Tipper and/or - spectra data. - - The Edi class contains a class for each major section of the .edi file. - - Arguments - --------------- - - **edi_fn** : string - full path to .edi file to be read in. - *default* is None. If an .edi file is input, it is - automatically read in and attributes of Edi are filled - - - Methods - --------------- - ===================== ===================================================== - Methods Description - ===================== ===================================================== - read_edi_file Reads in an edi file and populates the associated - classes and attributes. - write_edi_file Writes an .edi file following the EDI format given - the apporpriate attributes are filled. Writes out - in impedance and Tipper format. - _read_data Reads in the impedance and Tipper blocks, if the - .edi file is in 'spectra' format, read_data converts - the data to impedance and Tipper. - _read_mt Reads impedance and tipper data from the appropriate - blocks of the .edi file. - _read_spectra Reads in spectra data and converts it to impedance - and Tipper data. - ===================== ===================================================== - - Attributes - --------------- - - ===================== ========================================== ========== - Attributes Description default - ===================== ========================================== ========== - Data_sect DataSection class, contains basin - information on the data collected and in - whether the data is in impedance or - spectra. - Define_measurement DefineMeasurement class, contains - information on how the data was - collected. - edi_fn full path to edi file read in None - Header Header class, contains metadata on - where, when, and who collected the data - Info Information class, contains information - on how the data was processed and how the - transfer functions where estimated. - Tipper mtpy.core.z.Tipper class, contains the - tipper data - Z mtpy.core.z.Z class, contains the - impedance data - _block_len number of data in one line. 6 - _data_header_str header string for each of the data '!****{0}****!' - section - _num_format string format of data. ' 15.6e' - _t_labels labels for tipper blocks - _z_labels labels for impedance blocks - ===================== ========================================== ========== - - Examples - --------------------- - :Change Latitude: :: - - >>> import mtpy.core.edi as mtedi - >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01.edi") - >>> # change the latitude - >>> edi_obj.header.lat = 45.7869 - >>> new_edi_fn = edi_obj.write_edi_file() - """ - - def __init__(self, edi_fn=None): - - self.edi_fn = edi_fn - self.Header = Header() - self.Info = Information() - self.Define_measurement = DefineMeasurement() - self.Data_sect = DataSection() - self.Z = MTz.Z() - self.Tipper = MTz.Tipper() - - self._z_labels = [['zxxr', 'zxxi', 'zxx.var'], - ['zxyr', 'zxyi', 'zxy.var'], - ['zyxr', 'zyxi', 'zyx.var'], - ['zyyr', 'zyyi', 'zyy.var']] - - self._t_labels = [['txr.exp', 'txi.exp', 'txvar.exp'], - ['tyr.exp', 'tyi.exp', 'tyvar.exp']] - - self._data_header_str = '!****{0}****!\n' - - self._num_format = ' 15.6e' - self._block_len = 6 - - if self.edi_fn is not None: - self.read_edi_file() - - def read_edi_file(self, edi_fn=None): - """ - Read in an edi file and fill attributes of each section's classes. - Including: - * Header - * Info - * Define_measurement - * Data_sect - * Z - * Tipper - - .. note:: Automatically detects if data is in spectra format. All - data read in is converted to impedance and Tipper. - - Arguments - ------------- - - **edi_fn** : string - full path to .edi file to be read in - *default* is None - - - - Examples - ------------- - - :Read edi: :: - - >>> import mtpy.core.Edi as mtedi - >>> edi_obj = mtedi.Edi() - >>> edi_obj.read_edi_file(edi_fn=r"/home/mt/mt01.edi") - - """ - - if edi_fn is not None: - self.edi_fn = edi_fn - - if self.edi_fn is None: - raise MTex.MTpyError_EDI("No edi file input, check edi_fn") - - if os.path.isfile(self.edi_fn) is False: - raise MTex.MTpyError_EDI("Could not find {0}, check path".format(self.edi_fn)) - - - self.Header = Header(edi_fn=self.edi_fn) - self.Info = Information(edi_fn=self.edi_fn) - self.Define_measurement = DefineMeasurement(edi_fn=self.edi_fn) - self.Data_sect = DataSection(edi_fn=self.edi_fn) - - self._read_data() - - if self.Header.lat is None: - self.Header.lat = self.Define_measurement.reflat - print 'Got latitude from reflat for {0}'.format(self.Header.dataid) - if self.Header.lon is None: - self.Header.lon = self.Define_measurement.reflon - print 'Got longitude from reflon for {0}'.format(self.Header.dataid) - if self.Header.elev is None: - self.Header.elev = self.Define_measurement.refelev - print 'Got elevation from refelev for {0}'.format(self.Header.dataid) - - print "Read in edi file for station {0}".format(self.Header.dataid) - - def _read_data(self): - """ - read either impedance or spectra data - """ - - if self.edi_fn is None: - raise MTex.MTpyError_EDI('No edi file input, check edi_fn') - if os.path.isfile(self.edi_fn) is False: - raise MTex.MTpyError_EDI('No edi file input, check edi_fn') - - with open(self.edi_fn, 'r') as fid: - lines = fid.readlines()[self.Data_sect.line_num+2:] - - if self.Data_sect.data_type == 'spectra': - self._read_spectra(lines) - - elif self.Data_sect.data_type == 'z': - self._read_mt(lines) - - def _read_mt(self, data_lines): - """ - read in impedance and tipper data if its there - """ - data_dict = {} - data_find = False - for line in data_lines: - if line.find('>') == 0 and line.find('!') == -1: - line_list = line[1:].strip().split() - key = line_list[0].lower() - if key[0] == 'z' or key[0] == 't' or key == 'freq': - data_find = True - data_dict[key] = [] - else: - data_find = False - - - elif data_find == True and line.find('>') == -1 and line.find('!') == -1: - d_lines = line.strip().split() - for ii, dd in enumerate(d_lines): - # check for empty values and set them to 0, check for any - # other characters sometimes there are ****** for a null - # component - try: - d_lines[ii] = float(dd) - if d_lines[ii] == 1.0e32: - d_lines[ii] = 0.0 - except ValueError: - d_lines[ii] = 0.0 - data_dict[key] += d_lines - - ## fill useful arrays - freq_arr = np.array(data_dict['freq'], dtype=np.float) - - ## fill impedance tensor - self.Z.freq = freq_arr.copy() - self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) - self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) - self.Z.rotation_angle = data_dict['zrot'] - - self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ - np.array(data_dict['zxxi'])*1j - self.Z.z[:, 0, 1] = np.array(data_dict['zxyr'])+\ - np.array(data_dict['zxyi'])*1j - self.Z.z[:, 1, 0] = np.array(data_dict['zyxr'])+\ - np.array(data_dict['zyxi'])*1j - self.Z.z[:, 1, 1] = np.array(data_dict['zyyr'])+\ - np.array(data_dict['zyyi'])*1j - - self.Z.zerr[:, 0, 0] = np.array(data_dict['zxx.var']) - self.Z.zerr[:, 0, 1] = np.array(data_dict['zxy.var']) - self.Z.zerr[:, 1, 0] = np.array(data_dict['zyx.var']) - self.Z.zerr[:, 1, 1] = np.array(data_dict['zyy.var']) - - - ## fill tipper data if there it exists - self.Tipper.tipper = np.zeros((self.Data_sect.nfreq, 1, 2), - dtype=np.complex) - self.Tipper.tippererr = np.zeros((self.Data_sect.nfreq, 1, 2), - dtype=np.float) - self.Tipper.freq = freq_arr.copy() - try: - self.Tipper.rotation_angle = data_dict['trot'] - except KeyError: - self.Tipper.rotation_angle = data_dict['zrot'] - - if 'txr.exp' in data_dict.keys(): - self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ - np.array(data_dict['txi.exp'])*1j - self.Tipper.tipper[:, 0, 1] = np.array(data_dict['tyr.exp'])+\ - np.array(data_dict['tyi.exp'])*1j - - self.Tipper.tippererr[:, 0, 0] = np.array(data_dict['txvar.exp']) - self.Tipper.tippererr[:, 0, 1] = np.array(data_dict['tyvar.exp']) - - else: - print 'Could not find any Tipper data.' - - def _read_spectra(self, data_lines): - """ - read in spectra data - """ - - data_dict = {} - - def write_edi_file(self, new_edi_fn=None): - """ - Write a new edi file from either an existing .edi file or from data - input by the user into the attributes of Edi. - - Arguments - ----------- - - **new_edi_fn** : string - full path to new edi file. - *default* is None, which will write to the same - file as the input .edi with as: - r"/home/mt/mt01_1.edi" - - Examples - ----------- - - :Write EDI file: :: - - >>> import mtpy.core.edi as mtedi - >>> edi_obj = mtedi.Edi(edi_fn=r"/home/mt/mt01/edi") - >>> edi_obj.Header.dataid = 'mt01_rr' - >>> edi_obj.write_edi_file() - """ - - if new_edi_fn is None: - if self.edi_fn is not None: - new_edi_fn = self.edi_fn - else: - new_edi_fn = os.path.join(os.getcwd(), - '{0}.edi'.format(self.Header.dataid)) - new_edi_fn = MTfh.make_unique_filename(new_edi_fn) - - if self.Header.dataid is None: - self.read_edi_file() - - # write lines - header_lines = self.Header.write_header() - info_lines = self.Info.write_info() - define_lines = self.Define_measurement.write_define_measurement() - dsect_lines = self.Data_sect.write_data_sect() - - # write out frequencies - freq_lines = [self._data_header_str.format('frequencies'.upper())] - freq_lines += self._write_data_block(self.Z.freq, 'freq') - - # write out rotation angles - zrot_lines = [self._data_header_str.format('impedance rotation angles'.upper())] - zrot_lines += self._write_data_block(self.Z.rotation_angle, 'zrot') - - # write out data only impedance and tipper - z_data_lines = [self._data_header_str.format('impedances'.upper())] - for ii in range(2): - for jj in range(2): - z_lines_real = self._write_data_block(self.Z.z[:, ii, jj].real, - self._z_labels[2*ii+jj][0]) - z_lines_imag = self._write_data_block(self.Z.z[:, ii, jj].imag, - self._z_labels[2*ii+jj][1]) - z_lines_var = self._write_data_block(self.Z.zerr[:, ii, jj], - self._z_labels[2*ii+jj][2]) - - z_data_lines += z_lines_real - z_data_lines += z_lines_imag - z_data_lines += z_lines_var - - # write out rotation angles - trot_lines = [self._data_header_str.format('tipper rotation angles'.upper())] - if type(self.Tipper.rotation_angle) is float: - trot = np.repeat(self.Tipper.rotation_angle, self.Tipper.freq.size) - else: - trot = self.Tipper.rotation_angle - trot_lines += self._write_data_block(trot, 'trot') - - # write out tipper lines - t_data_lines = [self._data_header_str.format('tipper'.upper())] - for jj in range(2): - t_lines_real = self._write_data_block(self.Tipper.tipper[:, 0, jj].real, - self._t_labels[jj][0]) - t_lines_imag = self._write_data_block(self.Tipper.tipper[:, 0, jj].imag, - self._t_labels[jj][1]) - t_lines_var = self._write_data_block(self.Tipper.tippererr[:, 0, jj], - self._t_labels[jj][2]) - - t_data_lines += t_lines_real - t_data_lines += t_lines_imag - t_data_lines += t_lines_var - - edi_lines = header_lines+\ - info_lines+\ - define_lines+\ - dsect_lines+\ - freq_lines+\ - zrot_lines+\ - z_data_lines+\ - trot_lines+\ - t_data_lines+['>END'] - - with open(new_edi_fn, 'w') as fid: - fid.write(''.join(edi_lines)) - - print 'Wrote {0}'.format(new_edi_fn) - return new_edi_fn - - def _write_data_block(self, data_comp_arr, data_key): - """ - write a data block - - return a list of strings - """ - if data_key.lower().find('z') >= 0 and \ - data_key.lower() not in ['zrot', 'trot']: - block_lines = ['>{0} ROT=ZROT // {1:.0f}\n'.format(data_key.upper(), - data_comp_arr.size)] - elif data_key.lower().find('t') >= 0 and \ - data_key.lower() not in ['zrot', 'trot']: - block_lines = ['>{0} ROT=TROT // {1:.0f}\n'.format(data_key.upper(), - data_comp_arr.size)] - elif data_key.lower() == 'freq': - block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), - data_comp_arr.size)] - - elif data_key.lower() in ['zrot', 'trot']: - block_lines = ['>{0} // {1:.0f}\n'.format(data_key.upper(), - data_comp_arr.size)] - - else: - raise MTex.MTpyError_EDI('Cannot write block for {0}'.format(data_key)) - - for d_index, d_comp in enumerate(data_comp_arr, 1): - if d_comp == 0.0 and data_key.lower() not in ['zrot', 'trot']: - d_comp = float(self.Header.empty) - # write the string in the specified format - num_str = '{0:{1}}'.format(d_comp, self._num_format) - - # check to see if a new line is needed - if d_index%self._block_len == 0: - num_str += '\n' - # at the end of the block add a return - if d_index == data_comp_arr.size: - num_str += '\n' - - block_lines.append(num_str) - - return block_lines - - #----------------------------------------------------------------------- - # set a few important properties - # --> Latitude - def _get_lat(self): - """ - get latitude - """ - - return self.Header.lat - - def _set_lat(self, input_lat): - """ - set latitude and make sure it is converted to a float - """ - - self.Header.lat = MTft._assert_position_format('lat', input_lat) - print 'Converted input latitude to decimal degrees: {0: .6f}'.format( - self.Header.lat) - - lat = property(fget=_get_lat, fset=_set_lat, - doc='Latitude in decimal degrees') - - # --> Longitude - def _get_lon(self): - return self.Header.lon - - def _set_lon(self, input_lon): - self.Header.lon = MTft._assert_position_format('lon', input_lon) - print 'Converted input longitude to decimal degrees: {0: .6f}'.format( - self.Header.lon) - - lon = property(fget=_get_lon, fset=_set_lon, - doc='Longitude in decimal degrees') - - # --> Elevation - def _get_elev(self): - return self.Header.elev - - def _set_elev(self, input_elev): - self.Header.elev = MTft._assert_position_format('elev', input_elev) - - elev = property(fget=_get_elev, fset=_set_elev, - doc='Elevation in meters') - - # --> station - def _get_station(self): - return self.Header.dataid - - def _set_station(self, new_station): - if type(new_station) is not str: - new_station = '{0}'.format(new_station) - self.Header.dataid = new_station - self.Data_sect.sectid = new_station - - station = property(fget=_get_station, fset=_set_station, - doc="station name") -#============================================================================== -# Header object -#============================================================================== -class Header(object): - """ - Header class contains all the information in the header section of the .edi - file. A typical header block looks like:: - - >HEAD - - ACQBY=None - ACQDATE=None - DATAID=par28ew - ELEV=0.000 - EMPTY=1e+32 - FILEBY=WG3DForward - FILEDATE=2016/04/11 19:37:37 UTC - LAT=-30:12:49 - LOC=None - LON=139:47:50 - PROGDATE=2002-04-22 - PROGVERS=WINGLINK EDI 1.0.22 - - Arguments - ------------- - - **edi_fn** : string - full path to .edi file to be read in. - *default* is None. If an .edi file is input, it is - automatically read in and attributes of Header are filled - - Attributes - ------------- - - Many of the attributes are needed in the .edi file. They are marked with - a yes for 'In .edi' - - ============== ======================================= ======== =========== - Attributes Description Default In .edi - ============== ======================================= ======== =========== - acqby Acquired by None yes - acqdate Acquired date (YYYY-MM-DD) None yes - dataid Station name, should be a string None yes - edi_fn Full path to .edi file None no - elev Elevation of station (m) None yes - empty Value for missing data 1e32 yes - fileby File written by None yes - filedate Date the file is written (YYYY-MM-DD) None yes - header_list List of header lines None no - lat Latitude of station [1]_ None yes - loc Location name where station was None yes - collected - lon Longitude of station [1]_ None yes - phoenix_edi [ True | False ] if phoenix .edi format False no - progdate Date of program version to write .edi None yes - progvers Version of program writing .edi None yes - stdvers Standard version None yes - units Units of distance m yes - _header_keys list of metadata input into .edi [2]_ - header block. no - ============== ======================================= ======== =========== - - .. rubric:: footnotes - .. [1] Internally everything is converted to decimal degrees. Output is - written as HH:MM:SS.ss so Winglink can read them in. - .. [2] If you want to change what metadata is written into the .edi file - change the items in _header_keys. Default attributes are: - * acqby - * acqdate - * dataid - * elev - * fileby - * lat - * loc - * lon - * filedate - * empty - * progdate - * progvers - - Methods - ------------- - - ====================== ==================================================== - Methods Description - ====================== ==================================================== - get_header_list get header lines from edi file - read_header read in header information from header_lines - write_header write header lines, returns a list of lines to write - ====================== ==================================================== - - - Examples - -------------- - - :Read Header: :: - - >>> import mtpy.core.edi as mtedi - >>> header_obj = mtedi.Header(edi_fn=r"/home/mt/mt01.edi") - - """ - - def __init__(self, edi_fn=None, **kwargs): - self.edi_fn = edi_fn - self.dataid = None - self.acqby = None - self.fileby = None - self.acqdate = None - self.units = None - self.filedate = datetime.datetime.utcnow().strftime( - '%Y/%m/%d %H:%M:%S UTC') - self.loc = None - self.lat = None - self.lon = None - self.elev = None - self.empty = 1E32 - self.progvers = None - self.progdate = None - self.phoenix_edi = False - - self.header_list = None - - self._header_keys = ['acqby', - 'acqdate', - 'dataid', - 'elev', - 'fileby', - 'lat', - 'loc', - 'lon', - 'filedate', - 'empty', - 'progdate', - 'progvers'] - - for key in kwargs.keys(): - setattr(self, key, kwargs[key]) - - if self.edi_fn is not None: - self.read_header() - - def get_header_list(self): - """ - Get the header information from the .edi file in the form of a list, - where each item is a line in the header section. - """ - - if self.edi_fn == None: - print 'No edi file to read' - return - if os.path.isfile(self.edi_fn) == False: - print 'Could not find {0}, check path'.format(self.edi_fn) - - self.header_list = [] - head_find = False - count = 0 - with open(self.edi_fn, 'r') as fid: - for line in fid: - if line.find('>') == 0: - count += 1 - if line.lower().find('head') > 0: - head_find = True - else: - head_find = False - if count == 2 and head_find == False: - break - elif count == 1 and line.find('>') != 0 and head_find == True: - line = line.strip() - # skip any blank lines - if len(line) > 2: - self.header_list.append(line.strip()) - - self.header_list = self._validate_header_list(self.header_list) - - def read_header(self, header_list=None): - """ - read a header information from either edi file or a list of lines - containing header information. - - Arguments - ----------- - - **header_list** : list - should be read from an .edi file or input as - ['key_01=value_01', 'key_02=value_02'] - - Examples - ---------- - - :Input header_list: :: - - >>> h_list = ['lat=36.7898', 'lon=120.73532', 'elev=120.0', ... - >>> 'dataid=mt01'] - >>> import mtpy.core.edi as mtedi - >>> header = mtedi.Header() - >>> header.read_header(h_list) - - """ - - if header_list is not None: - self.header_list = self._validate_header_list(header_list) - - if self.header_list is None and self.edi_fn is None: - print 'Nothing to read. header_list and edi_fn are None' - - if self.header_list is None and self.edi_fn is not None: - self.get_header_list() - - for h_line in self.header_list: - h_list = h_line.split('=') - key = h_list[0].lower() - value = h_list[1].replace('"', '') - - if key in 'latitude': - key = 'lat' - value = MTft._assert_position_format(key, value) - - elif key in 'longitude': - key = 'lon' - value = MTft._assert_position_format(key, value) - - elif key in 'elevation': - key = 'elev' - try: - value = float(value) - except ValueError: - value = 0.0 - print 'No elevation data' - - elif key in ['country', 'state', 'loc', 'location', 'prospect']: - key = 'loc' - try: - if getattr(self, key) is not None: - value = '{0}, {1}'.format(getattr(self, key), value) - except KeyError: - pass - # test if its a phoenix formated .edi file - elif key in ['progvers']: - if value.lower().find('mt-editor') != -1: - self.phoenix_edi = True - - elif key in ['fileby']: - if value == '': - value = 'mtpy' - - setattr(self, key, value) - - def write_header(self, header_list=None): - """ - Write header information to a list of lines. - - Arguments - ------------- - - **header_list** : list - should be read from an .edi file or input as - ['key_01=value_01', 'key_02=value_02'] - - Returns - --------------- - - **header_lines** : list - list of lines containing header information - will be of the form - ['>HEAD\n', - ' key_01=value_01\n'] - if None is input then reads from input .edi - file or uses attribute information to write - metadata. - """ - - if header_list is not None: - self.read_header(header_list) - - if self.header_list is None and self.edi_fn is not None: - self.get_header_list() - - header_lines = ['>HEAD\n\n'] - for key in sorted(self._header_keys): - value = getattr(self, key) - if key in ['progdate', 'progvers']: - if value is None: - value = 'mtpy' - elif key in ['lat', 'lon']: - value = MTft.convert_dms_tuple2string( - MTft.convert_degrees2dms_tuple(value)) - if key in ['elev']: - try: - value = '{0:.3f}'.format(value) - except ValueError: - value = '0.000' - - if key in ['filedate']: - value = datetime.datetime.utcnow().strftime( - '%Y/%m/%d %H:%M:%S UTC') - - header_lines.append('{0}{1}={2}\n'.format(tab, key.upper(), value)) - header_lines.append('\n') - return header_lines - - def _validate_header_list(self, header_list): - """ - make sure the input header list is valid - - returns a validated header list - """ - - if header_list is None: - print 'No header information to read' - return None - - new_header_list = [] - for h_line in header_list: - h_line = h_line.strip().replace('"', '') - if len(h_line) > 1: - h_list = h_line.split('=') - if len(h_list) == 2: - key = h_list[0] - value = h_list[1] - new_header_list.append('{0}={1}'.format(key, value)) - - return new_header_list - -#============================================================================== -# Info object -#============================================================================== -class Information(object): - """ - Contain, read, and write info section of .edi file - - not much to really do here, but just keep it in the same format that it is - read in as, except if it is in phoenix format then split the two paragraphs - up so they are sequential. - - """ - - def __init__(self, edi_fn=None): - self.edi_fn = edi_fn - self.info_list = None - - if self.edi_fn is not None: - self.read_info() - - def get_info_list(self): - """ - get a list of lines from the info section - """ - - if self.edi_fn is None: - print 'no edi file input, check edi_fn attribute' - return - if os.path.isfile(self.edi_fn) is False: - print 'Could not find {0}, check path'.format(self.edi_fn) - return - - self.info_list = [] - info_find = False - phoenix_file = False - phoenix_list_02 = [] - count = 0 - with open(self.edi_fn, 'r') as fid: - for line in fid: - if line.find('>') == 0: - count += 1 - if line.lower().find('info') > 0: - info_find = True - else: - info_find = False - if count > 2 and info_find == False: - break - elif count > 1 and line.find('>') != 0 and info_find == True: - if line.lower().find('run information') >= 0: - phoenix_file = True - if phoenix_file == True and len(line) > 40: - self.info_list.append(line[0:37].strip()) - phoenix_list_02.append(line[38:].strip()) - else: - if len(line.strip()) > 1: - self.info_list.append(line.strip()) - - self.info_list += phoenix_list_02 - # validate the information list - self.info_list = self._validate_info_list(self.info_list) - - def read_info(self, info_list=None): - """ - read information section of the .edi file - """ - - if info_list is not None: - self.info_list = self._validate_info_list(info_list) - - if self.edi_fn is not None and self.info_list is None: - self.get_info_list() - - if self.info_list is None: - print "Could not read information" - return - - def write_info(self, info_list=None): - """ - - """ - - if info_list is not None: - self.info_list = self._validate_info_list(info_list) - - - info_lines = ['>INFO\n\n'] - for line in self.info_list: - info_lines.append('{0}{1}\n'.format(tab, line)) - - return info_lines - - - def _validate_info_list(self, info_list): - """ - check to make sure the info list input is valid, really just checking - for Phoenix format where they put two columns in the file and remove - any blank lines and the >info line - """ - - new_info_list = [] - for line in info_list: - # get rid of empty lines - lt = str(line).strip() - if len(lt) > 1: - if line.find('>') == 0: - pass - else: - new_info_list.append(line.strip()) - - return new_info_list - - -#============================================================================== -# Define measurement class -#============================================================================== -class DefineMeasurement(object): - """ - DefineMeasurement class holds information about the measurement. This - includes how each channel was setup. The main block contains information - on the reference location for the station. This is a bit of an archaic - part and was meant for a multiple station .edi file. This section is also - important if you did any forward modeling with Winglink cause it only gives - the station location in this section. The other parts are how each channel - was collected. An example define measurement section looks like:: - - >=DEFINEMEAS - - MAXRUN=999 - MAXMEAS=9999 - UNITS=M - REFTYPE=CART - REFLOC="par28ew" - REFLAT=-30:12:49.4693 - REFLONG=139:47:50.87 - REFELEV=0 - - >HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 - >HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 - >HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 - >EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 - >EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 - >HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 - >HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 - - Arguments - ------------- - - **edi_fn** : string - full path to .edi file to read in. - - Attributes - ------------- - - ================= ==================================== ======== =========== - Attributes Description Default In .edi - ================= ==================================== ======== =========== - edi_fn Full path to edi file read in None no - maxchan Maximum number of channels measured None yes - maxmeas Maximum number of measurements 9999 yes - maxrun Maximum number of measurement runs 999 yes - meas_#### HMeasurement or EMEasurment object None yes - defining the measurement made [1]_ - refelev Reference elevation (m) None yes - reflat Reference latitude [2]_ None yes - refloc Reference location None yes - reflon Reference longituted [2]_ None yes - reftype Reference coordinate system 'cart' yes - units Units of length m yes - _define_meas_keys Keys to include in define_measurment [3]_ no - section. - ================= ==================================== ======== =========== - - .. rubric:: footnotes - .. [1] Each channel with have its own define measurement and depending on - whether it is an E or H channel the metadata will be different. - the #### correspond to the channel number. - .. [2] Internally everything is converted to decimal degrees. Output is - written as HH:MM:SS.ss so Winglink can read them in. - .. [3] If you want to change what metadata is written into the .edi file - change the items in _header_keys. Default attributes are: - * maxchan - * maxrun - * maxmeas - * reflat - * reflon - * refelev - * reftype - * units - - """ - - def __init__(self, edi_fn=None): - self.edi_fn = edi_fn - self.measurement_list = None - - self.maxchan = None - self.maxmeas = 7 - self.maxrun = 999 - self.refelev = None - self.reflat = None - self.reflon = None - self.reftype = 'cartesian' - self.units = 'm' - - self._define_meas_keys = ['maxchan', - 'maxrun', - 'maxmeas', - 'reflat', - 'reflon', - 'refelev', - 'reftype', - 'units'] - - if self.edi_fn is not None: - self.read_define_measurement() - - def get_measurement_lists(self): - """ - get measurement list including measurement setup - """ - if self.edi_fn is None: - print 'No edi file input, check edi_fn attribute' - return - - if os.path.isfile(self.edi_fn) is False: - print 'Could not find {0}, check path'.format(self.edi_fn) - - self.measurement_list = [] - meas_find = False - count = 0 - with open(self.edi_fn, 'r') as fid: - for line in fid: - if line.find('>=') == 0: - count += 1 - if line.lower().find('definemeas') > 0: - meas_find = True - else: - meas_find = False - if count == 2 and meas_find == False: - break - elif count == 1 and line.find('>') != 0 and meas_find == True: - line = line.strip() - if len(line) > 2: - self.measurement_list.append(line.strip()) - - # look for the >XMEAS parts - elif count == 1 and line.find('>') == 0 and meas_find == True: - if line.find('!') > 0: - pass - else: - line_list = line.strip().split() - m_dict = {} - for ll in line_list[1:]: - ll_list = ll.split('=') - key = ll_list[0].lower() - value = ll_list[1] - m_dict[key] = value - self.measurement_list.append(m_dict) - - def read_define_measurement(self, measurement_list=None): - """ - read the define measurment section of the edi file - - should be a list with lines for: - - maxchan - - maxmeas - - maxrun - - refelev - - reflat - - reflon - - reftype - - units - - dictionaries for >XMEAS with keys: - - id - - chtype - - x - - y - - axm - -acqchn - - """ - - if measurement_list is not None: - self.measurement_list = measurement_list - - if self.measurement_list is None and self.edi_fn is not None: - self.get_measurement_lists() - - if self.measurement_list is None and self.edi_fn is None: - print 'Nothing to read, check edi_fn or measurement_list attributes' - return - - m_count = 1 - for line in self.measurement_list: - if type(line) is str: - line_list = line.split('=') - key = line_list[0].lower() - value = line_list[1] - if key in 'reflatitude': - key = 'reflat' - value = MTft._assert_position_format('lat', value) - elif key in 'reflongitude': - key = 'reflon' - value = MTft._assert_position_format('lon', value) - elif key in 'refelevation': - key = 'refelev' - value = MTft._assert_position_format('elev', value) - elif key in 'maxchannels': - key = 'maxchan' - value = int(value) - elif key in 'maxmeasurements': - key = 'maxmeas' - value = int(value) - setattr(self, key, value) - - elif type(line) is dict: - try: - key = 'meas_{0:02.0f}'.format(float(line['id'])) - except KeyError: - key = 'meas_{0:02}'.format(m_count) - if line['chtype'].lower().find('h') >= 0: - value = HMeasurement(**line) - elif line['chtype'].lower().find('e') >= 0: - value = EMeasurement(**line) - setattr(self, key, value) - - def write_define_measurement(self, measurement_list=None): - """ - write the define measurement block as a list of strings - """ - - if measurement_list is not None: - self.read_define_measurement(measurement_list=measurement_list) - - measurement_lines = ['>=DEFINEMEAS\n\n'] - for key in self._define_meas_keys: - value = getattr(self, key) - if key == 'reflat' or key == 'reflon': - value = MTft.convert_dms_tuple2string( - MTft.convert_degrees2dms_tuple(value)) - elif key == 'refelev': - value = '{0:.3f}'.format(value) - - measurement_lines.append('{0}{1}={2}\n'.format(tab, - key.upper(), - value)) - measurement_lines.append('\n') - - ## need to write the >XMEAS type - m_key_list = [kk for kk in self.__dict__.keys() if kk.find('meas_')==0] - if len(m_key_list) == 0: - print 'No XMEAS information.' - else: - for key in sorted(m_key_list): - m_obj = getattr(self, key) - if m_obj.chtype.lower().find('h') >= 0: - head = 'hmeas' - elif m_obj.chtype.lower().find('e') >= 0: - head = 'emeas' - else: - head = None - - m_list = ['>{0}'.format(head.upper())] - for mkey, mfmt in zip(m_obj._kw_list, m_obj._fmt_list): - m_list.append(' {0}={1:{2}}'.format(mkey.upper(), - getattr(m_obj, mkey), - mfmt)) - m_list.append('\n') - measurement_lines.append(''.join(m_list)) - - return measurement_lines - -#============================================================================== -# magnetic measurements -#============================================================================== -class HMeasurement(object): - """ - HMeasurement contains metadata for a magnetic field measurement - - Attributes - ------------ - - ====================== ==================================================== - Attributes Description - ====================== ==================================================== - id Channel number - chtype [ HX | HY | HZ | RHX | RHY ] - x x (m) north from reference point (station) - y y (m) east from reference point (station) - azm angle of sensor relative to north = 0 - acqchan name of the channel acquired usually same as chtype - ====================== ==================================================== - - Example - ------------ - - :Fill Metadata: :: - - >>> import mtpy.core.edi as mtedi - >>> h_dict = {'id': '1', 'chtype':'hx', 'x':0, 'y':0, 'azm':0} - >>> h_dict['acqchn'] = 'hx' - >>> hmeas = mtedi.HMeasurement(**h_dict) - """ - - def __init__(self, **kwargs): - - self._kw_list = ['id', 'chtype', 'x', 'y', 'azm', 'acqchan'] - self._fmt_list = ['<4.4g','<3', '<4.1f', '<4.1f', '<4.1f', '<4'] - for key in self._kw_list: - setattr(self, key, None) - - for key in kwargs.keys(): - try: - setattr(self, key, float(kwargs[key])) - except ValueError: - setattr(self, key, kwargs[key]) - -#============================================================================== -# electric measurements -#============================================================================== -class EMeasurement(object): - """ - EMeasurement contains metadata for an electric field measurement - - Attributes - ------------ - - ====================== ==================================================== - Attributes Description - ====================== ==================================================== - id Channel number - chtype [ EX | EY ] - x x (m) north from reference point (station) of one - electrode of the dipole - y y (m) east from reference point (station) of one - electrode of the dipole - x2 x (m) north from reference point (station) of the - other electrode of the dipole - y2 y (m) north from reference point (station) of the - other electrode of the dipole - acqchan name of the channel acquired usually same as chtype - ====================== ==================================================== - - Example - ------------ - - :Fill Metadata: :: - - >>> import mtpy.core.edi as mtedi - >>> e_dict = {'id': '1', 'chtype':'ex', 'x':0, 'y':0, 'x2':50, 'y2':50} - >>> e_dict['acqchn'] = 'ex' - >>> emeas = mtedi.EMeasurement(**e_dict) - """ - - def __init__(self, **kwargs): - - self._kw_list = ['id', 'chtype', 'x', 'y', 'x2', 'y2', 'acqchan'] - self._fmt_list = ['<4.4g', '<3', '<4.1f', '<4.1f', '<4.1f', '<4.1f', - '<4'] - for key in self._kw_list: - setattr(self, key, None) - - for key in kwargs.keys(): - try: - setattr(self, key, float(kwargs[key])) - except ValueError: - setattr(self, key, kwargs[key]) - - -#============================================================================== -# data section -#============================================================================== -class DataSection(object): - """ - DataSection contains the small metadata block that describes which channel - is which. A typical block looks like:: - - >=MTSECT - - ex=1004.001 - ey=1005.001 - hx=1001.001 - hy=1002.001 - hz=1003.001 - nfreq=14 - sectid=par28ew - nchan=None - maxblks=None - - Arguments - ------------- - **edi_fn** : string - full path to .edi file to read in. - - Attributes - ------------- - - ================= ==================================== ======== =========== - Attributes Description Default In .edi - ================= ==================================== ======== =========== - ex ex channel id number None yes - ey ey channel id number None yes - hx hx channel id number None yes - hy hy channel id number None yes - hz hz channel id number None yes - nfreq number of frequencies None yes - sectid section id, should be the same - as the station name -> Header.dataid None yes - maxblks maximum number of data blocks None yes - nchan number of channels None yes - _kw_list list of key words to put in metadata [1]_ no - ================= ==================================== ======== =========== - - .. rubric:: Footnotes - .. [1] Changes these values to change what is written to edi file - """ - def __init__(self, edi_fn=None): - self.edi_fn = edi_fn - - self.data_type = 'z' - self.line_num = 0 - self.data_sect_list = None - - self._kw_list = ['ex', - 'ey', - 'hx', - 'hy', - 'hz', - 'nfreq', - 'sectid', - 'nchan', - 'maxblks'] - - for key in self._kw_list: - setattr(self, key, None) - - if self.edi_fn is not None: - self.read_data_sect() - - - def get_data_sect(self): - """ - read in the data of the file, will detect if reading spectra or - impedance. - """ - - if self.edi_fn is None: - raise MTex.MTpyError_EDI('No edi file to read. Check edi_fn') - - if os.path.isfile(self.edi_fn) is False: - raise MTex.MTpyError_EDI('Could not find {0}. Check path'.format(self.edi_fn)) - - self.data_sect_list = [] - data_sect_find = False - count = 0 - with open(self.edi_fn) as fid: - for ii, line in enumerate(fid): - if line.find('>=') == 0: - count += 1 - if line.lower().find('sect') > 0: - data_sect_find = True - self.line_num = ii - if line.lower().find('spect') > 0: - self.data_type = 'spectra' - elif line.lower().find('mt') > 0: - self.data_type = 'z' - else: - data_sect_find = False - if count > 2 and data_sect_find == False: - break - elif count == 2 and line.find('>') != 0 and \ - data_sect_find == True: - if len(line.strip()) > 2: - self.data_sect_list.append(line.strip()) - - def read_data_sect(self, data_sect_list=None): - """ - read data section - """ - - if data_sect_list is not None: - self.data_sect_list = data_sect_list - - if self.edi_fn is not None and self.data_sect_list is None: - self.get_data_sect() - - for d_line in self.data_sect_list: - d_list = d_line.split('=') - if len(d_list) > 1: - key = d_list[0].lower() - try: - value = int(d_list[1].strip()) - except ValueError: - value = d_list[1].strip().replace('"', '') - - setattr(self, key, value) - - def write_data_sect(self, data_sect_list=None): - """ - write a data section - """ - - if data_sect_list is not None: - self.read_data_sect(data_sect_list) - - if self.data_type == 'spectra': - data_sect_lines = ['\n>=spectrasect\n'.upper()] - - if self.data_type == 'z': - data_sect_lines = ['\n>=mtsect\n'.upper()] - for key in self._kw_list: - data_sect_lines.append('{0}{1}={2}\n'.format(tab, - key.upper(), - getattr(self, key))) - - data_sect_lines.append('\n') - - return data_sect_lines - - \ No newline at end of file diff --git a/mtpy/core/edi_old.py b/mtpy/core/edi_old.py new file mode 100644 index 00000000..0de4c337 --- /dev/null +++ b/mtpy/core/edi_old.py @@ -0,0 +1,3050 @@ +#!/usr/bin/env python + +""" +============= +edi module +============= + +Classes +-------- + * **Edi** reads and writes .edi files + +Functions +---------- + + - read_edifile + - write_edifile + - combine_edifiles + - validate_edifile + - rotate_edifile + - _generate_edifile_string + - _cut_sectionstring + - _validate_edifile_string + + +LK, JP 2013 + +""" + +#================================================================= +import numpy as np +import os,sys +import os.path as op +import time, calendar, datetime +import copy +#required for finding HMEAS and EMEAS at once: +import re + + +import mtpy.utils.format as MTft +import mtpy.utils.calculator as MTcc +import mtpy.utils.exceptions as MTex +import mtpy.utils.filehandling as MTfh +import mtpy.core.z as MTz + +#for interactive debugging: +reload(MTex) +reload(MTft) +reload(MTcc) +reload(MTz) + +# try: +# import ipdb +# except: +# pass + + +#================================================================= + +class Edi(object): + """ + Edi class - generates an edi-object. + + Methods include reading and writing from and to edi-files, + rotations/combinations of edi-files, as well as 'get' and + 'set' for all edi file sections + + Errors are given as standard deviations (sqrt(VAR)) + + **Agruments:** + + **filename** : string + full path to file name + + ====================== ==================================================== + **Attributes** Description + ====================== ==================================================== + period periods extracted from edi file + data_dict dictionary of data information + definemeas definemeas block + edi_dict dictionary of edi blocks + elev elevation of station + filename name of edi file + freq frequencies extracted from edi file + head header information + hmeas_emeas hmeas and emeas block + infile_string full string of edi file + info_dict ditionary of information block + info_string full string of information block + lat latitude in decimal degrees + lon longitude in decimal degrees + mtsect mtsect block + n_freq number of frequencies + Tipper mtpy.core.z.Tipper object + zrot rotation angle in degrees + Z mtpy.core.z.Z object + ====================== ==================================================== + + ====================== ==================================================== + **Methods** Description + ====================== ==================================================== + readfile read edi file + rotate rotate Z and Tipper + writefile write edi file + ====================== ==================================================== + + :Example: :: + + >>> import mtpy.core.edi as mtedi + >>> e1 = mtedi.Edi(r"/home/MT/mt01.edi") + >>> e1.rotate(30) + >>> e1.writefile(r"/home/MT/Rotated/mt01.edi") + + + """ + + def __init__(self, filename=None, datatype = 'z'): + + """ + Initialise an instance of the Edi class. + + Initialise the attributes with None/empty dictionary + + **Agruments:** + + **filename** : string + full path to file name + """ + + self.filename = filename + self.infile_string = None + self._head = {'lat':None,'long':None,'elev':None} + self._info_string = None + self._info_dict = {} + self._definemeas = {} + self._hmeas_emeas = None + self._mtsect = {} + self._freq = None + self._zrot = None + self.Z = MTz.Z() + self.Tipper = MTz.Tipper() + self._station = None + self._lat = None + self._lon = None + self._elev = None + + + if filename is not None: + self.readfile(self.filename, datatype = datatype) + + def readfile(self, fn, datatype = 'z'): + """ + Read in an EDI file. + + Returns an exception, if the file is invalid + (following MTpy standards). + + **Agruments:** + + **fn** : string + full path to .edi file name + + **daytatype** : | 'z' | 'resphase' | 'spectra' | + * 'z' for impedance data *default* + * 'resphase' for resistivity and phase data + * 'spectra' for spectra data + + """ + + self.__init__() + + + print ' ...nulled all attributes of current MTedi.Edi instance.' + print 'reading in Edi file: {0}'.format(fn) + print datatype + infile = op.abspath(fn) + + + try: + datatype = datatype.lower() + if not datatype in ['z' , 'resphase', 'spectra']: + raise + except: + raise MTex.MTpyError_edi_file('ERROR - datatype not understood') + + #check for existence + if not op.isfile(infile): + raise MTex.MTpyError_edi_file('File is not existing: %s'%infile) + + with open(infile,'r') as F: + edistring = F.read() + + #validate edi file string following MTpy standard + if not _validate_edifile_string(edistring): + raise MTex.MTpyError_edi_file('%s is no proper EDI file'%infile) + + self.filename = infile + self.infile_string = edistring + + #read out the mandatory EDI file sections from the raw string + try: + self._read_head(edistring) + except: + raise MTex.MTpyError_edi_file( + 'Could not read HEAD section: %s'%infile) + + try: + self._read_info(edistring) + except: + print 'Could not read INFO section: {0}'.format(infile) + + + try: + self._read_definemeas(edistring) + except: + raise MTex.MTpyError_edi_file( + 'Could not read DEFINEMEAS section: %s'%infile) + + try: + self._read_hmeas_emeas(edistring) + except: + print 'Could not read HMEAS/EMEAS sub-section: %s'%infile + + try: + self._read_mtsect(edistring) + except: + print 'Could not read MTSECT section: %s'%infile + + try: + self._read_freq(edistring) + except: + print 'Could not read FREQ section: %s'%infile + + if datatype == 'z': + try: + self._read_z(edistring) + except: + raise MTex.MTpyError_edi_file( + 'Could not read Z section: %s -- check datatype!'%infile) + + elif datatype == 'resphase': + try: + self._read_res_phase(edistring) + except: + raise MTex.MTpyError_edi_file( + 'Could not read ResPhase-/Rho-section -- check datatype!: %s'%infile) + #rotation is optional + try: + self._read_rhorot(edistring) + except: + self.zrot = None #list(np.zeros((self.n_freq()))) + print 'Could not read Rhorot section: %s'%infile + + elif datatype == 'spectra': + try: + self._read_spectra(edistring) + except: + raise MTex.MTpyError_edi_file( + 'Could not read Spectra section: %s'%infile) + + + #Tipper is optional + if self.Tipper.tipper is None: + try: + self._read_tipper(edistring) + except: + self.Tipper = MTz.Tipper() + #self.tippererr = None + print 'Could not read Tipper section: %s'%infile + + #rotation is optional + if self._zrot is None: + try: + self._read_zrot(edistring) + except: + self.zrot = np.zeros((len(self.Z.z))) + print 'Could not read Zrot section: %s'%infile + + + def edi_dict(self): + """ + Collect sections of the EDI file and return them as a dictionary. + + """ + + edi_dict = {} + + edi_dict['HEAD'] = self.head + edi_dict['INFO'] = self.info_dict + edi_dict['info_string'] = self.info_string + edi_dict['DEFINEMEAS'] = self.definemeas + edi_dict['HMEAS_EMEAS'] = self.hmeas_emeas + edi_dict['MTSECT'] = self.mtsect + edi_dict['FREQ'] = self.freq + edi_dict['Z'] = _make_z_dict(self.Z) + if self.Tipper.tipper is not None: + edi_dict['TIPPER'] = _make_tipper_dict(self.Tipper) + edi_dict['ZROT'] = self.zrot + + + return edi_dict + + + def data_dict(self): + """ + Return collected raw data information in one dictionary: + Z, Tipper, Zrot, freq + + """ + data_dict = {} + + data_dict['z'] = self.Z.z + data_dict['zerr'] = self.Z.zerr + data_dict['tipper'] = self.Tipper.tipper + data_dict['tippererr'] = self.Tipper.tippererr + data_dict['zrot'] = self.zrot + data_dict['freq'] = self.freq + + return data_dict + + #----------------Periods---------------------------------------------- + def _get_period(self): + """ + Return an array of periods (output values in seconds). + """ + + try: + return 1./np.array(self.freq) + except: + return None + + def _set_period(self, period_lst): + """ + Set freq by a list of periods (values in seconds). + """ + if len(period_lst) is not len(self.Z.z): + print 'length of periods list not correct'+\ + '({0} instead of {1})'.format(len(period_lst), + len(self.Z.z)) + return + self.freq = 1./np.array(period_lst) + + period = property(_get_period, _set_period, + doc='List of periods (values in seconds)') + + #----------------number of freq------------------------------------- + def n_freq(self): + """ + Return the number of freq/length of the Z data array . + """ + if self.freq is not None: + return len(self.freq) + else: + return None + + #----------------elevation---------------------------------------------- + def _get_elev(self): + """ + get elevation from either header or definmeas + + """ + try: + return self.head['elev'] + except KeyError: + try: + return self.definemeas['refelev'] + except KeyError: + print 'Could not find elevation value' + + def _set_elev(self, value): + + no_key = True + try: + self.head['elev'] = MTft._assert_position_format('elev',value) + no_key = False + except : + pass + try: + self.definemeas['refelev'] = \ + MTft._assert_position_format('elev',value) + no_key = False + except : + pass + + if no_key is True: + print 'Invalid elevation value' + + elev = property(_get_elev, _set_elev, doc='Location elevation in meters') + + #----------------latitude---------------------------------------------- + def _get_lat(self): + """ + get latitude looking for keywords 'lat' in head or 'reflat' in definemeas + + """ +# try: + return self.head['lat'] + # except KeyError: + # try: + # return self.definemeas['reflat'] + # except KeyError: + # print 'Could not find Latitude' + + def _set_lat(self, value): + """ + set latitude value in head and defmeas - converts to decimal degrees + """ + + no_key = True + try: + self.head['lat'] = MTft._assert_position_format('lat',value) + no_key = False + except: + pass + try: + self.definemeas['reflat'] = \ + MTft._assert_position_format('lat',value) + no_key = False + except: + pass + if no_key is True: + print 'Invalid latitude value' + + lat = property(_get_lat, _set_lat, doc='Location latitude in degrees') + + #----------------longitude---------------------------------------------- + def _get_lon(self): + """ + get longitude looking for keywords 'long' in head or 'reflong' in + definemeas + """ + try: + return self.head['long'] + except KeyError: + try: + return self.definemeas['reflong'] + except KeyError: + print 'Could not find Longitude' + + def _set_lon(self, value): + """ + set longitude value in head and defmeas - converts to decimal degrees + """ + + no_key = True + + try: + self.head['long'] = MTft._assert_position_format('lon',value) + no_key = False + except: + pass + try: + self.definemeas['reflong'] = \ + MTft._assert_position_format('lon',value) + no_key = False + except: + pass + + if no_key is True: + + print 'Invalid longitude value' + + + + lon = property(_get_lon, _set_lon, doc='Location longitude in degrees') + + #--------------Read Header---------------------------------------------- + def _read_head(self, edistring): + """ + Read in the HEAD section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'HEAD') + except: + raise + + head_dict = {} + t1 = temp_string.strip().split('\n') + t2 = [i.strip() for i in t1 if '=' in i] + for j in t2: + k = j.split('=') + key = str(k[0]).lower().strip() + value = k[1].replace('"','') + if key == 'dataid': + value = value.replace(' ','_') + if key in ['lat','long','lon','latitude','longitude','ele','elev', + 'elevation']: + value = MTft._assert_position_format(key,value) + + if key in ['ele','elev','elevation']: + key = 'elev' + if key in ['lat','latitude']: + key = 'lat' + if key in ['long','lon','longitude']: + key = 'long' + #bring longitude to standard interval: + if 180 < value <= 360: + value -= 360 + + head_dict[key] = value + + if not head_dict.has_key('elev'): + head_dict['elev'] = 0. + + try: + self.station = head_dict['dataid'].replace(' ','_') + except KeyError: + print 'Did not find station name under dataid in HEAD' + + self._head = head_dict + + + #--------------Read Info---------------------------------------------- + def _read_info(self, edistring): + """ + Read in the INFO section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'INFO') + except: + raise + + self._info_string = temp_string.strip() + + + t1 = temp_string.strip().split('\n') + t2 = [i.strip() for i in t1 if '=' in i or ':' in i] + + info_dict = {} + + for tmp_str in t2: + #fill dictionary + #ignore lines with no information after '='' or ':' + + if '=' in tmp_str: + t3 = tmp_str.split('=') + key = str(t3[0]).lower().strip() + value = t3[1].replace('"','').strip() + if not len(value) == 0: + info_dict[key] = value + + elif ':' in tmp_str: + #consider potential ':' characters in coordinates! + t3 = tmp_str.split(':') + key = str(t3[0]).lower().strip() + value = t3[1:] + value = [i.strip().replace('"','').strip() for i in value] + if len(value) > 1: + value = ':'.join(value) + else: + value = value[0] + + if not len(value) == 0: + info_dict[key] = value + + if 'station' not in info_dict: + station = self.head['dataid'] + if len(station) == 0: + station = op.splitext(op.basename(self.filename))[0] + info_dict['station'] = station + + info_dict['Z_unit'] = 'km/s' + + self._info_dict = info_dict + + #--------------Read Definemeas-------------------------------------------- + def _read_definemeas(self, edistring): + """ + Read in the DEFINEMEAS section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'DEFINEMEAS') + except: + raise + + d_dict = {} + + t1 = temp_string.strip().split('\n') + + for tmp_str in t1: + if '=' in tmp_str: + k = tmp_str.strip().split('=') + key = k[0].lower() + value = k[1].replace('"','').strip() + if len(value) != 0: + if 'lat' in key: + value = MTft._assert_position_format('lat',value) + if 'lon' in key: + value = MTft._assert_position_format('lon',value) + + + d_dict[key] = value + + if len(d_dict.keys()) == 0: + raise + + + self._definemeas = d_dict + + #--------------Read h and e measure--------------------------------------- + def _read_hmeas_emeas(self, edistring): + """ + Read in the HMEAS/EMEAS section from the raw edi-string. + """ + try: + temp_string = _cut_sectionstring(edistring,'HMEAS_EMEAS') + except: + raise + + t1 = temp_string.strip().split('\n') + lo_hmeas_emeas = [] + for j in t1: + j = j.replace('>','') + lo_j = j.split() + hemeas_line = ' '.join(lo_j) + #skip empty lines + if len(lo_j) == 0 : + continue + + lo_hmeas_emeas.append(hemeas_line) + + self._hmeas_emeas = lo_hmeas_emeas + + + #--------------Read mt sect-------------------------------------------- + def _read_mtsect(self, edistring): + """ + Read in the MTSECT section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'MTSECT') + except: + raise + m_dict = {} + + t1 = temp_string.strip().split('\n') + + for tmp_str in t1: + if '=' in tmp_str: + k = tmp_str.strip().split('=') + key = k[0].lower() + value = k[1].replace('"','').strip() + if len(value) != 0: + m_dict[key] = value + + if len(m_dict.keys()) == 0: + raise + + + self._mtsect = m_dict + + #--------------Read freq-------------------------------------------- + def _read_freq(self, edistring): + """ + Read in the FREQ section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'FREQ') + except: + raise + + lo_freqs = [] + + t1 = temp_string.strip().split('\n')[1:] + + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_freqs.append(float(k)) + except: + pass + + self._freq = np.array(lo_freqs) + + #be sure to set tipper freq + if self.Tipper.tipper is not None: + self.Tipper.freq = self._freq + + #be sure to set z_object's freq + self.Z.freq = self._freq + + #--------------Read impedance tensor-------------------------------------- + def _read_z(self, edistring): + """ + Read in impedances information from a raw EDI-string. + Store it as attribute (complex array). + + """ + + compstrings = ['ZXX','ZXY','ZYX','ZYY'] + Z_entries = ['R','I','.VAR'] + z_array = np.zeros((self.n_freq(), 2, 2), dtype=np.complex) + zerr_array = np.zeros((self.n_freq(), 2, 2), dtype=np.float) + z_dict = {} + + for idx_comp,comp in enumerate(compstrings): + for idx_zentry,zentry in enumerate(Z_entries): + sectionhead = comp + zentry + try: + temp_string = _cut_sectionstring(edistring,sectionhead) + except: + continue + + lo_z_vals = [] + + #check, if correct number of entries are given in the block + t0 = temp_string.strip().split('\n')[0] + n_dummy = int(float(t0.split('//')[1].strip())) + if not n_dummy == self.n_freq(): + raise MTex.MTpyError_edi_file("Error - number of entries"+\ + " does not equal number of"+\ + " freq") + + + t1 = temp_string.strip().split('\n')[1:] + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_z_vals.append(float(k)) + except: + pass + + z_dict[sectionhead] = lo_z_vals + + if len(z_dict) == 0 : + raise MTex.MTpyError_inputarguments("ERROR - Could not find "+\ + "any Z component") + + + for idx_freq in range( self.n_freq()): + try: + z_array[idx_freq,0,0] = np.complex(z_dict['ZXXR'][idx_freq], + z_dict['ZXXI'][idx_freq]) + except: + pass + try: + z_array[idx_freq,0,1] = np.complex(z_dict['ZXYR'][idx_freq], + z_dict['ZXYI'][idx_freq]) + except: + pass + try: + z_array[idx_freq,1,0] = np.complex(z_dict['ZYXR'][idx_freq], + z_dict['ZYXI'][idx_freq]) + except: + pass + try: + z_array[idx_freq,1,1] = np.complex(z_dict['ZYYR'][idx_freq], + z_dict['ZYYI'][idx_freq]) + except: + pass + + + for idx_comp,comp in enumerate(compstrings): + sectionhead = comp + '.VAR' + if sectionhead in z_dict: + zerr_array[idx_freq, idx_comp/2, idx_comp%2] = \ + z_dict[sectionhead][idx_freq] + + self.Z.z = z_array + + #errors are stddev, not VAR : + self.Z.zerr = np.sqrt(zerr_array) + + #--------------Read Tipper---------------------------------------------- + def _read_tipper(self, edistring): + """ + Read in Tipper information from a raw EDI-string. + Store it as attribute (complex array). + + """ + + compstrings = ['TX','TY'] + T_entries = ['R','I','VAR'] + + tipper_array = np.zeros((self.n_freq(),1,2),dtype=np.complex) + tippererr_array = np.zeros((self.n_freq(),1,2),dtype=np.float) + t_dict = {} + + + for idx_comp,comp in enumerate(compstrings): + for idx_tentry,tentry in enumerate(T_entries): + temp_string = None + try: + sectionhead = comp + tentry + '.EXP' + temp_string = _cut_sectionstring(edistring,sectionhead) + except: + try: + sectionhead = comp + tentry + temp_string = _cut_sectionstring(edistring,sectionhead) + except: + # if tipper is given with sectionhead "TX.VAR" + if (idx_tentry == 2) and (temp_string is None): + try: + sectionhead = comp + '.' + tentry + temp_string = _cut_sectionstring(edistring, + sectionhead) + except: + pass + pass + + lo_t_vals = [] + + #check, if correct number of entries are given in the block + t0 = temp_string.strip().split('\n')[0] + n_dummy = int(float(t0.split('//')[1].strip())) + + if not n_dummy == self.n_freq(): + raise MTex.MTpyError_edi_file("Error - number of entries"+\ + " does not equal number of"+\ + " freq") + + t1 = temp_string.strip().split('\n')[1:] + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_t_vals.append(float(k)) + except: + pass + + t_dict[comp + tentry] = lo_t_vals + + + for idx_freq in range( self.n_freq()): + tipper_array[idx_freq,0,0] = np.complex(t_dict['TXR'][idx_freq], + t_dict['TXI'][idx_freq]) + tippererr_array[idx_freq,0,0] = t_dict['TXVAR'][idx_freq] + tipper_array[idx_freq,0,1] = np.complex(t_dict['TYR'][idx_freq], + t_dict['TYI'][idx_freq]) + tippererr_array[idx_freq,0,1] = t_dict['TYVAR'][idx_freq] + + self.Tipper.tipper = tipper_array + #errors are stddev, not VAR : + self.Tipper.tippererr = np.sqrt(tippererr_array) + self.Tipper.freq = self.freq + + #--------------Read Resistivity and Phase--------------------------------- + def _read_res_phase(self, edistring): + """ + Read in ResPhase-(RhoPhi-)information from a raw EDI-string. + Convert the information into Z and Zerr. + Store this as attribute (complex array). + + """ + # using the loop over all components. For each component check, + # if Rho and Phi are given, raise exception if not! Then convert the + # polar RhoPhi representation into the cartesian Z. Rho is assumed to + # be in Ohm m, Phi in degrees. Z will be in km/s. + z_array = np.zeros((self.n_freq(),2,2), 'complex') + zerr_array = np.zeros((self.n_freq(),2,2)) + + rhophistrings = ['RHO','PHS'] + compstrings = ['XX','XY','YX','YY'] + entries = ['','.ERR'] + + rhophi_dict = {} + for rp in rhophistrings: + for comp in compstrings: + for entry in entries: + sectionhead = rp + comp + entry + try: + temp_string = _cut_sectionstring(edistring,sectionhead) + except: + continue + + lo_vals = [] + #check, if correct number of entries are given in the block + t0 = temp_string.strip().split('\n')[0] + n_dummy = int(float(t0.split('//')[1].strip())) + if not n_dummy == self.n_freq(): + raise + + t1 = temp_string.strip().split('\n')[1:] + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_vals.append(float(k)) + except: + pass + + rhophi_dict[sectionhead] = lo_vals + + if len (rhophi_dict) == 0: + raise + + for idx_freq in range( self.n_freq()): + r = np.zeros((2,2)) + tmp_rho = np.zeros((2,2)) + phi = np.zeros((2,2)) + rerr = np.zeros((2,2)) + phierr = np.zeros((2,2)) + zerr = np.zeros((2,2)) + + for idx_c, comp in enumerate(compstrings): + #convert rho to resistivity: + try: + r[idx_c/2,idx_c%2] = \ + np.sqrt(rhophi_dict['RHO'+comp][idx_freq] *\ + 5 * self.freq[idx_freq]) + tmp_rho[idx_c/2,idx_c%2] = rhophi_dict['RHO'+comp][idx_freq] + except: + pass + try: + phi[idx_c/2,idx_c%2] = rhophi_dict['PHS'+comp][idx_freq] + except: + pass + try: + try: + #check for small amplitude close to zero + if r[idx_c/2,idx_c%2] == 0: + raise + f1 = np.abs(np.sqrt(2.5*self.freq[idx_freq]/\ + r[idx_c/2,idx_c%2])*\ + (rhophi_dict['RHO'+comp+'.ERR'][idx_freq])) + except: + f1 = np.sqrt(rhophi_dict['RHO'+comp+'.ERR'][idx_freq]*\ + 5 * self.freq[idx_freq] ) + rerr[idx_c/2,idx_c%2] = f1 + except: + pass + try: + phierr[idx_c/2,idx_c%2] = \ + rhophi_dict['PHS'+comp +'.ERR'][idx_freq] + except: + pass + zerr[idx_c/2,idx_c%2] = max(MTcc.propagate_error_polar2rect( + r[idx_c/2,idx_c%2], + rerr[idx_c/2,idx_c%2], + phi[idx_c/2,idx_c%2], + phierr[idx_c/2,idx_c%2])) + + z_array[idx_freq] = MTcc.rhophi2z(tmp_rho, phi,self.freq[idx_freq]) + + zerr_array[idx_freq] = zerr + + + self.Z.z = z_array + self.Z.zerr = zerr_array + + + #--------------Read Rho rotations------------------------------------------ + def _read_rhorot(self, edistring): + """ + Read in the (optional) RhoRot section from the raw edi-string for + data file containing data in ResPhase style. Angles are stored in + the ZROT attribute. + """ + + try: + temp_string = _cut_sectionstring(edistring,'RHOROT') + except: + lo_angles = np.zeros((self.n_freq())) + self.zrot = lo_angles + self.Z.rotation_angle = self.zrot + if self.Tipper.tipper is not None: + self.Tipper.rotation_angle = self.zrot + + return + + + lo_angles = [] + + t1 = temp_string.strip().split('\n')[1:] + + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_angles.append(float(k)) + except: + pass + + + if len(lo_angles) != self.n_freq(): + raise + + self.zrot = np.array(lo_angles) + self.Z.rotation_angle = self.zrot + if self.Tipper.tipper is not None: + self.Tipper.rotation_angle = self.zrot + + #--------------Read Spectra---------------------------------------------- + def _read_spectra(self,edistring): + """ + Read in Spectra information from a raw EDI-string. + Convert the information into Z and Tipper. + + """ + #identify and cut spectrasect part: + specset_string = _cut_sectionstring(edistring,'SPECTRASECT') + s_dict = {} + t1 = specset_string.strip().split('\n') + tipper_array = None + + s_dict['sectid'] = '' + + sectid = _find_key_value('sectid', '=',specset_string ) + if sectid is not None : + s_dict['sectid'] = sectid + + for tmp_str in t1: + if '=' in tmp_str: + k = tmp_str.strip().split('=') + key = k[0].lower() + value = k[1].replace('"','').strip() + if len(value) != 0: + s_dict[key] = value + + dummy4 = specset_string.upper().find('NCHAN') + n_chan = int(float( + specset_string[dummy4:].strip().split('=')[1].split()[0])) + try: + id_list = specset_string.split('//')[1].strip().split()[1:n_chan+1] + except: + raise MTex.MTpyError_EDI("ERROR - check number of channels in >=spectrasect") + + dummy5 = specset_string.upper().find('NFREQ') + n_freq = int(float( + specset_string[dummy5:].strip().split('=')[1].split()[0])) + + lo_spectra_strings = [] + tmp_string = copy.copy(edistring) + + #read in all SPECTRA subsections into a list + while True: + try: + dummy3 = tmp_string.find('>SPECTRA') + #check, if SPECTRA subsection exists + + if dummy3 <0 : + raise + # cut the respective sub string + tmp_cut_string = _cut_sectionstring(tmp_string,'SPECTRA') + + #append to the list + lo_spectra_strings.append(tmp_cut_string) + + # reduce the input string by the keyword 'SPECTRA', + #so the subsequent subsection will be read in the next + #loop-run instead + tmp_string = tmp_string[:dummy3] + tmp_string[dummy3+8:] + + #exceptions for breaking the while, called, if no more SPECTRA + #subsections can be found + except: + break + + #assert that the list of read in SPECTRA subsection is not empty: + if len(lo_spectra_strings) == 0: + raise MTex.MTpyError_EDI('ERROR - EDI file does not contain'+\ + 'readable SPECTRA sections!') + + z_array = np.zeros((len(lo_spectra_strings),2,2), 'complex') + zerr_array = np.zeros((len(lo_spectra_strings),2,2)) + + id_comps = ['HX', 'HY', 'EX', 'EY','RX', 'RY'] + if n_chan%2 != 0 : + id_comps = ['HX', 'HY','HZ', 'EX', 'EY','RX', 'RY'] + + tipper_array = np.zeros((len(lo_spectra_strings),1,2), 'complex') + tippererr_array = np.zeros((len(lo_spectra_strings),1,2)) + + lo_freqs = [] + lo_rots = [] + + id_channel_dict = _build_id_channel_dict(self.hmeas_emeas) + + channellist = [id_channel_dict[i] for i in id_list] + + for j in ['HX', 'HY', 'EX', 'EY'] : + if j not in channellist: + raise MTex.MTpyError_edi_file('Mandatory data for channel'+\ + '{0} missing!'.format(j)) + + + for s_idx, spectra in enumerate(lo_spectra_strings): + firstline = spectra.split('\n')[0] + freq = float(_find_key_value('FREQ','=',firstline)) + # Read information on uncertainties on data, given by AVGT value: + avgt = None + try: + avgt = float(_find_key_value('AVGT','=',firstline)) + except: + avgt = None + #if AVGT cannot be read, no errors are calculated + + lo_freqs.append(freq) + rotangle = 0. + try: + rotangle = float(_find_key_value('ROTSPEC','=',firstline)) + except: + pass + lo_rots.append(rotangle) + + datalist = [] + for innerline in spectra.split('\n')[1:]: + datalist.extend(innerline.strip().split()) + data = np.array([float(i) + for i in datalist]).reshape(n_chan,n_chan) + + zdata = spectra2z(data, avgt, channellist) + z_array[s_idx] = zdata[0] + if zdata[2] is not None: + zerr_array[s_idx] = zdata[2] + + if n_chan%2 != 0 : + tipper_array[s_idx] = zdata[1] + if zdata[3] is not None: + tippererr_array[s_idx] = zdata[3] + + + self.Z = MTz.Z(z_array=z_array,zerr_array=zerr_array,freq=np.array(lo_freqs)) + self._set_freq(self.Z.freq) + self.Z.rotation_angle = np.array(lo_rots) + + self.zrot = self.Z.rotation_angle.copy() + + + if tipper_array is not None: + self.Tipper = MTz.Tipper(tipper_array=tipper_array, + tippererr_array= tippererr_array, + freq=self.freq) + self.Tipper.rotation_angle = self.zrot.copy() + + for i,j in enumerate(id_list): + s_dict[ id_comps[i] ] = j + + self.mtsect = s_dict + + + #--------------Read impedance rotation angles----------------------------- + def _read_zrot(self, edistring): + """ + Read in the (optional) Zrot section from the raw edi-string. + """ + + try: + temp_string = _cut_sectionstring(edistring,'ZROT') + except: + lo_angles = np.zeros((self.n_freq())) + self.zrot = lo_angles + self.Z.rotation_angle = self.zrot + return + + + lo_angles = [] + + t1 = temp_string.strip().split('\n')[1:] + + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_angles.append(float(k)) + except: + pass + + if len(lo_angles) != self.n_freq(): + raise + + self.zrot = np.array(lo_angles) + self.Z.rotation_angle = self.zrot.copy() + if self.Tipper.tipper is not None: + self.Tipper.rotation_angle = self.zrot.copy() + + + #--------------Write out file--------------------------------------------- + def set_Z(self, z_object): + """ + Set the Z object attribute. + """ + if not isinstance(z_object, MTz.Z): + raise MTex.MTpyError_Z('Input argument is not an instance of '+\ + 'the Z class') + + self.Z = z_object + self.freq = z_object.freq + + #--------------Write out file--------------------------------------------- + def set_Tipper(self, tipper_object): + """ + Set the Tipper object attribute. + """ + if not isinstance(tipper_object, MTz.Tipper): + raise MTex.MTpyError_Tipper('Input argument is not an instance of '+\ + 'the Tipper class') + + self.Tipper = tipper_object + + #self.freq = tipper_object.freq + + + #--------------Write out file--------------------------------------------- + def writefile(self, fn=None, allow_overwrite=False, use_info_string=False): + """ + Write out the edi object into an EDI file. + + Default: existing files are not overwritten, a unique filename is + generated for each new file + + Default: the INFO section is written using the self.info_dict. This + behaviour can be changed to allow a verbatim write of the + self.info_string (useful if existing EDIs are only slightly altered) + + + """ + + if fn is not None and len(fn) == 0: + fn = None + elif fn is not None: + #see, if it's iterable + if type(fn) is not str: + fn = fn[0] + + self.info_dict['edifile_generated_with'] = 'MTpy' + + try: + outstring, stationname = _generate_edifile_string(self.edi_dict(),use_info_string) + except: + print 'ERROR - could not generate valid EDI file \n-> check, if'\ + ' method "edi_dict" returns sufficient information\n '\ + '' + return + + if stationname is None: + stationname = 'dummy' + if len(stationname) == 0: + stationname = 'unknown' + + if not _validate_edifile_string(outstring): + #return outstring + raise MTex.MTpyError_edi_file('Cannot write EDI file...'+\ + 'output string is invalid') + + + if fn != None: + try: + outfilename = op.abspath(fn) + if not outfilename.lower().endswith('.edi'): + outfilename += '.edi' + except: + fn = None + print 'ERROR - could not generate output file with '+\ + 'given name - trying generic name instead!' + + if fn == None: + outfilename = op.abspath(stationname.upper()+'.edi') + + if allow_overwrite is not True: + outfilename = MTfh.make_unique_filename(outfilename) + + try: + with open(outfilename , 'w') as F: + F.write(outstring) + except: + raise MTex.MTpyError_edi_file('Cannot write EDI file:'+\ + '{0}'.format(outfilename)) + + return outfilename + + #--------------Rotate data---------------------------------------------- + def rotate(self,angle): + """ + Rotate the Z and tipper information in the Edi object. Change the + rotation angles in Zrot respectively. + + Rotation angle must be given in degrees. All angles are referenced + to geographic North, positive in clockwise direction. + (Mathematically negative!) + + In non-rotated state, X refs to North and Y to East direction. + + Updates the attributes "z, zrot, tipper". + + """ + if type(angle) in [float,int]: + angle = np.array([float(angle)%360 for i in range(len(self.zrot))]) + else: + try: + if type(angle) is str: + try: + angle = float(angle) + angle = np.array([float(angle)%360 for i in range(len(self.zrot))]) + except: + raise + elif len(angle) != len(self.zrot): + raise + angle = np.array([float(i)%360 for i in angle]) + except: + raise MTex.MTpyError_inputarguments('ERROR - "angle" must'+\ + ' be a single numerical'+\ + ' value or a list of '+\ + 'values. In the latter'+\ + ' case, its length must'+\ + 'be {0}'.format( + len(self.zrot))) + + self.Z.rotate(angle) + self.zrot = self.Z.rotation_angle + # self.zrot = [(ang0+angle[i])%360 for i,ang0 in enumerate(self.zrot)] + # self.Z.rotation_angle = self.zrot + + if self.Tipper.tipper is not None: + self.Tipper.rotate(angle) + self.Tipper.rotation_angle = self.zrot + + + #--------------get/set header ------------------------------- + def _set_head(self, head_dict): + """ + Set the attribute 'head'. + + Input: + HEAD section dictionary + + No test for consistency! + + """ + + self._head = head_dict + + + def _get_head(self): + + + return self._head + + head = property(_get_head, _set_head, doc='HEAD attribute of EDI file') + + #--------------get/set station ------------------------------- + def _set_station(self, stationname): + """ + Set the attribute 'station'. + + Updates the 'dataid' key in 'HEAD'... + + Input: + HEAD section dictionary + + No test for consistency! + + """ + + self._station = stationname + if not 'dataid' in self._head : + self._head['dataid'] = stationname + + + def _get_station(self): + + return self._station + + station = property(_get_station, _set_station, doc='station attribute of EDI file') + + + #--------------get/set info dict ------------------------------- + def _set_info_dict(self,info_dict): + """ + Set the attribute 'info_dict'. + + Input: + INFO section dictionary + + No test for consistency! + + """ + + self._info_dict = info_dict + + def _get_info_dict(self): + return self._info_dict + + info_dict = property(_get_info_dict, _set_info_dict, + doc='INFO section dictionary') + + #--------------get/set info header ------------------------------- + def _set_info_string(self,info_string): + """ + Set the attribute 'info_string'. + + Input: + INFO section string + + No test for consistency! + + """ + + self._info_string = info_string + + def _get_info_string(self): + return self._info_string + + info_string = property(_get_info_string, _set_info_string, + doc='INFO section string') + + #--------------get/set definemeas ------------------------------- + def _set_definemeas(self,definemeas_dict): + """ + Set the attribute 'definemeas'. + + Input: + DEFINEMEAS section dictionary + + No test for consistency! + + """ + self._definemeas = definemeas_dict + def _get_definemeas(self): + return self._definemeas + + definemeas = property(_get_definemeas, _set_definemeas, + doc='DEFINEMEAS section dictionary') + + #--------------get/set h and e measurements ------------------------------ + def _set_hmeas_emeas(self,hmeas_emeas_list): + """ + Set the attribute 'hmeas_emeas'. + + Input: + hmeas_emeas section list of 7-tuples + + No test for consistency! + + """ + self._hmeas_emeas = hmeas_emeas_list + + def _get_hmeas_emeas(self): + return self._hmeas_emeas + + hmeas_emeas = property(_get_hmeas_emeas, _set_hmeas_emeas, + doc='hmeas_emeas section list of 7-tuples') + + #--------------get/set mtsect ------------------------------- + def _set_mtsect(self, mtsect_dict): + """ + Set the attribute 'mtsect'. + + Input: + MTSECT section dictionary + + No test for consistency! + + """ + + self._mtsect = mtsect_dict + + def _get_mtsect(self): + return self._mtsect + + mtsect = property(_get_mtsect, _set_mtsect, + doc='MTSECT section dictionary') + + + #--------------get/set single component ------------------------------- + def _get_datacomponent(self, componentname): + """ + Return a specific data component. + + Input: + specification of the data component (Z or Tipper components) + """ + + data_dict = self.data_dict() + if componentname.lower() in data_dict: + return data_dict[componentname.lower()] + + compstrings = ['ZXX','ZXY','ZYX','ZYY'] + Z_entries = ['R','I','.VAR'] + for idx_comp,comp in enumerate(compstrings): + for idx_zentry,zentry in enumerate(Z_entries): + section = comp + zentry + if section.lower() == componentname.lower(): + return self.z_dict()[section] + + compstrings = ['TX','TY'] + T_entries = ['R','I','VAR'] + + for idx_comp,comp in enumerate(compstrings): + for idx_tentry,tentry in enumerate(T_entries): + section = comp + tentry + if section.lower() == componentname.lower(): + return self.tipper_dict()[section] + + print 'unknown data component: %s'%componentname.lower() + return + + + def _set_datacomponent(self, componentname, value): + """ + Set a specific data component. + + Input: + specification of the data component (Z or Tipper components) + new value + + No test for consistency! + """ + pass + + #--------------get/set freq ------------------------------- + def _set_freq(self, lo_freq): + """ + Set the array of freq. + + Input: + list/array of freq + + No test for consistency! + """ + # try: + # if len(lo_freq) is not len(self.Z.z): + # print 'length of freq list not correct'+\ + # '({0} instead of {1})'.format(len(lo_freq), + # len(self.Z.z)) + # return + # except: + # print 'array self.Z.z is not defined' + # return + + self._freq = np.array(lo_freq) + if self.Z.z is not None: + try: + self.Z._set_freq(self.freq) + except: + print 'length of freq list not consistent with Z.z array '+\ + '({0} instead of {1})'.format(len(lo_freq), + len(self.Z.z)) + if self.Tipper.tipper is not None: + try: + self.Tipper._set_freq(self.freq) + except: + print 'length of freq list not consistent with Tipper.tipper array '+\ + '({0} instead of {1})'.format(len(lo_freq), + len(self.Tipper.tipper)) + + def _get_freq(self): + if self._freq is not None: + self._freq = np.array(self._freq) + return self._freq + + freq = property(_get_freq, _set_freq, + doc='array of freq') + + #--------------get/set impedance rotation ------------------------------- + def _set_zrot(self, angle): + """ + Set the list of rotation angles. + + Input: + single angle or list of angles (in degrees) + + No test for consistency! + """ + + + if type(angle) is str: + raise MTex.MTpyError_edi_file('list of angles contains string'+\ + 'literal(s)') + + if np.iterable(angle): + if len(angle) is not len(self.Z.z): + print 'length of angle list not correct'+\ + '({0} instead of {1})'.format(len(angle), len(self.z)) + return + try: + angle = [float(i%360) for i in angle] + except: + raise MTex.MTpyError_edi_file('list of angles contains'+\ + 'non-numercal values') + else: + try: + angle = [float(angle%360) for i in self.Z.z] + except: + raise MTex.MTpyError_edi_file('Angles is a non-numercal value') + + + self._zrot = np.array(angle) + self.Z.rotation_angle = angle + if self.Tipper.tipper is not None: + self.Tipper.rotation_angle = angle + + def _get_zrot(self): + if self._zrot is not None: + self._zrot = np.array(self._zrot) + return self._zrot + + zrot = property(_get_zrot, _set_zrot, doc='') + + +#end of Edi Class +#========================= + + +def read_edifile(fn): + """ + Read in an EDI file. + + Return an instance of the Edi class. + """ + + edi_object = Edi() + + edi_object.readfile(fn) + + + return edi_object + + +def write_edifile(edi_object, out_fn = None): + """ + Write an EDI file from an instance of the Edi class. + + optional input: + EDI file name + """ + + if not isinstance(edi_object, Edi): + raise MTex.MTpyError_EDI('Input argument is not an instance of '+\ + 'the Edi class') + + if out_fn is not None: + dirname = op.dirname(op.abspath(op.join('.',out_fn))) + fn = op.basename(op.abspath(op.join('.',out_fn))) + if not op.isdir(dirname): + try: + os.makedirs(dirname) + out_fn = op.join(dirname,fn) + except: + out_fn = None + else: + out_fn = op.join(dirname,fn) + + outfilename = None + try: + outfilename = edi_object.writefile(out_fn) + except: + print 'Cannot write EDI file...output string invalid!' + + return outfilename + + +def combine_edifiles(fn1, fn2, merge_freq=None, out_fn = None, + allow_gaps = True): + """ + Combine two EDI files. + + Inputs: + - name of EDI file 1 + - name of EDI file 2 + + optional input: + - merge_freq : freq in Hz, on which to merge the files - + default is the middle of the overlap + - out_fn : output EDI file name + - allow_gaps : allow merging EDI files whose freq ranges does + not overlap + + Outputs: + - instance of Edi class, containing merged information + - full path of the output EDI file + """ + + #edi objects: + eo1 = Edi() + eo1.readfile(fn1) + eo2 = Edi() + eo2.readfile(fn2) + #edi object merged + eom = Edi() + + #check freq lists + lo_freqs1 = eo1.freq + lo_freqs2 = eo2.freq + + + lo_eos = [] + + #check for overlap of the freq regimes: + if (not min(lo_freqs1)>max(lo_freqs2)) and \ + (not max(lo_freqs1)>min(lo_freqs2)): + if allow_gaps is False: + raise MTex.MTpyError_edi_file('Cannot merge files'+\ + '{0} and {1}'.format(fn1,fn2)+\ + '- freq ranges do not '+\ + 'overlap and "allow_gaps" is'+\ + 'set to False') + + + #determine, which is the low freq part, sort descending + lo_eos = [eo2, eo1] + + if min(lo_freqs1) <= min(lo_freqs2): + if max(lo_freqs1) >= max(lo_freqs2): + print 'freq range of file {0} fully contained'.format(fn2)+\ + 'in range of file {1} => no merging of files!'.format(fn1) + return + + if min(lo_freqs1) >= min(lo_freqs2): + if max(lo_freqs1) <= max(lo_freqs2): + print 'freq range of file {0} fully contained'.format(fn1)+\ + 'in range of file {1} => no merging of files!'.format(fn2) + return + else: + lo_eos = [eo1, eo2] + + #find sorting indices for obtaining strictly decreasing frequencies: + dec_freq_idxs_lower = np.array(lo_eos[1].freq).argsort()[::-1] + dec_freq_idxs_upper = np.array(lo_eos[0].freq).argsort()[::-1] + + #determine overlap in frequencies + upper_bound = max(lo_eos[1].freq) + lower_bound = min(lo_eos[0].freq) + + + overlap_mid_freq = np.exp(0.5*(np.log(upper_bound) + np.log(lower_bound))) + + if merge_freq is not None: + try: + merge_freq = float(merge_freq) + except: + print 'could not read "merge freq" argument '+\ + '(float expected)...taking mean of freq overlap'+\ + 'instead: {0:.6g} Hz'.format(overlap_mid_freq) + merge_freq = overlap_mid_freq + else: + merge_freq = overlap_mid_freq + + #print merge_freq + + + #find indices for all freq from the freq lists, which are + #below(lower part) or above (upper part) of the merge freq - + #use sorted freq lists !: + + upper_idxs = np.where(np.array(lo_eos[0].freq)[dec_freq_idxs_upper]>\ + merge_freq)[0] + lower_idxs = np.where(np.array(lo_eos[1].freq)[dec_freq_idxs_lower]<=\ + merge_freq)[0] + + #total of freq in new edi object + new_freqs = lo_eos[0].freq[upper_idxs] + new_freqs= np.append(new_freqs,lo_eos[1].freq[lower_idxs]) + + n_total_freqs = len(new_freqs)# len(lower_idxs) + len(upper_idxs) + + + #------------ + # fill data fields + + new_z = np.zeros((n_total_freqs,2,2),dtype=np.complex) + new_zerr = np.zeros((n_total_freqs,2,2),dtype=np.float) + + #check, if tipper exists for both files: + if (eo1.Tipper.tipper is not None ) and (eo2.Tipper.tipper is not None ): + new_tipper = np.zeros((n_total_freqs,1,2),dtype=np.complex) + new_tippererr = np.zeros((n_total_freqs,1,2),dtype=np.float) + + + counter = 0 + zrot = [] + for idx_u in upper_idxs: + try: + new_z[counter] = lo_eos[0].Z.z[idx_u] + new_zerr[counter] = lo_eos[0].Z.zerr[idx_u] + except: + pass + try: + new_tipper[counter] = lo_eos[0].Tipper.tipper[idx_u] + new_tippererr[counter] = lo_eos[0].Tipper.tippererr[idx_u] + except: + pass + try: + zrot.append(lo_eos[0].zrot[idx_u]) + except: + zrot.append(0.) + + counter +=1 + + for idx_l in lower_idxs: + try: + new_z[counter] = lo_eos[1].Z.z[idx_l] + new_zerr[counter] = lo_eos[1].Z.zerr[idx_l] + except: + pass + try: + new_tipper[counter] = lo_eos[1].Tipper.tipper[idx_l] + new_tippererr[counter] = lo_eos[1].Tipper.tippererr[idx_l] + except: + pass + try: + zrot.append(lo_eos[1].zrot[idx_l]) + except: + zrot.append(0.) + counter +=1 + + + # eom.Z.z = np.zeros((n_total_freqs,2,2),dtype=np.complex) + # eom.Z.zerr = np.zeros((n_total_freqs,2,2),dtype=np.float) + + Znew = MTz.Z(z_array=new_z, zerr_array=new_zerr, freq=new_freqs) + eom.set_Z(Znew) + + + if (eo1.Tipper.tipper is not None ) and (eo2.Tipper.tipper is not None ): + TipperNew = MTz.Tipper(tipper_array=new_tipper, tippererr_array=new_tippererr, + freq=new_freqs) + + eom.set_Tipper(TipperNew) + + eom.zrot = zrot + + + #------------ + # fill header information + + #I) HEAD + head1 = dict((k.lower(),v) for k,v in eo1.head.items()) + head2 = dict((k.lower(),v) for k,v in eo2.head.items()) + + + so_headsections = set(head1.keys() + head2.keys()) + + head_dict = {} + for element in so_headsections: + if (element in head1) and (element not in head2): + head_dict[element] = str(head1[element]) + continue + if (element in head2) and (element not in head1): + head_dict[element] = str(head2[element]) + continue + if head1[element] == head2[element]: + head_dict[element] = str(head2[element]) + continue + + if element in ['lat','long','lon','latitude','longitude', 'elevation', + 'elev','ele']: + try: + head_dict[element] = 0.5 * (float(head1[element]) + \ + float(head2[element])) + except: + raise MTex.MTpyError_edi_file('Cannot merge files: wrong'+\ + 'format of "{0}" coordinate'.format(element)) + continue + + if element == 'dataid': + head_dict[element] = head1[element]+'+'+head2[element] + continue + + if 'date' in element: + dateformat1 = '%Y/%m/%d %H:%M:%S UTC' + dateformat2 = '%d.%m.%y %H:%M:%S UTC' + dateformat3 = '%d.%m.%Y %H:%M:%S UTC' + date1 = None + + try: + date1 = calendar.timegm(time.strptime(head1[element], + dateformat1)) + date2 = calendar.timegm(time.strptime(head2[element], + dateformat1)) + except: + pass + try: + date1 = calendar.timegm(time.strptime(head1[element], + dateformat2)) + date2 = calendar.timegm(time.strptime(head2[element], + dateformat2)) + except: + pass + try: + date1 = calendar.timegm(time.strptime(head1[element], + dateformat3)) + date2 = calendar.timegm(time.strptime(head2[element], + dateformat3)) + except: + pass + if date1 is None: + raise MTex.MTpyError_edi_file('Cannot merge file, because '+\ + 'data format is not '+\ + 'understood: '+\ + '{0}={1}|{2}'.format(element, + head1[element], + head2[element])) + + + if element in ['acqdate']: + date = min(date1, date2 ) + + elif element in ['enddate']: + date = max(date1, date2 ) + + elif element in ['filedate']: + todaystring = datetime.datetime.utcnow().strftime(dateformat1) + head_dict[element] = todaystring + continue + + datetuple = time.gmtime(date) + head_dict[element] = '{0:02}/{1:02}/{2:02} '.format(datetuple[0], + datetuple[1], + datetuple[2]) + #print head_dict[element] + + eom.head = head_dict + + + #II) INFO + info1 = dict((k.lower(),v) for k,v in eo1.info_dict.items()) + info2 = dict((k.lower(),v) for k,v in eo2.info_dict.items()) + + so_infosections = set(info1.keys() + info2.keys()) + + info_dict = {} + info_dict['merge_freq'] = merge_freq + + for element in so_infosections: + + if (element in info1) and (element not in info2): + info_dict[element] = str(info1[element]) + continue + if (element in info2) and (element not in info1): + info_dict[element] = str(info2[element]) + continue + if info1[element] == info2[element]: + info_dict[element] = str(info2[element]) + continue + + if element in ['lat','long','lon','latitude','longitude', + 'elevation','elev','ele']: + try: + info_dict[element] = 0.5 * (float(info1[element]) + \ + float(info2[element])) + except: + raise MTex.MTpyError_edi_file('Cannot merge files: wrong'+\ + 'format of "{0}" coordinate'.format(element)) + continue + + if element == 'dataid': + info_dict[element] = info1[element]+'_merged_with_'+info2[element] + continue + + if 'date' in element: + dateformat1 = '%d/%m/%y' + dateformat2 = '%d.%m.%y' + dateformat3 = '%d.%m.%Y' + date1 = None + try: + date1 = calendar.timegm(time.strptime(info1[element], + dateformat1)) + date2 = calendar.timegm(time.strptime(info2[element], + dateformat1)) + except: + pass + try: + date1 = calendar.timegm(time.strptime(info1[element], + dateformat2)) + date2 = calendar.timegm(time.strptime(info2[element], + dateformat2)) + except: + pass + try: + date1 = calendar.timegm(time.strptime(info1[element], + dateformat3)) + date2 = calendar.timegm(time.strptime(info2[element], + dateformat3)) + except: + pass + if date1 is None: + raise MTex.MTpyError_edi_file('Cannot merge file, because'+\ + 'data format is not '+\ + 'understood: '+\ + '{0}={1}|{2}'.format(element, + info1[element], + info2[element])) + + + if element in ['acqdate']: + date = min(date1, date2 ) + + elif element in ['enddate']: + date = max(date1, date2 ) + + elif element in ['filedate']: + date = calendar.timegm(time.gmtime()) + + #arbitrarily choisen to take information from low freq file: + else: + date = date1 + + datetuple = time.gmtime(date) + print datetuple + info_dict[element] = '{0:02}/{1:02}/{2:2}'.format(datetuple[2], + datetuple[1], + datetuple[0]) + continue + + if element == 'station': + info_dict['station'] = info1[element] + '+' + info2[element] + + + eom.info_dict = info_dict + + eom.info_string = '\n\t=== File 1: ===\n'+eo1.info_string+\ + '\n\n\t=== File 2: ===\n'+eo2.info_string + + + #III) DEFINEMEAS + dmeas1 = dict((k.lower(),v) for k,v in eo1.definemeas.items()) + dmeas2 = dict((k.lower(),v) for k,v in eo2.definemeas.items()) + + so_dmeassections = set(dmeas1.keys() + dmeas2.keys()) + + dmeas_dict = {} + + for element in so_dmeassections: + + if element == 'refloc': + dmeas_dict[element] = '' + continue + + if (element in dmeas1) and (element not in dmeas2): + dmeas_dict[element] = str(dmeas1[element]) + continue + if (element in dmeas2) and (element not in dmeas1): + dmeas_dict[element] = str(dmeas2[element]) + continue + if dmeas1[element] == dmeas2[element]: + dmeas_dict[element] = str(dmeas2[element]) + continue + + if 'lat' in element or 'lon' in element or 'elev' in element: + try: + dmeas_dict[element] = 0.5 * (float(dmeas1[element]) +\ + float(dmeas2[element])) + except: + raise MTex.MTpyError_edi_file('Cannot merge files: wrong '+\ + 'format of "{0}" coordinate'.format(element)) + continue + + + + eom.definemeas = dmeas_dict + + #take hmeas/dmeas section directly from file 1: + + eom.hmeas_emeas = eo1.hmeas_emeas + + + + #IV) MTSECT + + msec1 = dict((k.lower(),v) for k,v in eo1.mtsect.items()) + msec2 = dict((k.lower(),v) for k,v in eo2.mtsect.items()) + + so_msecsections = set(msec1.keys() + msec2.keys()) + + msec_dict = {} + + for element in so_msecsections: + #completely unimportant, kept just for the sake of the format: + if element in ['ex','ey','hx','hy','hz','bx','by','bz']: + msec_dict[element] = msec1[element] + if element == 'nfreq': + msec_dict[element] = eom.n_freq() + if element == 'sectid': + if msec1[element] != msec2[element]: + msec_dict[element] = msec1[element]+'+'+msec2[element] + else: + msec_dict[element] = msec1[element]+'(A)'+'+'+msec2[element]+'(B)' + + + eom.mtsect = msec_dict + + + if out_fn is not None: + dirname = op.dirname(op.abspath(op.join('.',out_fn))) + fn = op.basename(op.abspath(op.join('.',out_fn))) + if not op.isdir(dirname): + try: + os.makedirs(dirname) + out_fn = op.join(dirname,fn) + except: + out_fn = None + else: + out_fn = op.join(dirname,fn) + out_fn = op.splitext(out_fn)[0]+'_merged'+op.splitext(out_fn)[1] + + else: + stationname = eom.info_dict.get('station',None) + if stationname is None: + stationname = eom.head.get('dataid',None) + if stationname is None: + stationname = 'unknown' + out_fn = op.join(op.abspath(os.curdir),stationname.upper()+'_merged.edi') + + + out_fn = eom.writefile(out_fn) + if out_fn is not None: + print '\tWritten merged EDI file {0}\n'.format(out_fn) + + + return eom, out_fn + + +def validate_edifile(fn): + """ + Validate an EDI file following MTpy standard. + + Return boolean result. + """ + + edi_object = Edi() + + try: + edi_object.readfile(fn) + return True + except: + return False + + +def rotate_edifile(fn, angle, out_fn = None): + """ + Rotate data contents (Z and Tipper) of an EDI file and write it to a + new EDI file. + (Use a script with consecutive renaming of the file for in place + rotation. MTpy does not overwrite.) + + Input: + - angle/list of angles for the rotation + + optional input: + - name of output EDI file + + Output: + - full path to the new (rotated) EDI file + """ + + ediobject = Edi() + + ediobject.readfile(fn) + + ediobject.rotate(angle) + + if out_fn is not None: + dirname = op.dirname(op.abspath(op.join('.',out_fn))) + fn = op.basename(op.abspath(op.join('.',out_fn))) + if not op.isdir(dirname): + try: + os.makedirs(dirname) + out_fn = op.join(dirname,fn) + except: + out_fn = None + else: + out_fn = op.join(dirname,fn) + + + ediobject.writefile(out_fn) + + + return out_fn + + + +def _generate_edifile_string(edidict,use_info_string=False): + """ + Generate a string to write out to an EDI file. + + Reading in information from an edi file dictionary. Using the standard + sections: + HEAD, INFO, DEFINEMEAS, HMEAS_EMEAS, MTSECT, ZROT, FREQ, Z, TIPPER + + Can be extended later on... + + """ + # define section heads explicitely instead of iteration over the dictionary + # for getting the correct order! + lo_sectionheads = ['HEAD', 'INFO', 'DEFINEMEAS', 'HMEAS_EMEAS', 'MTSECT', + 'ZROT', 'FREQ', 'Z', 'TIPPER'] + + edistring = '' + stationname = None + ZROTflag = 0 + + if len(edidict.keys()) == 0: + raise MTex.MTpyError_edi_file('Cannot generate string from empty'+\ + 'EDI dictionary. Fill dict or read in file first') + + + for sectionhead in lo_sectionheads: + + if sectionhead == 'HEAD': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "HEAD" missing!') + edistring += '>HEAD\n' + head_dict = edidict['HEAD'] + checkdate = 0 + + for k in sorted(head_dict.iterkeys()): + v = str(head_dict[k]) + #remove old time stamp of former EDI file: + if k.lower() == 'filedate': + continue + + if k.lower()=='dataid': + + stationname = v + + if k.lower() in ['lat','long']: + v = MTft.convert_degrees2dms_tuple(v) + edistring += '\t{0}={1}:{2}:{3:.2f}\n'.format(k.upper(), + int(v[0]),int(v[1]),v[2]) + continue + + if len(v) == 0: + edistring += '\t%s=""\n'%(k.upper()) + elif len(v.split()) > 1: + edistring += '\t%s="%s"\n'%(k.upper(),v) + else: + try: + v = v.upper() + except: + pass + edistring += '\t%s=%s\n'%(k.upper(),v) + + #update time stamp of the file: + todaystring = datetime.datetime.utcnow().strftime( + '%Y/%m/%d %H:%M:%S UTC') + + todaystring = '\tfiledate="%s"\n'%(todaystring) + edistring += todaystring.upper() + + + if sectionhead == 'INFO': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "INFO" missing!') + info_dict = edidict['INFO'] + info_dict = dict((k.lower(),v) for k,v in info_dict.items()) + + # if 'max lines' in info_dict: + # edistring += '>INFO MAX LINES={0}\n'.format( + # int(float(info_dict.pop('max lines')))) + # else: + edistring += '>INFO \n' + + #If an existing info string is to be written verbatim + #to not lose any original information (even if uunnecessary/wrong): + if use_info_string is True: + try: + edistring += edidict['info_string'] + except: + pass + edistring += '\n' + #otherwise use the standard way of writing dict contents: + else: + for k in sorted(info_dict.iterkeys()): + # if k.startswith('__'): + # continue + v = str(info_dict[k]) + #get station name (to be returned aside with the edistring, + # allowing for proper naming of output file) + if k == 'station': + v = v.upper().replace(' ','_') + stationname = v + if k.lower() == 'max lines': + continue + + if len(v) == 0 or len(v.split()) > 1: + edistring += '\t%s: "%s"\n'%(k,v) + else: + edistring += '\t%s: %s\n'%(k,v) + + + + if sectionhead == 'DEFINEMEAS': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "DEFINEMEAS" missing!') + defm_dict = edidict['DEFINEMEAS'] + defm_dict = dict((k.upper(),v) for k,v in defm_dict.items()) + + edistring += '>=DEFINEMEAS \n' + + for k in sorted(defm_dict.iterkeys()): + v = str(defm_dict[k]) + if k == 'REFLAT': + v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['lat']) + edistring += '\tREFLAT={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) + continue + if k == 'REFLONG': + v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['long']) + edistring += '\tREFLONG={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) + continue + if k == 'REFELEV': + edistring += '\tREFELEV={0:.1f}\n'.format(float(edidict['HEAD']['elev'])) + continue + + if len(v) == 0 or len(v.split()) > 1: + edistring += '\t%s=""\n'%(k) + else: + edistring += '\t%s=%s\n'%(k,v) + + if 'REFLAT' not in sorted(defm_dict.iterkeys()): + v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['lat']) + edistring += '\tREFLAT={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) + if 'REFLONG' not in sorted(defm_dict.iterkeys()): + v = MTft.convert_degrees2dms_tuple(edidict['HEAD']['long']) + edistring += '\tREFLONG={0}:{1}:{2:.2f}\n'.format(int(v[0]),int(v[1]),v[2]) + if 'REFELEV' not in sorted(defm_dict.iterkeys()): + edistring += '\tREFELEV={0:.1f}\n'.format(edidict['HEAD']['elev']) + + + if sectionhead == 'HMEAS_EMEAS': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'subsection "HMEAS_EMEAS" missing!') + lo_hemeas = edidict['HMEAS_EMEAS'] + + for hemeas in lo_hemeas: + edistring += ('>'+' '.join(hemeas.split())+'\n').upper() + + + if sectionhead == 'MTSECT': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "MTSECT" missing!') + mtsct_dict = edidict['MTSECT'] + mtsct_dict = dict((k.upper(),v) for k,v in mtsct_dict.items()) + + edistring += '>=MTSECT \n' + + for k in sorted(mtsct_dict.iterkeys()): + v = str(mtsct_dict[k]) + if len(v) == 0 or len(v.split()) > 1: + edistring += '\t%s=""\n'%(k) + else: + edistring += '\t%s=%s\n'%(k,v) + + + if sectionhead == 'FREQ': + if not sectionhead in edidict: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "FREQ" missing!') + lo_freqs = edidict['FREQ'] + + #edistring += '>!****FREQUENCIES****!\n' + edistring+= '>FREQ // {0}\n'.format(len(lo_freqs)) + + for i,freq in enumerate(lo_freqs): + edistring += '\t%E'%(freq) + if (i+1)%5 == 0 and (i != len(lo_freqs) - 1) and i > 0: + edistring += '\n' + + if sectionhead == 'ZROT': + + try: + lo_rots = edidict['ZROT'] + except: + continue + + #edistring += '>!****IMPEDANCE ROTATION ANGLES****!\n' + edistring+= '>ZROT // {0}\n'.format(len(lo_rots)) + + for i,angle in enumerate(lo_rots): + edistring += '\t%E'%(angle) + if (i+1)%5 == 0 and (i != len(lo_rots) - 1) and i > 0: + edistring += '\n' + + ZROTflag = 1 + + if sectionhead == 'Z': + + compstrings = ['ZXX','ZXY','ZYX','ZYY'] + Z_entries = ['R','I','.VAR'] + + try: + z_dict = edidict['Z'] + except: + raise MTex.MTpyError_edi_file('Cannot write file - required'+\ + 'section "Z" missing!') + + #edistring += '>!****IMPEDANCES****!\n' + for idx_comp,comp in enumerate(compstrings): + for idx_zentry,zentry in enumerate(Z_entries): + section = comp + zentry + if not section in z_dict: + raise MTex.MTpyError_edi_file('Cannot write file - '+\ + 'required subsection "{0}" missing!'.format(section)) + lo_vals = z_dict[section] + #convert stddev into VAR: + if zentry.lower()=='.var': + lo_vals = [i**2 for i in lo_vals] + + if ZROTflag == 1: + edistring += '>{0} ROT=ZROT // {1}\n'.format(section, + len(lo_freqs)) + else: + edistring += '>{0} // {1}\n'.format(section, + len(lo_freqs)) + + for i,val in enumerate(lo_vals): + edistring += '\t%E'%(float(val)) + if (i+1)%5 == 0 and (i != len(lo_vals) - 1) and i > 0: + edistring += '\n' + edistring += '\n' + + + if sectionhead == 'TIPPER' and (edidict.has_key('TIPPER')): + + compstrings = ['TX','TY'] + T_entries = ['R','I','VAR'] + Tout_entries = ['R.EXP','I.EXP','VAR.EXP'] + + try: + t_dict = edidict['TIPPER'] + if t_dict == None: + continue + except: + continue + + #edistring += '>!****TIPPER PARAMETERS****!\n' + for idx_comp,comp in enumerate(compstrings): + for idx_tentry,tentry in enumerate(T_entries): + section = comp + tentry + outsection = comp + Tout_entries[idx_tentry] + if not section in t_dict: + raise MTex.MTpyError_edi_file('Cannot write file -'+\ + 'required subsection "{0}" missing!'.format(section)) + lo_vals = t_dict[section] + #convert stddev into VAR: + if tentry.lower()=='var': + lo_vals = [i**2 for i in lo_vals] + + if ZROTflag == 1: + edistring += '>{0} ROT=ZROT // {1}\n'.format(outsection, + len(lo_freqs)) + else: + edistring += '>{0} // {1}\n'.format(outsection, + len(lo_freqs)) + + for i,val in enumerate(lo_vals): + edistring += '\t%E'%(float(val)) + if (i+1)%5 == 0 and (i != len(lo_vals) - 1) and i > 0: + edistring += '\n' + + edistring += '\n' + + + + edistring += '\n' + + + edistring += '>END\n' + + + return edistring.expandtabs(4), stationname + + + +def _cut_sectionstring(edistring,sectionhead): + """ + Cut an edi-string for the specified section. + + Input: + - name of the section + + Output: + - string : part of the raw edi-string containing starting at the head + of the section and ends at beginnig of the next section. + """ + + #in this case, several blocks have to be handled together, therefore, a + #simple cut to the next block start does not work: + if sectionhead.upper() == 'HMEAS_EMEAS': + + lo_start_idxs = [m.start() for m in re.finditer('>[HE]MEAS',edistring)] + if len(lo_start_idxs) == 0 : + raise + + start_idx = lo_start_idxs[0] + + end_idx = edistring[(lo_start_idxs[-1]+1):].upper().find('>') +\ + lo_start_idxs[-1] + + hmeas_emeas_string = edistring[start_idx:end_idx] + + if len(hmeas_emeas_string) == 0: + raise + + return hmeas_emeas_string + + + + start_idx = edistring.upper().find('>'+sectionhead.upper()) + if start_idx == -1: + start_idx = edistring.upper().find('>='+sectionhead.upper()) + if start_idx == -1: + raise + #correct for the = character + start_idx += 1 + #start cut behind the section keyword + start_idx += (1+len(sectionhead)) + + next_block_start = edistring.upper().find('>', start_idx + 1) + + + cutstring = edistring[start_idx:next_block_start] + + if len(cutstring) == 0 : + raise + + + return cutstring + + +def _validate_edifile_string(edistring): + """ + Read the file as string and check, if blocks 'HEAD, =DEFINEMEAS, + =MTSECT, FREQ, (Z,) END' are present. If 'Z' is missing, check for + 'spectra' or 'rho'/'phs'! + + Within the blocks look for mandatory entries: + HEAD: 'DATAID' + DEFINEMEAS: subblocks 'HMEAS, EMEAS' + ('REFLAT, REFLONG, REFELEV' have to be present for + measured data though) + MTSECT: 'NFREQ' + FREQ: non empty list + + Z: at least one component xx, yy, xy, yx ; real, imag and var ; + containing a non-empty list + Otherwise check for presence of 'RHO'/'PHS' OR 'spectra' + + + """ + isvalid = False + found = 1 + + #adding 1 to position of find to correct for possible occurrence at + #position 0 ) + found *= np.sign(edistring.upper().find('>HEAD') + 1 ) + if found == 0: + print 'Could not find >HEAD block' + found *= np.sign(edistring.upper().find('DATAID') + 1 ) + if found == 0: + print 'Could not find DATAID block' + found *= np.sign(edistring.upper().find('>HMEAS') + 1 ) + if found == 0: + print 'Could not find >HMEAS block' + found *= np.sign(edistring.upper().find('>EMEAS') + 1 ) + if found == 0: + print 'Could not find >EMEAS block' + found *= np.sign(edistring.upper().find('NFREQ') + 1 ) + if found == 0: + print 'Could not find NFREQ block' + found *= np.sign(edistring.upper().find('>END') + 1 ) + if found == 0: + print 'Could not find END block' + found *= np.sign(edistring.upper().find('>=DEFINEMEAS') + 1 ) + if found == 0: + print 'Could not find >=DEFINEMEAS block' + #allow spectral information as alternative: + if np.sign(edistring.upper().find('>FREQ') + 1 ) == 0: + if np.sign(edistring.upper().find('>SPECTRA') + 1 ) == 0 : + found *= 0 + if np.sign(edistring.upper().find('>=MTSECT') + 1 ) == 0: + if np.sign(edistring.upper().find('>=SPECTRASECT') + 1 ) == 0: + found *= 0 + + + if found < 1 : + print 'Could not find all mandatory sections for a valid EDI file!\n'+\ + '(Most basic version must contain: "HEAD, =DEFINEMEAS, =MTSECT'+\ + 'or =SPECTRASECT, FREQ or SPECTRA, (Z,) END") ' + return False + + #checking for non empty freq list: + freq_start_idx = edistring.upper().find('>FREQ') + next_block_start = edistring.upper().find('>',freq_start_idx + 1) + string_dummy_2 = edistring[freq_start_idx:next_block_start] + lo_string_dummy_2 = string_dummy_2.strip().split() + #check, if there are actually one/some valid numbers: + n_numbers = 0 + for i in lo_string_dummy_2: + try: + n = float(i) + n_numbers +=1 + except: + continue + + if n_numbers == 0: + print MTex.MTpyError_edi_file('Problem in FREQ block: no frequencies '+\ + 'found...checking for spectra instead') + #found *= 0 + #Check for data entry following priority: + # 1. Z + z_found = 0 + rhophi_found = 0 + spectra_found = 0 + + compstrings = ['ZXX','ZXY','ZYX','ZYY'] + Z_entries = ['R','I','.VAR'] + + for comp in compstrings: + n_entries = 0 + + for zentry in Z_entries: + searchstring = '>'+comp+zentry + z_comp_start_idx = edistring.upper().find(searchstring) + if z_comp_start_idx < 0: + continue + #found *= np.sign(z_comp_start_idx + 1 ) + #checking for non empty value list: + next_block_start = edistring.upper().find('>',z_comp_start_idx+1) + string_dummy_1 = edistring[z_comp_start_idx:next_block_start] + lo_string_dummy_1 = string_dummy_1.strip().split() + n_numbers = 0 + for i in lo_string_dummy_1: + try: + n = float(i) + n_numbers +=1 + except: + continue + + if n_numbers == 0: + print MTex.MTpyError_edi_file('Error in {0}'.format(comp+\ + zentry)+\ + 'block: no values found') + continue + + if zentry in ['R','I']: + n_entries += 1 + if n_entries > 1: + z_found += 1 + + + # If no Z entry is found continue searching for RhoPhase information + # 2. RHO,PHS + if z_found == 0: + + rhophistrings = ['RHO','PHS'] + compstrings = ['XX','XY','YX','YY'] + + for comp in compstrings: + n_entries = 0 + for rp in rhophistrings: + sectionhead = rp + comp + try: + temp_string = _cut_sectionstring(edistring,sectionhead) + lo_vals = [] + t0 = temp_string.strip().split('\n')[0] + n_dummy = int(float(t0.split('//')[1].strip())) + t1 = temp_string.strip().split('\n')[1:] + for j in t1: + lo_j = j.strip().split() + for k in lo_j: + try: + lo_vals.append(float(k)) + except: + pass + if len(lo_vals) == 0: + raise + except: + continue + + n_entries += 1 + if n_entries > 1 : + rhophi_found += 1 + + # If neither Z nor RHO/PHS entries are found continue searching for + #spectra information + # 3. spectra + if z_found == 0 and rhophi_found == 0: + + spectrasect = _cut_sectionstring(edistring, '=SPECTRASECT') + if len(spectrasect) == 0 : + found *=0 + dummy4 = spectrasect.upper().find('NCHAN') + n_chan = int(float( + spectrasect[dummy4:].strip().split('=')[1].split()[0])) + + if n_chan not in [4,5,6,7]: + found *= 0 + + dummy5 = spectrasect.upper().find('NFREQ') + n_freq = int(float( + spectrasect[dummy5:].strip().split('=')[1].split()[0])) + + firstspectrum = _cut_sectionstring(edistring, 'SPECTRA') + if len(firstspectrum) == 0 : + found *=0 + + no_values = int(float( + firstspectrum.split('\n')[0].strip().split('//')[1])) + + if firstspectrum.upper().find('FREQ') <0 : + found *= 0 + + if not n_chan**2 == no_values: + found *= 0 + + lo_valuelines = firstspectrum.split('\n')[1:] + dummy6 = '' + for i in lo_valuelines: + dummy6 += (' '+i) + + if not len(dummy6.split()) == no_values: + found *= 0 + + + if not edistring.upper().count('>SPECTRA') == n_freq: + found *= 0 + if found > 0: + print 'Found spectra data !!' + spectra_found = 1 + + if z_found == 0 and rhophi_found == 0 and spectra_found == 0 : + print 'ERROR - no data found in terms of "Z" or "RHO/PHS" or '+\ + '"SPECTRA" - reading of multiple stations is not supported (yet)!' + found *= 0 + + if found > 0: isvalid = True + + return isvalid + + + +def _build_id_channel_dict(lo_hmeas_emeas): + """ + build a dictionary for emeas and hmeas + """ + + id_dict = {} + + for line in lo_hmeas_emeas: + line = line.split() + if len(''.join(line).strip()) == 0: + continue + + channel = _find_key_value('CHTYPE','=',' '.join(line),valuelength=2) + ID = _find_key_value('ID','=',' '.join(line)) + id_dict[ID] = channel + + return id_dict + +def _find_key_value(key, separator, instring, valuelength=None): + """ + find a key value in a given string + """ + + line = instring.strip().split() + value = None + #loop over list/line elements + for idx, element in enumerate(line): + #if keyword is not found in entry: + if element.upper().find(key.upper()) < 0: + continue + #else check, if the separator is present in the same element (equiv. + #to no spacing) + if element.upper().find(separator) >= 0: + + #, if the splitting worked out + if len(element.split(separator)) == 2 : + #if all fine until now, read in the part after the separator + #as value + value = element.split(separator)[1].upper() + + #if the separator was at the end of the element, read the next + #element as value + if len(element.split(separator)[1]) == 0 : + value = line[idx+1] + + #else, the separator is in the next element + else: + #check, if the next line is entirely defined by separator -> + #value must be one later + if line[idx+1] == separator: + value = line[idx+2] + #else, cut off the separator from the value + else: + value = line[idx+1].split(separator)[1] + #check for correct length of value, if specified + if valuelength is not None: + if len(value) != valuelength : + continue + + return value + + + +def spectra2z(data, avgt=None, channellist=None): + """ + Convert data from spectral form into Z - for one fixed freq. + + Input: + spectral data array, real-valued, n x n sized + degrees of freedom, equiv. to 'AVGT' (number of averaged time windows) + + Output: + Z array, complex valued, 2x2 sized + (Tipper array, complex valued, 2 x 1 sized) <- if HZ is present + + note: if n>5, remote reference is assumed, so the last 2 channels + are interpreted as 'HX/HY-remote' + otherwise, self-referencing is applied + """ + + z_array = np.zeros((2,2), 'complex') + zerr_array = np.zeros((2,2),'float') + + S = np.zeros(data.shape, 'complex') + tipper_array = None + tippererr_array = None + + #in case the components are in a crazy order + comps = ['HX', 'HY', 'HZ', 'EX', 'EY'] + idx = [] + for c in comps: + if c not in channellist: + idx.append(None) + continue + + idx.append(channellist.index(c)) + + #if remote ref. is applied, take the last two columns as rem ref for HX, + #Hy + if data.shape[0] in [6,7]: + idx.append(data.shape[0]-2) + idx.append(data.shape[0]-1) + elif data.shape[0] < 6 : + idx.append(0) + idx.append(1) + + + #idx contains the indices/positions of the components within the data + #matrix. The entries are in the order + # HX, HY, HZ, EX, EY, HXrem, HYrem + # if HY is not present, the list entry is a NONE + + #build upper right triangular matrix with compex valued entries + for i in range(data.shape[0]): + for j in range(i,data.shape[0]): + if i == j : + S[i,j] = ( data[i,j]) + else: + #minus sign for complex conjugation + # original spectra data are of form , but we need + # the order ... + # this is achieved by complex conjugation of the original entries + S[i,j] = np.complex( data[j,i] , -data[i,j] ) + #keep complex conjugated entries in the lower triangular matrix: + S[j,i] = np.complex( data[j,i] , +data[i,j] ) + + + + #use formulas from Bahr/Simpson to convert the Spectra into Z entries + # the entries of S are sorted like + # + # + # ..... + + # note: the sorting can be influenced by wrong order of indices - + # the list 'idx' takes care of that + + Zdet = ( S[idx[0],idx[5]] * S[idx[1],idx[6]] - S[idx[0],idx[6]] *\ + S[idx[1],idx[5]] ) + + z_array[0,0] = S[idx[3],idx[5]] * S[idx[1],idx[6]] - S[idx[3],idx[6]] *\ + S[idx[1],idx[5]] + z_array[0,1] = S[idx[3],idx[6]] * S[idx[0],idx[5]] - S[idx[3],idx[5]] *\ + S[idx[0],idx[6]] + z_array[1,0] = S[idx[4],idx[5]] * S[idx[1],idx[6]] - S[idx[4],idx[6]] *\ + S[idx[1],idx[5]] + z_array[1,1] = S[idx[4],idx[6]] * S[idx[0],idx[5]] - S[idx[4],idx[5]] *\ + S[idx[0],idx[6]] + + z_array /= Zdet + + + #if HZ information is present: + if data.shape[0] %2 != 0: + tipper_array = np.zeros((1,2),dtype=np.complex) + tipper_array[0,0] = S[idx[2],idx[5]] * S[idx[1],idx[6]] - \ + S[idx[2],idx[6]] * S[idx[1],idx[5]] + tipper_array[0,1] = S[idx[2],idx[6]] * S[idx[0],idx[5]] - \ + S[idx[2],idx[5]] * S[idx[0],idx[6]] + + tipper_array /= Zdet + + if avgt is None: + print 'Information on uncertainties (AVGT value) missing -- cannot calculate errors' + return z_array, tipper_array, None, None + + if avgt <= 4: + print 'Warning -- Information on uncertainties insufficient (AVGT <= 4)' + return z_array, tipper_array, None, None + + + #calculate error using formulas in Bahr&Simpson, Appendix 4. + # BUT: using 68% quantil to be consistent with general error bars, which + # are usually rather 1 sigma of a normal distribution + + # BUT: needs scipy.stats.distributions providing the Fisher distribution + try: + import scipy.stats.distributions as ssd + except: + print 'module "scipy.stats.distributions" not found -- cannot calculate errors' + return z_array, tipper_array, None, None + + + zerr_array,tippererr_array = _spectraerr2zerr(S,idx,z_array,tipper_array,avgt,ssd) + + del ssd + + return z_array, tipper_array, zerr_array, tippererr_array + + +def _spectraerr2zerr(S,idx,Z,Tipper,avgt,ssd): + """calculating spectral error for one frequency + + input: NxN complex valued matrix. Important entries containing remote reference + information are in the last two columns. + + Errors do only depend on the station - no remote reference used here! + + output: + 2-tuple: [2,2] array with errors for Z , [1,2] array with errors for tipper + + """ + zerr_array = np.zeros((2,2)) + + + Zdet = np.real (S[idx[0],idx[0]] * S[idx[1],idx[1]] - np.abs(S[idx[0],idx[1]])**2) + #split up into three steps: first for Ex component, second for Ey, and then Tipper + + # 68% Quantil of the Fisher distribution: + sigma_quantil = ssd.f.ppf(0.68,4,avgt-4) + + #1) Ex + a = S[idx[3],idx[0]] * S[idx[1],idx[1]] - S[idx[3],idx[1]] * S[idx[1],idx[0]] + b = S[idx[3],idx[1]] * S[idx[0],idx[0]] - S[idx[3],idx[0]] * S[idx[0],idx[1]] + a /= Zdet + b /= Zdet + + psi_squared = np.real(1./np.real(S[idx[3],idx[3]]) * (a*S[idx[0],idx[3]]+b*S[idx[1],idx[3]])) + epsilon_squared = 1.-psi_squared + + scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[3],idx[3]]) + zerr_array[0,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) + zerr_array[0,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) + + + #2) Ey + a = S[idx[4],idx[0]] * S[idx[1],idx[1]] - S[idx[4],idx[1]] * S[idx[1],idx[0]] + b = S[idx[4],idx[1]] * S[idx[0],idx[0]] - S[idx[4],idx[0]] * S[idx[0],idx[1]] + a /= Zdet + b /= Zdet + + psi_squared = np.real(1./np.real(S[idx[4],idx[4]]) * (a*S[idx[0],idx[4]]+b*S[idx[1],idx[4]])) + epsilon_squared = 1.-psi_squared + + scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[4],idx[4]]) + zerr_array[1,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) + zerr_array[1,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) + + tippererr_array = None + + if Tipper is not None: + tippererr_array = np.zeros((1,2)) + #3) Tipper + a = S[idx[2],idx[0]] * S[idx[1],idx[1]] - S[idx[2],idx[1]] * S[idx[1],idx[0]] + b = S[idx[2],idx[1]] * S[idx[0],idx[0]] - S[idx[2],idx[0]] * S[idx[0],idx[1]] + a /= Zdet + b /= Zdet + + psi_squared = np.real(1./np.real(S[idx[2],idx[2]]) * (a* S[idx[0],idx[2]] + b *S[idx[1],idx[2]])) + epsilon_squared = 1.-psi_squared + scaling = sigma_quantil*4/(avgt-4.)*epsilon_squared/Zdet*np.real(S[idx[2],idx[2]]) + + tippererr_array[0,0] = np.sqrt(scaling*np.real(S[idx[1],idx[1]])) + tippererr_array[0,1] = np.sqrt(scaling*np.real(S[idx[0],idx[0]])) + + + return zerr_array, tippererr_array + + +def _make_z_dict(Z_object): + """ + make a z dictionary from a z-object + """ + + z_dict = {} + if Z_object.z is None: + return None + + compstrings = ['ZXX','ZXY','ZYX','ZYY'] + Z_entries = ['R','I','.VAR'] + for idx_comp,comp in enumerate(compstrings): + for idx_zentry,zentry in enumerate(Z_entries): + section = comp + zentry + + if idx_zentry < 2: + data = Z_object.z[:,idx_comp/2, idx_comp%2] + if idx_zentry == 0 : + data = np.real(data) + else: + data = np.imag(data) + else: + data = Z_object.zerr[:,idx_comp/2, idx_comp%2] + + z_dict[section] = data + + + return z_dict + + +def _make_tipper_dict(Tipper_object): + """ + make a dictionary from tipper object. + """ + + if Tipper_object.tipper is None: + return None + + tipper_dict = {} + compstrings = ['TX','TY'] + T_entries = ['R','I','VAR'] + for idx_comp,comp in enumerate(compstrings): + for idx_tentry,tentry in enumerate(T_entries): + section = comp + tentry + + if idx_tentry < 2: + data = Tipper_object.tipper[:,idx_comp/2, idx_comp%2] + if idx_tentry == 0 : + data = np.real(data) + else: + data = np.imag(data) + else: + data = Tipper_object.tippererr[:,idx_comp/2, idx_comp%2] + + tipper_dict[section] = data + + + return tipper_dict \ No newline at end of file From 7fae4dee47fd1d42a85923810246e2e54d52bb91 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 23:13:40 -0700 Subject: [PATCH 043/124] Removed import mtpt in occam1d.py --- mtpy/modeling/occam1d.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 778548ad..e3129b86 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -71,7 +71,6 @@ import mtpy.core.edi as mtedi import mtpy.utils.calculator as mtcc import mtpy.analysis.geometry as mtg -import mtpy.analysis.pt as mtpt import matplotlib.pyplot as plt import subprocess import string From 3ef746930e712704a4a762d0692e33a399edf739 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 23:22:02 -0700 Subject: [PATCH 044/124] Put in a test to see if zrot is in the edi file --- mtpy/core/edi.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index e52a45b4..b9d142f1 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -242,7 +242,10 @@ def _read_mt(self, data_lines): self.Z.freq = freq_arr.copy() self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) - self.Z.rotation_angle = data_dict['zrot'] + try: + self.Z.rotation_angle = data_dict['zrot'] + except KeyError: + self.Z.rotation_angle = 0.0 self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ np.array(data_dict['zxxi'])*1j From 9cb7988ac9cd07aceb495e10ec757ee919719a8a Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 23:25:22 -0700 Subject: [PATCH 045/124] Put in a test to see if zrot is in the edi file --- mtpy/core/edi.py | 5 ++++- mtpy/gui/occam1d_gui.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index b9d142f1..06729f70 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -271,7 +271,10 @@ def _read_mt(self, data_lines): try: self.Tipper.rotation_angle = data_dict['trot'] except KeyError: - self.Tipper.rotation_angle = data_dict['zrot'] + try: + self.Tipper.rotation_angle = data_dict['zrot'] + except KeyError: + self.Tipper.rotation_angle = 0.0 if 'txr.exp' in data_dict.keys(): self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index f8fac81d..15a29bef 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -79,7 +79,7 @@ def ui_setup(self): """ self.setWindowTitle("Run Occam 1D") - self.resize(1920, 1080) + self.setWindowState(QtCore.Qt.WindowMaximized) self.occam_widget = OccamWidget() self.central_widget = self.setCentralWidget(self.occam_widget) From d31bca07a39c9d6fe6e326c07b12601ca1a2e832 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 23:49:01 -0700 Subject: [PATCH 046/124] trying to fix writing TM mode in occam1d.py --- mtpy/gui/occam1d_gui.py | 13 +++++++--- mtpy/modeling/occam1d.py | 53 ++++++++++++++++++---------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 15a29bef..e9e5105f 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -729,7 +729,7 @@ def __init__(self): self.axm = None self.res_limits = None - self.phase_limits = (-5, 95) + self.phase_limits = None self.depth_scale = 'log' self.depth_units = 'km' self.depth_limits = None @@ -1014,16 +1014,21 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, pass #--> set axis properties----------------------------------------------- + x_limits = (10**np.floor(np.log10(1./self.data_obj.freq.max())), + 10**np.ceil(np.log10(1./self.data_obj.freq.min()))) + self.axr.set_xscale('log') self.axp.set_xscale('log') - self.axr.set_yscale('log') + self.axr.set_yscale('log') + self.axr.set_xlim(x_limits) + self.axp.set_xlim(x_limits) self.axr.grid(True, alpha=.75, which='both', color=(.75, .75, .75)) plt.setp(self.axr.xaxis.get_ticklabels(),visible=False) self.axp.grid(True, alpha=.75, which='both', color=(.75, .75, .75)) - self.axp.yaxis.set_major_locator(MultipleLocator(15)) - self.axp.yaxis.set_minor_locator(MultipleLocator(3)) + #self.axp.yaxis.set_major_locator(MultipleLocator(15)) + #self.axp.yaxis.set_minor_locator(MultipleLocator(3)) if self.res_limits is not None: self.axr.set_ylim(self.res_limits) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index e3129b86..4a94c14a 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -380,12 +380,29 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, '{0:{1}}\n'.format(perr, self._string_fmt)])) data_count += 2 - elif 'tm' in mode.lower(): - pol = 'yx' - i1,i2 = 1,0 - tetm = True -# data1 *= -1 -# data2 *= -1 + elif mode.lower() == 'tm': + pol = 'yx' + if res_err == 'data': + rerr = rho_err[ii, 1, 0] + else: + rerr = rho[ii, 1, 0]*res_err/100. + + if phase_err == 'data': + perr = phi_err[ii, 1, 0] + else: + perr = phase_err/100*(180/np.pi) + + # write lines + if rho[ii, 1, 0] != 0.0: + dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', + '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), + '{0:{1}}\n'.format(rerr, self._string_fmt)])) + data_count += 1 + if phi[ii, 1, 0] != 0.0: + dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', + '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), + '{0:{1}}\n'.format(perr, self._string_fmt)])) + data_count += 1 else: tetm = False @@ -418,29 +435,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, '{0:{1}}\n'.format(d2err, self._string_fmt)])) data_count += 1 -# elif mode.lower() == 'tm': -# pol = 'yx' -# if res_err == 'data': -# rerr = rho_err[ii, 1, 0] -# else: -# rerr = rho[ii, 1, 0]*res_err/100. -# -# if phase_err == 'data': -# perr = phi_err[ii, 1, 0] -# else: -# perr = phase_err/100*(180/np.pi) -# -# # write lines -# if rho[ii, 1, 0] != 0.0: -# dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', -# '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), -# '{0:{1}}\n'.format(rerr, self._string_fmt)])) -# data_count += 1 -# if phi[ii, 1, 0] != 0.0: -# dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', -# '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), -# '{0:{1}}\n'.format(perr, self._string_fmt)])) -# data_count += 1 + else: if 'det' in mode.lower(): pol = 'xy' From 519c7e8b2f8b1611dd781ab6cd93a991b1e340c5 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 11 Apr 2016 23:58:21 -0700 Subject: [PATCH 047/124] working on writing TM mode in occam1d.py --- mtpy/modeling/occam1d.py | 49 ++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 4a94c14a..d64ec4a4 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -240,7 +240,8 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, zdet_err = np.abs(zdet_err) rho = .2/freq*abs(zdet) - phi = np.rad2deg(np.arctan2((zdet**0.5).imag, (zdet**0.5).real)) + phi = np.rad2deg(np.arctan2((zdet**0.5).imag, + (zdet**0.5).real)) @@ -380,29 +381,29 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, '{0:{1}}\n'.format(perr, self._string_fmt)])) data_count += 2 - elif mode.lower() == 'tm': - pol = 'yx' - if res_err == 'data': - rerr = rho_err[ii, 1, 0] - else: - rerr = rho[ii, 1, 0]*res_err/100. - - if phase_err == 'data': - perr = phi_err[ii, 1, 0] - else: - perr = phase_err/100*(180/np.pi) - - # write lines - if rho[ii, 1, 0] != 0.0: - dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), - '{0:{1}}\n'.format(rerr, self._string_fmt)])) - data_count += 1 - if phi[ii, 1, 0] != 0.0: - dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), - '{0:{1}}\n'.format(perr, self._string_fmt)])) - data_count += 1 + elif mode.lower() == 'tm': + pol = 'yx' + if res_err == 'data': + rerr = rho_err[ii, 1, 0] + else: + rerr = rho[ii, 1, 0]*res_err/100. + + if phase_err == 'data': + perr = phi_err[ii, 1, 0] + else: + perr = phase_err/100*(180/np.pi) + + # write lines + if rho[ii, 1, 0] != 0.0: + dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', + '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), + '{0:{1}}\n'.format(rerr, self._string_fmt)])) + data_count += 1 + if phi[ii, 1, 0] != 0.0: + dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', + '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), + '{0:{1}}\n'.format(perr, self._string_fmt)])) + data_count += 1 else: tetm = False From 7ba70c5b744a720ee51f7ab53bd12474d99ccc0c Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 00:10:31 -0700 Subject: [PATCH 048/124] working on writing TM mode in occam1d.py --- mtpy/gui/edi_editor.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 313591fa..64d08996 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -14,7 +14,6 @@ from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure -from matplotlib.ticker import MultipleLocator import mtpy.imaging.mtplottools as mtplt import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec @@ -436,7 +435,8 @@ def meta_edit_elev(self): self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) def meta_edit_date(self): - pass + self.mt_obj.edi_object.Header.filedate = str(self.meta_edit_date.text()) + def meta_edit_acq(self): pass @@ -446,6 +446,7 @@ def fill_metadata(self): self.meta_lat_edit.setText('{0:.6f}'.format(self.mt_obj.lat)) self.meta_lon_edit.setText('{0:.6f}'.format(self.mt_obj.lon)) self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) + self.meta_date_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.filedate)) def static_shift_set_x(self): self.static_shift_x = float(str(self.static_shift_x_edit.text())) From 33382370fad5b1fa28ee61faf7696526788683d3 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 10:53:01 -0700 Subject: [PATCH 049/124] reverted to a better version of occam1d.py --- mtpy/modeling/occam1d.py | 74 +++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 43 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index d64ec4a4..8661a38a 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -240,8 +240,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, zdet_err = np.abs(zdet_err) rho = .2/freq*abs(zdet) - phi = np.rad2deg(np.arctan2((zdet**0.5).imag, - (zdet**0.5).real)) + phi = np.rad2deg(np.arctan2((zdet**0.5).imag, (zdet**0.5).real)) @@ -363,47 +362,14 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, for ii in range(nf): if 'te' in mode.lower(): pol = 'xy' - if res_err == 'data': - rerr = rho_err[ii, 0, 1] - else: - rerr = rho[ii, 0, 1]*res_err/100. - - if phase_err == 'data': - perr = phi_err[ii, 0, 1] - else: - perr = phase_err/100.*(180/np.pi) - if rho[ii, 0, 1] != 0.0: - dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(rho[ii, 0, 1], self._string_fmt), - '{0:{1}}\n'.format(rerr, self._string_fmt)])) - dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(phi[ii, 0, 1]%90,self._string_fmt), - '{0:{1}}\n'.format(perr, self._string_fmt)])) - data_count += 2 - - elif mode.lower() == 'tm': + i1,i2 = 0,1 + tetm = True + elif 'tm' in mode.lower(): pol = 'yx' - if res_err == 'data': - rerr = rho_err[ii, 1, 0] - else: - rerr = rho[ii, 1, 0]*res_err/100. - - if phase_err == 'data': - perr = phi_err[ii, 1, 0] - else: - perr = phase_err/100*(180/np.pi) - - # write lines - if rho[ii, 1, 0] != 0.0: - dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), - '{0:{1}}\n'.format(rerr, self._string_fmt)])) - data_count += 1 - if phi[ii, 1, 0] != 0.0: - dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), - '{0:{1}}\n'.format(perr, self._string_fmt)])) - data_count += 1 + i1,i2 = 1,0 + tetm = True +# data1 *= -1 +# data2 *= -1 else: tetm = False @@ -436,7 +402,29 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, '{0:{1}}\n'.format(d2err, self._string_fmt)])) data_count += 1 - +# elif mode.lower() == 'tm': +# pol = 'yx' +# if res_err == 'data': +# rerr = rho_err[ii, 1, 0] +# else: +# rerr = rho[ii, 1, 0]*res_err/100. +# +# if phase_err == 'data': +# perr = phi_err[ii, 1, 0] +# else: +# perr = phase_err/100*(180/np.pi) +# +# # write lines +# if rho[ii, 1, 0] != 0.0: +# dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', +# '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), +# '{0:{1}}\n'.format(rerr, self._string_fmt)])) +# data_count += 1 +# if phi[ii, 1, 0] != 0.0: +# dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', +# '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), +# '{0:{1}}\n'.format(perr, self._string_fmt)])) +# data_count += 1 else: if 'det' in mode.lower(): pol = 'xy' From e4e40f6dbc47c35bf51be729378081f13ce3b93f Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 13:29:19 -0700 Subject: [PATCH 050/124] fixed core.mt to work with edi and fixed documentation --- mtpy/core/mt.py | 103 ++++++++++++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 38 deletions(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index 478cb390..236a5489 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -13,7 +13,7 @@ """ #============================================================================== -import mtpy.core.edi_object_new as MTedi +import mtpy.core.edi as MTedi import mtpy.core.z as MTz import mtpy.utils.latlongutmconversion as MTutm import mtpy.utils.exceptions as MTex @@ -62,7 +62,6 @@ class MT(object): east station location in UTM coordinates assuming WGS-84 north station location in UTM coordinates assuming WGS-84 utm_zone zone of UTM coordinates assuming WGS-84 - data_type | 'z' | 'spectra' | 'resphase' | ===================== ===================================================== .. note:: @@ -98,6 +97,7 @@ class MT(object): write_edi_file write an edi_file from the MT data remove_distortion remove distortion from the data following Bibby et al. [2005] + remove_static_shift Shifts apparent resistivity curves up or down interpolate interpolates the impedance tensor and induction vectors onto a specified frequency array. plot_mt_response plots the MT response using mtpy.imaging.plotresponse @@ -106,42 +106,43 @@ class MT(object): Examples ------------------- - - * Read in Spectra data:: + :Read from an .edi File: :: >>> import mtpy.core.mt as mt - >>> mt_obj = mt.MT(r"/home/edi_files/mt_01.edi", data_type='spectra') + >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") - * Plot MT response:: + :Plot MT response: :: - >>> import mtpy.core.mt as mt - >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") >>> # plot all components of mt response and phase tensor >>> plot_obj = mt_obj.plot_mt_response(plot_num=2, plot_pt='y') >>> # plot the tipper as well >>> plot_obj.plot_tipper = 'yri' >>> plot_obj.redraw_plot() - * Remove Distortion:: + :Remove Distortion: :: - >>> import mtpy.core.mt as mt - >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") >>> D, new_z = mt_obj.remove_distortion() >>> print D - np.array([[0.1, .9], - [0.98, .43]]) + >>> np.array([[0.1, .9], + >>> ... [0.98, .43]]) >>> # write a new edi file >>> mt_obj.write_edi_file(new_Z=new_z) - wrote file to: /home/edi_files/s01_RW.edi + >>> wrote file to: /home/edi_files/s01_RW.edi + + :Remove Static Shift: :: + + >>> new_z_obj = mt_obj.remove_static_shift(ss_x=.78, ss_y=1.1) + >>> # write a new edi file + >>> mt_obj.write_edi_file(new_fn=r"/home/edi_files/s01_ss.edi", + >>> new_Z=new_z) + >>> wrote file to: /home/edi_files/s01_ss.edi - * Interpolate:: - - >>> import mtpy.core.mt as mt - >>> mt_obj = mt.MT(r"/home/edi_files/s01.edi") + :Interpolate: :: + >>> new_freq = np.logspace(-3, 3, num=24) >>> new_z_obj, new_tipper_obj = mt_obj.interpolate(new_freq) >>> mt_obj.write_edi_file(new_Z=new_z_obj, new_Tipper=new_tipper_obj) - wrote file to: /home/edi_files/s01_RW.edi + >>> wrote file to: /home/edi_files/s01_RW.edi """ def __init__(self, fn=None, **kwargs): @@ -448,7 +449,8 @@ def write_edi_file(self, new_fn=None, new_Z=None, new_Tipper=None): Similarly, the new function name does not change the MT objecte fn attribute but does change MT.edi_object.fn attribute. - **Arguments**: + Arguments + -------------- *new_fn* : string full path to new file name @@ -506,14 +508,15 @@ def remove_distortion(self): """ remove distortion following Bibby et al. [2005]. - if you want to write a new edi file with distortion removed you can - do this by: + Example + ---------- + :Remove Distortion and Write New .edi: :: >>> import mtpy.core.mt as mt >>> mt1 = mt.MT(fn=r"/home/mt/edi_files/mt01.edi") >>> D, new_z = mt1.remove_distortion() >>> mt1.write_edi_file(new_fn=r"/home/mt/edi_files/mt01_dr.edi",\ - new_Z=new_z) + >>> new_Z=new_z) """ dummy_z_obj = MTz.copy.deepcopy(self.Z) D, new_z_object = MTdistortion.remove_distortion(z_object=dummy_z_obj) @@ -533,7 +536,8 @@ def remove_static_shift(self, ss_x=1.0, ss_y =1.0): * Z0 = S^(-1) * Z - **Arguments** + Arguments + ------------ *ss_x* : float correction factor for x component @@ -541,13 +545,26 @@ def remove_static_shift(self, ss_x=1.0, ss_y =1.0): *ss_y* : float correction factor for y component - **Returns** + .. note:: The factors are in resistivity scale, so the + entries of the matrix "S" need to be given by their + square-roots! + + Returns + ------------ *new_z* : new z array - .. note:: The factors are in resistivity scale, so the - entries of the matrix "S" need to be given by their - square-roots! + + + Examples + ---------- + :Remove Static Shift: :: + + >>> import mtpy.core.mt as mt + >>> mt_obj = mt.MT(r"/home/mt/mt01.edi") + >>> new_z_obj = mt.remove_static_shift(ss_x=.5, ss_y=1.2) + >>> mt_obj.write_edi_file(new_fn=r"/home/mt/mt01_ss.edi", + >>> ... new_Z=new_z_obj) """ s_array, new_z = self.Z.no_ss(reduce_res_factor_x=ss_x, @@ -561,9 +578,11 @@ def remove_static_shift(self, ss_x=1.0, ss_y =1.0): def interpolate(self, new_freq_array): """ - interpolate the impedance tensor onto different frequencies. + Interpolate the impedance tensor onto different frequencies + - **Arguments** + Arguments + ------------ *new_freq_array* : np.ndarray a 1-d array of frequencies to interpolate on @@ -571,7 +590,9 @@ def interpolate(self, new_freq_array): frequency range, anything outside and an error will occur. - **Returns** : + Returns + ----------- + *new_z_object* : mtpy.core.z.Z object a new impedance object with the corresponding frequencies and components. @@ -580,9 +601,12 @@ def interpolate(self, new_freq_array): a new tipper object with the corresponding frequencies and components. - - :Example: :: - >>> # make a new edi file for interpolated frequencies + + Examples + ---------- + + :Interpolate: :: + >>> import mtpy.core.mt as mt >>> edi_fn = r"/home/edi_files/mt_01.edi" >>> mt_obj = mt.MT(edi_fn) @@ -590,8 +614,8 @@ def interpolate(self, new_freq_array): >>> new_freq = np.logspace(-3, 3, 24) >>> new_z_object, new_tipper_obj = mt_obj.interpolate(new_freq) >>> mt_obj.write_edi_file(new_fn=r"/home/edi_files/mt_01_interp.edi", - >>> new_Z=new_z_object, - >>> new_Tipper=new_tipper_object) + >>> ... new_Z=new_z_object, + >>> ... new_Tipper=new_tipper_object) """ # if the interpolation module has not been loaded return @@ -664,9 +688,12 @@ def interpolate(self, new_freq_array): def plot_mt_response(self, **kwargs): """ - returns a mtpy.imaging.plotresponse.PlotResponse object + Returns a mtpy.imaging.plotresponse.PlotResponse object + + Examples + ------------ + :Plot Response: :: - :Example: :: >>> mt_obj = mt.MT(edi_file) >>> pr = mt.plot_mt_response() >>> # if you need more infor on plot_mt_response From 350839341ac09a29ae2baaaf09519a5637f5948e Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 14:02:03 -0700 Subject: [PATCH 051/124] made trot an array if a list is input --- mtpy/core/edi.py | 2 +- mtpy/gui/edi_editor.py | 62 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 06729f70..8bfa2e87 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -366,7 +366,7 @@ def write_edi_file(self, new_edi_fn=None): trot = np.repeat(self.Tipper.rotation_angle, self.Tipper.freq.size) else: trot = self.Tipper.rotation_angle - trot_lines += self._write_data_block(trot, 'trot') + trot_lines += self._write_data_block(np.array(trot), 'trot') # write out tipper lines t_data_lines = [self._data_header_str.format('tipper'.upper())] diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 64d08996..d1e52641 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -129,7 +129,7 @@ def update_plot(self): self.plot_widget.redraw_plot() def edit_metadata(self): - self.edi_txt_editor = EDITextEditor(None) + self.edi_txt_editor = EDITextEditor(self.plot_widget.mt_obj.edi_object) #============================================================================== # Plot Widget @@ -217,6 +217,10 @@ def setup_ui(self): self.meta_elev_edit = QtGui.QLineEdit('{0:.3f}'.format(0.0)) self.meta_elev_edit.editingFinished.connect(self.meta_edit_elev) + self.meta_loc_label = QtGui.QLabel("Location") + self.meta_loc_edit = QtGui.QLineEdit("None") + self.meta_loc_edit.editingFinished.connect(self.meta_edit_loc) + self.meta_date_label = QtGui.QLabel("Date Acq") self.meta_date_edit = QtGui.QLineEdit("YYYY-MM-DD") self.meta_date_edit.editingFinished.connect(self.meta_edit_date) @@ -352,10 +356,12 @@ def setup_ui(self): meta_layout.addWidget(self.meta_lon_edit, 3, 1) meta_layout.addWidget(self.meta_elev_label, 4, 0) meta_layout.addWidget(self.meta_elev_edit, 4, 1) - meta_layout.addWidget(self.meta_date_label, 5, 0) - meta_layout.addWidget(self.meta_date_edit, 5, 1) - meta_layout.addWidget(self.meta_acq_label, 6, 0) - meta_layout.addWidget(self.meta_acq_edit, 6, 1) + meta_layout.addWidget(self.meta_loc_label, 5, 0) + meta_layout.addWidget(self.meta_loc_edit, 5, 1) + meta_layout.addWidget(self.meta_date_label, 6, 0) + meta_layout.addWidget(self.meta_date_edit, 6, 1) + meta_layout.addWidget(self.meta_acq_label, 7, 0) + meta_layout.addWidget(self.meta_acq_edit, 7, 1) ## static shift ss_layout = QtGui.QGridLayout() @@ -434,12 +440,17 @@ def meta_edit_elev(self): self.mt_obj.elev = float(str(self.meta_elev_edit.text())) self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) - def meta_edit_date(self): - self.mt_obj.edi_object.Header.filedate = str(self.meta_edit_date.text()) + def meta_edit_loc(self): + self.mt_obj.edi_object.Header.loc = (str(self.meta_loc_edit.text())) + self.meta_loc_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.loc)) + def meta_edit_date(self): + self.mt_obj.edi_object.Header.filedate = str(self.meta_date_edit.text()) + self.meta_date_edit.setText(self.mt_obj.edi_object.Header.filedate) def meta_edit_acq(self): - pass + self.mt_obj.edi_object.Header.acqby = str(self.meta_acq_edit.text()) + def fill_metadata(self): self.meta_station_name_edit.setText(self.mt_obj.station) @@ -1590,16 +1601,43 @@ def setup_ui(self): self.header_label = QtGui.QLabel("Header Information") self.header_label.setFont(header_font) - self.header_edit = QtGui.QTextEdit() + self.header_acqby_label = QtGui.QLabel("Acquired By") + self.header_acqby_edit = QtGui.QLineEdit(self.edi_obj.Header.acqby) + self.header_acqby_edit.editingFinished.connect(self.header_set_acqby) - header_layout = QtGui.QVBoxLayout() - header_layout.addWidget(self.header_label) - header_layout.addWidget(self.header_edit) + self.header_acqdate_label = QtGui.QLabel("Acquired Date (YYYY-MM-DD)") + self.header_acqdate_edit = QtGui.QLineEdit(self.edi_obj.Header.acqdate) + self.header_acqdate_edit.editingFinished.connect(self.header_set_acqdate) + + self.header_dataid_label = QtGui.QLabel("Station Name") + self.header_dataid_edit = QtGui.QLineEdit(self.edi_obj.Header.dataid) + self.header_dataid_edit.editingFinished.connect(self.header_set_dataid) + + header_layout = QtGui.QGridLayout() + header_layout.addWidget(self.header_label, 0, 0) + header_layout.addWidget(self.header_acqby_label, 1, 0) + header_layout.addWidget(self.header_acqby_edit, 1, 1) + header_layout.addWidget(self.header_acqdate_label, 2, 0) + header_layout.addWidget(self.header_acqdate_edit, 2, 1) + header_layout.addWidget(self.header_dataid_label, 3, 0) + header_layout.addWidget(self.header_dataid_edit, 3, 1) self.setLayout(header_layout) self.show() + def header_set_acqby(self): + self.edi_obj.Header.acqby = str(self.header_acqby_edit.text()) + self.header_acqby_edit.setText(self.edi_obj.Header.acqby) + + def header_set_acqdate(self): + self.edi_obj.Header.acqdate = str(self.header_acqdate_edit.text()) + self.header_acqdate_edit.setText(self.edi_obj.Header.acqdate) + + def header_set_dataid(self): + self.edi_obj.Header.dataid = str(self.header_dataid_edit.text()) + self.header_dataid_edit.setText(self.edi_obj.Header.dataid) + #============================================================================== From 087c31faa5c04f15cbe864b27b73ae3d13400bf8 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 16:45:24 -0700 Subject: [PATCH 052/124] adding ability to edit most .edi sections --- mtpy/core/edi.py | 6 +- mtpy/gui/edi_editor.py | 321 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 320 insertions(+), 7 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 8bfa2e87..d9e5a3b1 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -245,7 +245,7 @@ def _read_mt(self, data_lines): try: self.Z.rotation_angle = data_dict['zrot'] except KeyError: - self.Z.rotation_angle = 0.0 + self.Z.rotation_angle = np.zeros_like(freq_arr) self.Z.z[:, 0, 0] = np.array(data_dict['zxxr'])+\ np.array(data_dict['zxxi'])*1j @@ -274,7 +274,7 @@ def _read_mt(self, data_lines): try: self.Tipper.rotation_angle = data_dict['zrot'] except KeyError: - self.Tipper.rotation_angle = 0.0 + self.Tipper.rotation_angle = np.zeros_like(freq_arr) if 'txr.exp' in data_dict.keys(): self.Tipper.tipper[:, 0, 0] = np.array(data_dict['txr.exp'])+\ @@ -946,11 +946,11 @@ class DefineMeasurement(object): >=DEFINEMEAS + MAXCHAN=7 MAXRUN=999 MAXMEAS=9999 UNITS=M REFTYPE=CART - REFLOC="par28ew" REFLAT=-30:12:49.4693 REFLONG=139:47:50.87 REFELEV=0 diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index d1e52641..afd72d4f 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -129,7 +129,16 @@ def update_plot(self): self.plot_widget.redraw_plot() def edit_metadata(self): - self.edi_txt_editor = EDITextEditor(self.plot_widget.mt_obj.edi_object) + self.edi_text_editor = EDITextEditor(self.plot_widget.mt_obj.edi_object) + self.edi_text_editor.metadata_updated.connect(self.update_edi_metadata) + + def update_edi_metadata(self): + self.plot_widget.mt_obj.edi_object = copy.deepcopy(self.edi_text_editor.edi_obj) + self.plot_widget.mt_obj.station = self.plot_widget.mt_obj.edi_object.station + self.plot_widget.mt_obj.elev = self.plot_widget.mt_obj.edi_object.elev + self.plot_widget.mt_obj.lat = self.plot_widget.mt_obj.edi_object.lat + self.plot_widget.mt_obj.lon = self.plot_widget.mt_obj.edi_object.lon + self.plot_widget.fill_metadata() #============================================================================== # Plot Widget @@ -450,14 +459,16 @@ def meta_edit_date(self): def meta_edit_acq(self): self.mt_obj.edi_object.Header.acqby = str(self.meta_acq_edit.text()) - - + self.meta_acq_edit.setText(self.mt_obj.edi_object.Header.acqby) + def fill_metadata(self): self.meta_station_name_edit.setText(self.mt_obj.station) self.meta_lat_edit.setText('{0:.6f}'.format(self.mt_obj.lat)) self.meta_lon_edit.setText('{0:.6f}'.format(self.mt_obj.lon)) self.meta_elev_edit.setText('{0:.6f}'.format(self.mt_obj.elev)) self.meta_date_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.filedate)) + self.meta_loc_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.loc)) + self.meta_acq_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.acqby)) def static_shift_set_x(self): self.static_shift_x = float(str(self.static_shift_x_edit.text())) @@ -1581,6 +1592,7 @@ class EDITextEditor(QtGui.QWidget): """ class to edit the text of an .edi file """ + metadata_updated = QtCore.pyqtSignal() def __init__(self, edi_object): super(EDITextEditor, self).__init__() @@ -1598,6 +1610,7 @@ def setup_ui(self): header_font.setBold = True header_font.setPointSize (16) + ##--> header information self.header_label = QtGui.QLabel("Header Information") self.header_label.setFont(header_font) @@ -1613,6 +1626,148 @@ def setup_ui(self): self.header_dataid_edit = QtGui.QLineEdit(self.edi_obj.Header.dataid) self.header_dataid_edit.editingFinished.connect(self.header_set_dataid) + self.header_elev_label = QtGui.QLabel("Elevation (m)") + self.header_elev_edit = QtGui.QLineEdit() + if self.edi_obj.elev is None: + self.header_elev_edit.setText('0.0') + else: + self.header_elev_edit.setText('{0:.1f}'.format(self.edi_obj.elev)) + + self.header_elev_edit.editingFinished.connect(self.header_set_elev) + + self.header_empty_label = QtGui.QLabel("Empty Value") + self.header_empty_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Header.empty)) + self.header_empty_edit.editingFinished.connect(self.header_set_empty) + + self.header_fileby_label = QtGui.QLabel("File By") + self.header_fileby_edit = QtGui.QLineEdit(self.edi_obj.Header.fileby) + self.header_fileby_edit.editingFinished.connect(self.header_set_fileby) + + self.header_filedate_label = QtGui.QLabel("File Date (YYY-MM-DD)") + self.header_filedate_edit = QtGui.QLineEdit(self.edi_obj.Header.filedate) + self.header_filedate_edit.editingFinished.connect(self.header_set_filedate) + + self.header_lat_label = QtGui.QLabel("Latitude (decimal degrees)") + self.header_lat_edit = QtGui.QLineEdit() + if self.edi_obj.lat is None: + self.header_lat_edit.setText('0.000000') + else: + self.header_lat_edit.setText('{0:.5f}'.format(self.edi_obj.lat)) + self.header_lat_edit.editingFinished.connect(self.header_set_lat) + + self.header_lon_label = QtGui.QLabel("Longitude (decimal degrees)") + self.header_lon_edit = QtGui.QLineEdit() + if self.edi_obj.lon is None: + self.header_lon_edit.setText('0.000000') + else: + self.header_lon_edit.setText('{0:.5f}'.format(self.edi_obj.lon)) + self.header_lon_edit.editingFinished.connect(self.header_set_lon) + + self.header_loc_label = QtGui.QLabel("Location") + self.header_loc_edit = QtGui.QLineEdit(self.edi_obj.Header.loc) + self.header_loc_edit.editingFinished.connect(self.header_set_loc) + + self.header_progdate_label = QtGui.QLabel("Program Date") + self.header_progdate_edit = QtGui.QLineEdit(self.edi_obj.Header.progdate) + self.header_progdate_edit.editingFinished.connect(self.header_set_progdate) + + + self.header_progvers_label = QtGui.QLabel("Program Version") + self.header_progvers_edit = QtGui.QLineEdit(self.edi_obj.Header.progvers) + self.header_progvers_edit.editingFinished.connect(self.header_set_progvers) + + ##--> Info + self.info_label = QtGui.QLabel("Information Section") + self.info_label.setFont(header_font) + + self.info_edit = QtGui.QTextEdit() + self.info_edit.setMinimumWidth(500) + try: + info_str = ''.join(self.edi_obj.Info.write_info()) + except TypeError: + info_str = '' + self.info_edit.setText(info_str) + self.info_edit.textChanged.connect(self.info_set_text) + + ##--> define measurement + self.define_label = QtGui.QLabel('Define Measurement') + self.define_label.setFont(header_font) + + self.define_maxchan_label = QtGui.QLabel('Maximum Channels') + self.define_maxchan_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.maxchan)) + self.define_maxchan_edit.editingFinished.connect(self.define_set_maxchan) + + self.define_maxrun_label = QtGui.QLabel('Maximum Runs') + self.define_maxrun_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.maxrun)) + self.define_maxrun_edit.editingFinished.connect(self.define_set_maxrun) + + self.define_maxmeas_label = QtGui.QLabel('Maximum Measurements') + self.define_maxmeas_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.maxmeas)) + self.define_maxmeas_edit.editingFinished.connect(self.define_set_maxmeas) + + self.define_refelev_label = QtGui.QLabel('Reference Elevation (m)') + self.define_refelev_edit = QtGui.QLineEdit() + if self.edi_obj.Define_measurement.refelev is None: + self.define_refelev_edit.setText('0.0') + else: + self.define_refelev_edit.setText('{0:.5f}'.format(self.edi_obj.Define_measurement.refelev)) + self.define_refelev_edit.editingFinished.connect(self.define_set_refelev) + + self.define_reflat_label = QtGui.QLabel('Reference Latitude (dec. deg)') + self.define_reflat_edit = QtGui.QLineEdit() + if self.edi_obj.Define_measurement.refelev is None: + self.define_reflat_edit.setText('0.0000000') + else: + self.define_reflat_edit.setText('{0:.5f}'.format(self.edi_obj.Define_measurement.reflat)) + self.define_reflat_edit.editingFinished.connect(self.define_set_reflat) + + self.define_reflon_label = QtGui.QLabel('Reference Longitude (dec. deg)') + self.define_reflon_edit = QtGui.QLineEdit() + if self.edi_obj.Define_measurement.reflon is None: + self.define_reflon_edit.setText('0.000000') + else: + self.define_reflon_edit.setText('{0:.5f}'.format(self.edi_obj.Define_measurement.reflon)) + self.define_reflon_edit.editingFinished.connect(self.define_set_reflon) + + #self.define_refloc_label = QtGui.QLabel('Reference Location') + #self.define_refloc_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.refloc)) + #self.define_refloc_edit.editingFinished.connect(self.define_set_refloc) + + self.define_reftype_label = QtGui.QLabel('Reference Type') + self.define_reftype_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.reftype)) + self.define_reftype_edit.editingFinished.connect(self.define_set_reftype) + + self.define_units_label = QtGui.QLabel('Distance Units') + self.define_units_edit = QtGui.QLineEdit('{0}'.format(self.edi_obj.Define_measurement.units)) + self.define_units_edit.editingFinished.connect(self.define_set_units) + + self.meas_help = QtGui.QLabel() + self.meas_help.setText('Assume x is northing (m), y is easting (m), North = 0 deg, East = 90 deg') + ch_list = ['EX', 'EY', 'HX', 'HY', 'HZ', 'RHX', 'RHY', 'EZ'] + self.meas_h01_label = QtGui.QLabel("HMEAS") + self.meas_h01_id_label = QtGui.QLabel("ID") + self.meas_h01_id_edit = QtGui.QLineEdit() + self.meas_h01_ct_label = QtGui.QLabel("CHTYPE") + self.meas_h01_ct_combo = QtGui.QComboBox() + for ch in ch_list: + self.meas_h01_ct_combo.addItem(ch) + self.meas_h01_x_label = QtGui.QLabel("X (m)") + self.meas_h01_x_edit = QtGui.QLineEdit() + self.meas_h01_y_label = QtGui.QLabel("Y (m)") + self.meas_h01_y_edit = QtGui.QLineEdit() + self.meas_h01_azm_label = QtGui.QLabel("Azimtuh (deg)") + self.meas_h01_azm_edit = QtGui.QLineEdit() + self.meas_h01_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_h01_acqchn_combo = QtGui.QComboBox() + for ch in ch_list: + self.meas_h01_acqchn_combo.addItem(ch) + + + ##--> Update button + self.update_button = QtGui.QPushButton('Update') + self.update_button.pressed.connect(self.update_metadata) + + ## --> Layout header_layout = QtGui.QGridLayout() header_layout.addWidget(self.header_label, 0, 0) header_layout.addWidget(self.header_acqby_label, 1, 0) @@ -1621,8 +1776,80 @@ def setup_ui(self): header_layout.addWidget(self.header_acqdate_edit, 2, 1) header_layout.addWidget(self.header_dataid_label, 3, 0) header_layout.addWidget(self.header_dataid_edit, 3, 1) + header_layout.addWidget(self.header_elev_label, 4, 0) + header_layout.addWidget(self.header_elev_edit, 4, 1) + header_layout.addWidget(self.header_empty_label, 5, 0) + header_layout.addWidget(self.header_empty_edit, 5, 1) + header_layout.addWidget(self.header_fileby_label, 6, 0) + header_layout.addWidget(self.header_fileby_edit, 6, 1) + header_layout.addWidget(self.header_filedate_label, 7, 0) + header_layout.addWidget(self.header_filedate_edit, 7, 1) + header_layout.addWidget(self.header_lat_label, 8, 0) + header_layout.addWidget(self.header_lat_edit, 8, 1) + header_layout.addWidget(self.header_lon_label, 9, 0) + header_layout.addWidget(self.header_lon_edit, 9, 1) + header_layout.addWidget(self.header_loc_label, 10, 0) + header_layout.addWidget(self.header_loc_edit, 10, 1) + header_layout.addWidget(self.header_progdate_label, 11, 0) + header_layout.addWidget(self.header_progdate_edit, 11, 1) + header_layout.addWidget(self.header_progvers_label, 12, 0) + header_layout.addWidget(self.header_progvers_edit, 12, 1) + + info_layout = QtGui.QVBoxLayout() + info_layout.addWidget(self.info_label) + info_layout.addWidget(self.info_edit) + + define_layout = QtGui.QGridLayout() + define_layout.addWidget(self.define_label, 0, 0) + define_layout.addWidget(self.define_maxchan_label, 1, 0) + define_layout.addWidget(self.define_maxchan_edit, 1, 1) + define_layout.addWidget(self.define_maxmeas_label, 2, 0) + define_layout.addWidget(self.define_maxmeas_edit, 2, 1) + define_layout.addWidget(self.define_maxrun_label, 3, 0) + define_layout.addWidget(self.define_maxrun_edit, 3, 1) + define_layout.addWidget(self.define_refelev_label, 4, 0) + define_layout.addWidget(self.define_refelev_edit, 4, 1) + define_layout.addWidget(self.define_reflat_label, 5, 0) + define_layout.addWidget(self.define_reflat_edit, 5, 1) + define_layout.addWidget(self.define_reflon_label, 6, 0) + define_layout.addWidget(self.define_reflon_edit, 6, 1) + define_layout.addWidget(self.define_reftype_label, 7, 0) + define_layout.addWidget(self.define_reftype_edit, 7, 1) + define_layout.addWidget(self.define_units_label, 8, 0) + define_layout.addWidget(self.define_units_edit, 8, 1) + #define_layout.addWidget(self.define_refloc_label, 7, 0) + #define_layout.addWidget(self.define_refloc_edit, 7, 1) + + meas_layout = QtGui.QGridLayout() + meas_layout.addWidget(self.meas_help, 0, 0, 1, 10) + meas_layout.addWidget(self.meas_h01_label, 1, 0) + meas_layout.addWidget(self.meas_h01_id_label, 1, 1) + meas_layout.addWidget(self.meas_h01_id_edit, 1, 2) + meas_layout.addWidget(self.meas_h01_ct_label, 1, 3) + meas_layout.addWidget(self.meas_h01_ct_combo, 1, 4) + meas_layout.addWidget(self.meas_h01_x_label, 1, 5) + meas_layout.addWidget(self.meas_h01_x_edit, 1, 6) + meas_layout.addWidget(self.meas_h01_y_label, 1, 7) + meas_layout.addWidget(self.meas_h01_y_edit, 1, 8) + meas_layout.addWidget(self.meas_h01_azm_label, 1, 9) + meas_layout.addWidget(self.meas_h01_azm_edit, 1, 10) + meas_layout.addWidget(self.meas_h01_acqchn_label, 1, 11) + meas_layout.addWidget(self.meas_h01_acqchn_combo, 1, 12) + + v_layout = QtGui.QVBoxLayout() + v_layout.addLayout(header_layout) + v_layout.addLayout(define_layout) + + h_layout = QtGui.QHBoxLayout() + h_layout.addLayout(v_layout) + h_layout.addLayout(info_layout) + + final_layout = QtGui.QVBoxLayout() + final_layout.addLayout(h_layout) + final_layout.addLayout(meas_layout) + final_layout.addWidget(self.update_button) - self.setLayout(header_layout) + self.setLayout(final_layout) self.show() @@ -1638,8 +1865,94 @@ def header_set_dataid(self): self.edi_obj.Header.dataid = str(self.header_dataid_edit.text()) self.header_dataid_edit.setText(self.edi_obj.Header.dataid) + def header_set_elev(self): + self.edi_obj.elev = float(str(self.header_elev_edit.text())) + self.header_elev_edit.setText('{0:.1f}'.format(self.edi_obj.elev)) + + def header_set_empty(self): + self.edi_obj.Header.empty = float(str(self.header_elev_edit.text())) + self.header_empty_edit.setText('{0:.2e}'.format(self.edi_obj.Header.empty)) + def header_set_fileby(self): + self.edi_obj.Header.fileby = str(self.header_fileby_edit.text()) + self.header_fileby_edit.setText('{0}'.format(self.edi_obj.Header.fileby)) + + def header_set_filedate(self): + self.edi_obj.Header.filedate = str(self.header_filedate_edit.text()) + self.header_filedate_edit.setText('{0}'.format(self.edi_obj.Header.filedate)) + + def header_set_lat(self): + self.edi_obj.lat = str(self.header_lat_edit.text()) + self.header_lat_edit.setText('{0:.5f}'.format(self.edi_obj.lat)) + + def header_set_lon(self): + self.edi_obj.lon = str(self.header_lon_edit.text()) + self.header_lon_edit.setText('{0:.5f}'.format(self.edi_obj.lon)) + + def header_set_loc(self): + self.edi_obj.Header.loc = str(self.header_loc_edit.text()) + self.header_loc_edit.setText('{0}'.format(self.edi_obj.Header.loc)) + + def header_set_progdate(self): + self.edi_obj.Header.progdate = str(self.header_progdate_edit.text()) + self.header_progdate_edit.setText('{0}'.format(self.edi_obj.Header.progdate)) + + def header_set_progvers(self): + self.edi_obj.Header.progvers = str(self.header_progvers_edit.text()) + self.header_progvers_edit.setText('{0}'.format(self.edi_obj.Header.progvers)) + + def info_set_text(self): + new_info_str = self.info_edit.toPlainText() + new_info_list = new_info_str.split('\n') + self.edi_obj.Info.info_lines = self.edi_obj.Info._validate_info_list(new_info_list) + + def define_set_maxchan(self): + self.edi_obj.Define_measurement.maxchan = int(str(self.define_maxchan_edit.text())) + self.define_maxchan_edit.setText('{0}'.format(self.edi_obj.Define_measurement.maxchan)) + + def define_set_maxrun(self): + self.edi_obj.Define_measurement.maxrun = int(str(self.define_maxrun_edit.text())) + self.define_maxrun_edit.setText('{0}'.format(self.edi_obj.Define_measurement.maxrun)) + + def define_set_maxmeas(self): + self.edi_obj.Define_measurement.maxmeas = int(str(self.define_maxmeas_edit.text())) + self.define_maxmeas_edit.setText('{0}'.format(self.edi_obj.Define_measurement.maxmeas)) + + def define_set_refelev(self): + value = mt.MTedi.MTft._assert_position_format('elev', + str(self.define_refelev_edit.text())) + self.edi_obj.Define_measurement.refelev = value + self.define_refelev_edit.setText('{0:.2f}'.format(value)) + + def define_set_reflat(self): + value = mt.MTedi.MTft._assert_position_format('lat', + str(self.define_reflat_edit.text())) + self.edi_obj.Define_measurement.reflat = value + self.define_reflat_edit.setText('{0:.5f}'.format(value)) + + def define_set_reflon(self): + value = mt.MTedi.MTft._assert_position_format('lon', + str(self.define_reflon_edit.text())) + self.edi_obj.Define_measurement.reflon = value + self.define_reflon_edit.setText('{0:.5f}'.format(value)) +# def define_set_refloc(self): +# self.edi_obj.Define_measurement.refloc = str(self.define_refloc_edit.text()) +# self.define_refloc_edit.setText('{0}'.format(self.edi_obj.Define_measurement.refloc)) +# + def define_set_reftype(self): + self.edi_obj.Define_measurement.reftype = str(self.define_reftype_edit.text()) + self.define_reftype_edit.setText('{0}'.format(self.edi_obj.Define_measurement.reftype)) + + def define_set_units(self): + self.edi_obj.Define_measurement.units = str(self.define_units_edit.text()) + self.define_units_edit.setText('{0}'.format(self.edi_obj.Define_measurement.units)) + + + + def update_metadata(self): + self.metadata_updated.emit() + #============================================================================== # Def Main #============================================================================== From e20bf45fe35e934d5212cb0dcf8a76def7d6acd8 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 17:55:12 -0700 Subject: [PATCH 053/124] added ability to read in spectra data --- mtpy/core/edi.py | 175 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 2 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index d9e5a3b1..933a9a35 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -14,6 +14,13 @@ import mtpy.utils.exceptions as MTex import mtpy.utils.filehandling as MTfh import mtpy.core.z as MTz +try: + import scipy.stats.distributions as ssd + ssd_test = True +except ImportError: + print 'Need scipy.stats.distributions to compute spectra errors' + print 'Could not find scipy.stats.distributions, check distribution' + ssd_test = False tab = ' '*4 @@ -199,6 +206,9 @@ def _read_data(self): lines = fid.readlines()[self.Data_sect.line_num+2:] if self.Data_sect.data_type == 'spectra': + print 'Converting Spectra to Impedance and Tipper' + print 'Check to make sure input channel list is correct if' + print ' the data looks incorrect.' self._read_spectra(lines) elif self.Data_sect.data_type == 'z': @@ -288,12 +298,164 @@ def _read_mt(self, data_lines): else: print 'Could not find any Tipper data.' - def _read_spectra(self, data_lines): + def _read_spectra(self, data_lines, + comp_list=['hx', 'hy', 'hz', 'ex', 'ey', 'rhx', 'rhy']): """ read in spectra data """ - + data_dict = {} + avgt_dict = {} + data_find = False + for line in data_lines: + if line.lower().find('>spectra') == 0 and line.find('!') == -1: + line_list = line[1:].strip().split() + data_find = True + + # frequency will be the key + try: + key = float(line_list[1].split('=')[1]) + data_dict[key] = [] + avgt_dict[key] = float(line_list[4].split('=')[1]) + except ValueError: + print 'did not find frequency key' + + elif data_find == True and line.find('>') == -1 and \ + line.find('!') == -1: + data_dict[key] += [float(ll) for ll in line.strip().split()] + + elif line.find('>spectra') == -1: + data_find = False + + ## get an object that contains the indices for each component + cc = index_locator(comp_list) + + freq_arr = np.array(sorted(data_dict.keys(), reverse=True)) + + z_arr = np.zeros((len(data_dict.keys()), 2, 2), dtype=np.complex) + t_arr = np.zeros((len(data_dict.keys()), 1, 2), dtype=np.complex) + + z_err_arr = np.zeros_like(z_arr, dtype=np.float) + t_err_arr = np.zeros_like(t_arr, dtype=np.float) + + for kk, key in enumerate(freq_arr): + spectra_arr = np.reshape(np.array(data_dict[key]), + (len(comp_list), len(comp_list))) + + # compute cross powers + s_arr = np.zeros_like(spectra_arr, dtype=np.complex) + for ii in range(s_arr.shape[0]): + for jj in range(ii, s_arr.shape[0]): + if ii == jj: + s_arr[ii, jj] = (spectra_arr[ii, jj]) + else: + # minus sign for complex conjugation + # original spectra data are of form , but we need + # the order ... + # this is achieved by complex conjugation of the original entries + s_arr[ii, jj] = np.complex(spectra_arr[jj, ii], + -spectra_arr[ii, jj]) + # keep complex conjugated entries in the lower + # triangular matrix: + s_arr[jj, ii] = np.complex(spectra_arr[jj, ii], + spectra_arr[ii, jj]) + + # use formulas from Bahr/Simpson to convert the Spectra into Z + # the entries of S are sorted like + # + # + # ..... + + z_arr[kk, 0, 0] = s_arr[cc.ex, cc.rhx]*s_arr[cc.hy, cc.rhy]-\ + s_arr[cc.ex, cc.rhy]*s_arr[cc.hy, cc.rhx] + z_arr[kk, 0, 1] = s_arr[cc.ex, cc.rhy]*s_arr[cc.hx, cc.rhx]-\ + s_arr[cc.ex, cc.rhx]*s_arr[cc.hx, cc.rhy] + z_arr[kk, 1, 0] = s_arr[cc.ey, cc.rhx]*s_arr[cc.hy, cc.rhy]-\ + s_arr[cc.ey, cc.rhy]*s_arr[cc.hy, cc.rhx] + z_arr[kk, 1, 1] = s_arr[cc.ey, cc.rhy]*s_arr[cc.hx, cc.rhx]-\ + s_arr[cc.ey, cc.rhx]*s_arr[cc.hx, cc.rhy] + + z_arr[kk] /= (s_arr[cc.hx, cc.rhx]*s_arr[cc.hy, cc.rhy]-\ + s_arr[cc.hx, cc.rhy]*s_arr[cc.hy, cc.rhx]) + + # compute error only if scipy package exists + if ssd_test is True: + # 68% Quantil of the Fisher distribution: + z_det = np.real(s_arr[cc.hx, cc.hx]*s_arr[cc.hy, cc.hy]-\ + np.abs(s_arr[cc.hx, cc.hy]**2)) + + sigma_quantil = ssd.f.ppf(0.68, 4, avgt_dict[key]-4) + + ## 1) Ex + a = s_arr[cc.ex, cc.hx]*s_arr[cc.hy, cc.hy]-\ + s_arr[cc.ex, cc.hy]*s_arr[cc.hy, cc.hx] + b = s_arr[cc.ex, cc.hy]*s_arr[cc.hx, cc.hx]- \ + s_arr[cc.ex, cc.hx]*s_arr[cc.hx, cc.hy] + a /= z_det + b /= z_det + + psi_squared = np.real(1./s_arr[cc.ex, cc.ex].real*\ + (a*s_arr[cc.hx, cc.ex]+b*s_arr[cc.hy, cc.ex])) + epsilon_squared = 1.-psi_squared + + scaling = sigma_quantil*4/(avgt_dict[key]-4.)*\ + epsilon_squared/z_det*s_arr[cc.ex, cc.ex].real + z_err_arr[kk, 0, 0] = np.sqrt(scaling*s_arr[cc.hy, cc.hy].real) + z_err_arr[kk, 0, 1] = np.sqrt(scaling*s_arr[cc.hx, cc.hx].real) + + ## 2) EY + a = s_arr[cc.ey, cc.hx]*s_arr[cc.hy, cc.hy]-\ + s_arr[cc.ey, cc.hy]*s_arr[cc.hy, cc.hx] + b = s_arr[cc.ey, cc.hy]*s_arr[cc.hx, cc.hx]- \ + s_arr[cc.ey, cc.hx]*s_arr[cc.hx, cc.hy] + a /= z_det + b /= z_det + + psi_squared = np.real(1./np.real(s_arr[cc.ey, cc.ey])*\ + (a*s_arr[cc.hx, cc.ey]+b*s_arr[cc.hy, cc.ey])) + epsilon_squared = 1.-psi_squared + + scaling = sigma_quantil*4/(avgt_dict[key]-4.)*\ + epsilon_squared/z_det*s_arr[cc.ey, cc.ey].real + z_err_arr[kk, 1, 0] = np.sqrt(scaling*s_arr[cc.hy, cc.hy].real) + z_err_arr[kk, 1, 1] = np.sqrt(scaling*s_arr[cc.hx, cc.hx].real) + + #if HZ information is present: + if len(comp_list) > 5: + t_arr[kk, 0, 0] = s_arr[cc.hz, cc.rhx]*s_arr[cc.hy, cc.rhy]-\ + s_arr[cc.hz, cc.rhy]*s_arr[cc.hy, cc.rhx] + t_arr[kk, 0, 1] = s_arr[cc.hz, cc.rhy]*s_arr[cc.hx, cc.rhx]-\ + s_arr[cc.hz, cc.rhx]*s_arr[cc.hx, cc.rhy] + + t_arr[kk] /= (s_arr[cc.hx, cc.rhx]*s_arr[cc.hy, cc.rhy]-\ + s_arr[cc.hx, cc.rhy]*s_arr[cc.hy, cc.rhx]) + + if ssd_test is True: + a = s_arr[cc.hz, cc.hx]*s_arr[cc.hy, cc.hy]-\ + s_arr[cc.hz, cc.hy]*s_arr[cc.hy, cc.hx] + b = s_arr[cc.hz, cc.hy]*s_arr[cc.hx, cc.hx]- \ + s_arr[cc.hz, cc.hx]*s_arr[cc.hx, cc.hy] + a /= z_det + b /= z_det + + psi_squared = np.real(1./s_arr[cc.hz, cc.hz].real*\ + (a*s_arr[cc.hx, cc.hz]+b*s_arr[cc.hy, cc.hz])) + epsilon_squared = 1.-psi_squared + + scaling = sigma_quantil*4/(avgt_dict[key]-4.)*\ + epsilon_squared/z_det*s_arr[cc.hz, cc.hz].real + t_err_arr[kk, 0, 0] = np.sqrt(scaling*s_arr[cc.hy, cc.hy].real) + t_err_arr[kk, 0, 1] = np.sqrt(scaling*s_arr[cc.hx, cc.hx].real) + + + # be sure to fill attributes + self.Z.z = z_arr + self.Z.zerr = z_err_arr + self.Z.freq = freq_arr + + self.Tipper.tipper = t_arr + self.Tipper.tippererr = t_err_arr + self.Tipper.freq = freq_arr def write_edi_file(self, new_edi_fn=None): """ @@ -496,6 +658,15 @@ def _set_station(self, new_station): station = property(fget=_get_station, fset=_set_station, doc="station name") + +#============================================================================== +# Index finder +#============================================================================== +class index_locator(object): + def __init__(self, component_list): + for ii, comp in enumerate(component_list): + setattr(self, comp, ii) + #============================================================================== # Header object #============================================================================== From 83cc9eaee0d3eeb728f9e87bf374c607da937d63 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 17:55:57 -0700 Subject: [PATCH 054/124] edited mtplottools to work with new edi class --- mtpy/imaging/mtplottools.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mtpy/imaging/mtplottools.py b/mtpy/imaging/mtplottools.py index dcb1fd2f..ff44fb28 100644 --- a/mtpy/imaging/mtplottools.py +++ b/mtpy/imaging/mtplottools.py @@ -814,37 +814,37 @@ def _read_edi(self): read in an .edi file using mtpy.core.edi """ - edi1 = mtedi.Edi(self._fn) + edi_obj = mtedi.Edi(self._fn) #--> set the attributes accordingly # impedance tensor and error - self._Z = edi1.Z + self._Z = edi_obj.Z # tipper and error - if edi1.Tipper.tipper == None: + if edi_obj.Tipper.tipper == None: self._set_tipper(np.zeros((self._Z.z.shape[0], 1, 2), dtype='complex')) self._set_tippererr(np.zeros((self._Z.z.shape[0], 1, 2))) - self._Tipper.rotation_angle=np.zeros(self._Z.z.shape[0]) - self._Tipper.freq = edi1.freq + self._Tipper.rotation_angle = np.zeros(self._Z.z.shape[0]) + self._Tipper.freq = edi_obj.Z.freq else: - self._Tipper = edi1.Tipper + self._Tipper = edi_obj.Tipper # station name try: - self.station = edi1.head['dataid'] + self.station = edi_obj.station except KeyError: print 'Could not get station name set to MT01' self.station = 'MT01' # period - self.freq = edi1.freq.copy() + self.freq = edi_obj.Z.freq.copy() # lat, lon and elevation - self.lat = edi1.lat - self.lon = edi1.lon - self.elev = edi1.elev + self.lat = edi_obj.lat + self.lon = edi_obj.lon + self.elev = edi_obj.elev # don't really like this way of programming but I'll do it anyway From 4322c664ae273feac140b3d67bd6fff7cbc964fa Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 18:14:52 -0700 Subject: [PATCH 055/124] fixed setting rotation_angle for both Z and Tipper to be an array of zeros when reading spectra --- mtpy/core/edi.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 933a9a35..8c93e613 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -10,7 +10,6 @@ import datetime import mtpy.utils.format as MTft -import mtpy.utils.calculator as MTcc import mtpy.utils.exceptions as MTex import mtpy.utils.filehandling as MTfh import mtpy.core.z as MTz @@ -451,11 +450,13 @@ def _read_spectra(self, data_lines, # be sure to fill attributes self.Z.z = z_arr self.Z.zerr = z_err_arr - self.Z.freq = freq_arr + self.Z.freq = freq_arr + self.Z.rotation_angle = np.zeros_like(freq_arr) self.Tipper.tipper = t_arr self.Tipper.tippererr = t_err_arr self.Tipper.freq = freq_arr + self.Tipper.rotation_angle = np.zeros_like(freq_arr) def write_edi_file(self, new_edi_fn=None): """ From fff2a4c8e19263ed7571813baa85272d5ffa5ca6 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 12 Apr 2016 18:48:11 -0700 Subject: [PATCH 056/124] trying to fix occam1d to work with occam1d_gui.py --- mtpy/modeling/modem_new.py | 2 +- mtpy/modeling/occam1d.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 6faf15ef..7298387c 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -56,7 +56,7 @@ class Data(object): of the impedance tensor and induction tensor. See mtpy.core.mt.MT.interpolate for more details - Arguments: + Arguments ------------ **edi_list** : list list of full paths to .edi files you want to invert for diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 8661a38a..b398957a 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -90,7 +90,7 @@ class Data(object): data array of data data_fn full path to data file freq frequency array of data - mode mode to invert for [ 'TE' | 'TM' ] + mode mode to invert for [ 'TE' | 'TM' | 'det' ] phase_te array of TE phase phase_tm array of TM phase res_te array of TE apparent resistivity @@ -132,7 +132,7 @@ def __init__(self, data_fn=None, **kwargs): self._header_line = '!{0}\n'.format(' '.join(['Type','Freq#', 'TX#', 'Rx#','Data', 'Std_Error'])) - self.mode = 'TE' + self.mode = 'det' self.data = None self.freq = None @@ -143,7 +143,7 @@ def __init__(self, data_fn=None, **kwargs): self.resp_fn = None def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, - mode='TE', res_err='data', phase_err='data', thetar=0, + mode='det', res_err='data', phase_err='data', thetar=0, res_errorfloor = 0., phase_errorfloor = 0., z_errorfloor=0., remove_outofquadrant=False): """ @@ -236,11 +236,13 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, #get determinant resistivity and phase if 'det' in mode.lower(): - zdet, zdet_err = np.abs(impz.det) + zdet, zdet_err = impz.det zdet_err = np.abs(zdet_err) rho = .2/freq*abs(zdet) - phi = np.rad2deg(np.arctan2((zdet**0.5).imag, (zdet**0.5).real)) + phi = np.rad2deg(np.arctan2((zdet**0.5).imag, + (zdet**0.5).real)) + From 78d1afb3007b9289248395b212e247fb64be6311 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 15:12:39 -0700 Subject: [PATCH 057/124] fixing occam1d.py write data file is too complex, making it simpler --- mtpy/modeling/occam1d.py | 371 ++++++++++++++++++--------------------- 1 file changed, 175 insertions(+), 196 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index b398957a..c0c099ae 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -207,107 +207,155 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, >>> ... phase_err=2.5, mode='TE', >>> ... save_path=r"/home/occam1d/mt01/TE") """ - self.mode = mode - + # be sure that the input mode is not case sensitive + self.mode = mode.lower() + + if self.mode == 'te': + d1_str = 'RhoZxy' + d2_str = 'PhsZxy' + elif self.mode == 'tm': + d1_str = 'RhoZyx' + d2_str = 'PhsZyx' + elif self.mode == 'det': + d1_str = 'RhoZxy' + d2_str = 'PhsZxy' + elif self.mode == 'zdet': + d1_str = 'RealZxy' + d2_str = 'ImagZxy' + elif self.mode == 'tez': + d1_str = 'RealZxy' + d2_str = 'ImagZxy' + elif self.mode == 'tmz': + d1_str = 'RealZyx' + d2_str = 'ImagZyx' + + # read in data as a tuple or .edi file if edi_file is None and rp_tuple is None: raise IOError('Need to input either an edi file or rp_array') if edi_file is not None: - #raise an error if can't find the edifile - if os.path.isfile(edi_file) == False: - raise IOError('No edi file {0} exists, check path'.format(edi_file)) #read in edifile - e1 = mtedi.Edi(edi_file) - impz = e1.Z + edi_obj = mtedi.Edi(edi_file) + z_obj = edi_obj.Z + + # get frequencies to invert + freq = z_obj.freq + nf = len(freq) #rotate if necessary if thetar != 0: - impz.rotate(thetar) - - #get resistivity and phase - rho = impz.resistivity - rho_err = impz.resistivity_err - phi = impz.phase - phi_err = impz.phase_err - - freq = impz.freq - nf = len(freq) + z_obj.rotate(thetar) + + # get the data requested by the given mode + if self.mode == 'te': + data_1 = z_obj.resistivity[:, 0, 1] + data_1_err = z_obj.resistivity_err[:, 0, 1] + + data_2 = z_obj.phase[:, 0, 1] + data_2_err = z_obj.phase_err[:, 0, 1] + + elif self.mode == 'tm': + data_1 = z_obj.resistivity[:, 1, 0] + data_1_err = z_obj.resistivity_err[:, 1, 0] + + # need to put the angle in the right quadrant + data_2 = z_obj.phase[:, 1, 0]%180 + data_2_err = z_obj.phase_err[:, 1, 0] - #get determinant resistivity and phase - if 'det' in mode.lower(): - zdet, zdet_err = impz.det + elif self.mode == 'det': + zdet, zdet_err = z_obj.det zdet_err = np.abs(zdet_err) - rho = .2/freq*abs(zdet) - phi = np.rad2deg(np.arctan2((zdet**0.5).imag, - (zdet**0.5).real)) - - - + data_1 = .2/freq*abs(zdet) + data_2 = np.rad2deg(np.arctan2((zdet**0.5).imag, + (zdet**0.5).real)) + + data_1_err = np.zeros_like(data_1, dtype=np.float) + data_2_err = np.zeros_like(data_2, dtype=np.float) + for zd, ze, ii in zip(zdet, zdet_err, range(len(zdet))): + de1, de2 = mtcc.zerror2r_phi_error(zd.real, + ze[ii], + zd[ii].imag, + ze[ii]) + data_1_err[ii] = de1 + data_2_err[ii] = de2 + + elif self.mode == 'zdet': + data_1 = (zdet**0.5).real*np.pi*4e-4 + data_1_err = zdet_err**0.5*np.pi*4e-4 + + data_2 = (zdet**0.5).imag*np.pi*4e-4 + data_2_err = zdet_err**0.5*np.pi*4e-4 + + elif self.mode == 'z': + data_1 = z_obj.z.real*np.pi*4e-4 + data_1_err = z_obj.zerr*np.pi*4e-4 + + data_2 = z_obj.z.imag*np.pi*4e-4 + data_2_err = z_obj.zerr*np.pi*4e-4 + else: + raise IOError('Mode {0} is not supported.'.format(self.mode)) + if rp_tuple is not None: if len(rp_tuple) != 5: raise IOError('Be sure rp_array is correctly formated\n' 'should be freq, res, res_err, phase, phase_err') freq, rho, rho_err, phi, phi_err = rp_tuple - - if 'det' in mode.lower(): - rho = rho[:, 0, 1] - phi = phi[:, 0, 1] - rho_err = rho_err[:, 0, 1] - phi_err = phi_err[:, 0, 1] nf = len(freq) - - - if 'z' in mode.lower(): + + if self.mode in 'te': + data_1 = rho[:, 0, 1] + data_1_err = rho_err[:, 0, 1] + + data_2 = phi[:, 0, 1] + data_2_err = phi_err[:, 0, 1] + + elif self.mode in 'tm': + data_1 = rho[:, 1, 0] + data_1_err = rho_err[:, 1, 0] + + data_2 = phi[:, 1, 0]%180 + data_2_err = phi_err[:, 1, 0] + if 'det' in mode.lower(): - data1, data1_err = (zdet**0.5).real*np.pi*4e-4, zdet_err**0.5*np.pi*4e-4 - data2, data2_err = (zdet**0.5).imag*np.pi*4e-4, zdet_err**0.5*np.pi*4e-4 - else: - data1, data1_err = impz.z.real*np.pi*4e-4, impz.zerr*np.pi*4e-4 - data2, data2_err = impz.z.imag*np.pi*4e-4, impz.zerr*np.pi*4e-4 - dstring1,dstring2 = 'Real','Imag' - else: - data1, data1_err = rho, rho_err - data2, data2_err = phi, phi_err - dstring1,dstring2 = 'Rho','Phs' + data_1 = rho[:, 0, 1] + data_1_err = rho_err[:, 0, 1] + + data_2 = phi[:, 0, 1] + data_2_err = phi_err[:, 0, 1] + if remove_outofquadrant == True: + freq, data_1, data_1_err, data_2, data_2_err = self._remove_outofquadrant_phase( + freq, + data_1, + data_1_err, + data_2, + data_2_err) + nf = len(freq) - # remove data points with phase out of quadrant - if remove_outofquadrant: - if 'det' in mode.lower(): - if 'z' in mode.lower(): - include = (data1/data2 > 0) & (data1/data2 > 0) - else: - include = (phi%180 <= 90) & (phi%180 >= 0) & (phi%180 <= 90) & (phi%180 >= 0) - else: - if 'z' in mode.lower(): - include = (data1[:,0,1]/data2[:,0,1] > 0) & (data1[:,1,0]/data2[:,1,0] > 0) - else: - include = (phi[:,0,1]%180 <= 90) & (phi[:,0,1]%180 >= 0) & (phi[:,1,0]%180 <= 90) & (phi[:,1,0]%180 >= 0) - - freq,data1,data1_err,data2,data2_err = [arr[include] for arr in [freq, data1, data1_err, data2, data2_err]] - nf = len(freq) - # fix any zero errors to 100% of the res value or 90 degrees for phase - data1_err[data1_err==0] = data1[data1_err==0] - if 'z' in mode.lower(): - data2_err[data2_err==0] = data2[data2_err==0] - else: - data2_err[data2_err==0] = 90 - + # ---> get errors-------------------------------------- # set error floors - if 'z' in mode.lower(): + if 'z' in self.mode: if z_errorfloor > 0: - data1_err = np.abs(data1_err) - data1_err[data1_err/np.abs(data1+1j*data2) < z_errorfloor/100.] = np.abs(data1+1j*data2)[data1_err/np.abs(data1+1j*data2) < z_errorfloor/100.]*z_errorfloor/100. - data2_err = data1_err.copy() + data_1_err = np.abs(data_1_err) + test = data_1_err/np.abs(data_1+1j*data_2) < z_errorfloor/100. + data_1_err[test] = np.abs(data_1+1j*data_2)[test]*z_errorfloor/100. + data_2_err = data_1_err.copy() else: if res_errorfloor > 0: - data1_err[data1_err/data1 < res_errorfloor/100.] = data1[data1_err/data1 < res_errorfloor/100.]*res_errorfloor/100. + test = data_1_err/data_1 < res_errorfloor/100. + data_1_err[test] = data_1[test]*res_errorfloor/100. if phase_errorfloor > 0: - data2_err[data2_err < phase_errorfloor] = phase_errorfloor + data_2_err[data_2_err < phase_errorfloor] = phase_errorfloor + + if res_err != 'data': + data_1_err = data_1*res_err/100. + if phase_err != 'data': + data_2_err = np.repeat(phase_err/100*(180/np.pi), nf) + # --> write file #make sure the savepath exists, if not create it if save_path is not None: self.save_path = save_path @@ -326,6 +374,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, self.data_fn = os.path.join(self.save_path, '{0}_{1}.dat'.format(self._data_fn, mode.upper())) + #--> write file as a list of lines dlines = [] dlines.append('Format: EMData_1.1 \n') @@ -340,10 +389,10 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, dlines.append('# Frequencies: {0}\n'.format(nf)) if freq[0] < freq[1]: freq = freq[::-1] - rho = rho[::-1] - phi = phi[::-1] - rho_err = rho_err[::-1] - phi_err = phi_err[::-1] + data_1 = data_1[::-1] + data_2 = data_2[::-1] + data_1_err = data_1_err[::-1] + data_2_err = data_2_err[::-1] for ff in freq: dlines.append(' {0:{1}}\n'.format(ff, self._string_fmt)) @@ -362,132 +411,62 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, # data2 = np.abs(data2) for ii in range(nf): - if 'te' in mode.lower(): - pol = 'xy' - i1,i2 = 0,1 - tetm = True - elif 'tm' in mode.lower(): - pol = 'yx' - i1,i2 = 1,0 - tetm = True -# data1 *= -1 -# data2 *= -1 - else: - tetm = False - - if tetm: - if 'z' in mode.lower(): - d1err,d2err = data1_err[ii, i1, i2],data2_err[ii, i1, i2] - else: - - if res_err == 'data': - d1err = data1_err[ii, i1, i2] - else: - d1err = data1[ii, i1, i2]*res_err/100. - - if phase_err == 'data': - d2err = data2_err[ii, i1, i2] - else: - d2err = phase_err/100*(180/np.pi) - + # write lines + if data_1[ii] != 0.0: + dlines.append(self._ss.join([d1_str, str(ii+1), '0', '1', + '{0:{1}}'.format(data_1[ii], self._string_fmt), + '{0:{1}}\n'.format(data_1_err[ii], self._string_fmt)])) + data_count += 1 + if data_2[ii] != 0.0: + dlines.append(self._ss.join([d2_str, str(ii+1), '0', '1', + '{0:{1}}'.format(data_2[ii],self._string_fmt), + '{0:{1}}\n'.format(data_2_err[ii], self._string_fmt)])) + data_count += 1 - - # write lines - if data1[ii, i1, i2] != 0.0: - dlines.append(self._ss.join([dstring1+'Z'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(data1[ii, i1, i2], self._string_fmt), - '{0:{1}}\n'.format(d1err, self._string_fmt)])) - data_count += 1 - if data2[ii, i1, i2] != 0.0: - dlines.append(self._ss.join([dstring2+'Z'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(data2[ii, i1, i2],self._string_fmt), - '{0:{1}}\n'.format(d2err, self._string_fmt)])) - data_count += 1 - -# elif mode.lower() == 'tm': -# pol = 'yx' -# if res_err == 'data': -# rerr = rho_err[ii, 1, 0] -# else: -# rerr = rho[ii, 1, 0]*res_err/100. -# -# if phase_err == 'data': -# perr = phi_err[ii, 1, 0] -# else: -# perr = phase_err/100*(180/np.pi) -# -# # write lines -# if rho[ii, 1, 0] != 0.0: -# dlines.append(self._ss.join(['RhoZ'+pol, str(ii+1), '0', '1', -# '{0:{1}}'.format(rho[ii, 1, 0],self._string_fmt), -# '{0:{1}}\n'.format(rerr, self._string_fmt)])) -# data_count += 1 -# if phi[ii, 1, 0] != 0.0: -# dlines.append(self._ss.join(['PhsZ'+pol, str(ii+1), '0', '1', -# '{0:{1}}'.format(phi[ii, 1, 0]%90,self._string_fmt), -# '{0:{1}}\n'.format(perr, self._string_fmt)])) -# data_count += 1 - else: - if 'det' in mode.lower(): - pol = 'xy' - if 'z' in mode.lower(): - d1err,d2err = data1_err[ii], data2_err[ii] - else: - if res_err == 'data': - if edi_file is not None: - d1err, d2err = mtedi.MTcc.zerror2r_phi_error(zdet[ii].real, - zdet_err[ii], - zdet[ii].imag, - zdet_err[ii]) - else: - d1err = rho_err[ii] - else: - d1err = rho[ii]*res_err/100. - - if phase_err == 'data': - if edi_file is not None: - d1err, d2err = mtedi.MTcc.zerror2r_phi_error(zdet[ii].real, - zdet_err[ii], - zdet[ii].imag, - zdet_err[ii]) - else: - d2err = phi_err[ii] - else: - d2err = phase_err/100*(180/np.pi) - - - # write lines - if rho[ii] != 0.0: - dlines.append(self._ss.join([dstring1+'Z'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(data1[ii],self._string_fmt), - '{0:{1}}\n'.format(d1err, self._string_fmt)])) - data_count += 1 - if phi[ii] != 0.0: - dlines.append(self._ss.join([dstring2+'Z'+pol, str(ii+1), '0', '1', - '{0:{1}}'.format(data2[ii]%180,self._string_fmt), - '{0:{1}}\n'.format(d2err, self._string_fmt)])) - data_count += 1 + #--> write file + dlines[num_data_line-1] = '# Data:{0}{1}\n'.format(self._ss, data_count) + + with open(self.data_fn, 'w') as dfid: + dfid.writelines(dlines) + print 'Wrote Data File to : {0}'.format(self.data_fn) + if 'z' in mode.lower(): - self.z, self.z_err = data1 + 1j*data2, data1_err + self.z = data_1 + 1j*data_2 + self.z_err = data_1_err else: if 'det' in mode.lower(): - self.res_det = rho - self.phase_det = phi - else: - self.res_te = rho[:,0,1] - self.phase_te = phi[:,0,1] - self.res_tm = rho[:,1,0] - self.phase_tm = phi[:,1,0]%180 + self.res_det = data_1 + self.phase_det = data_2 + elif self.mode == 'te': + self.res_te = data_1 + self.phase_te = data_2 + elif self.mode == 'tm': + self.res_tm = data_1 + self.phase_tm = data_2 self.freq = freq - - #--> write file - dlines[num_data_line-1] = '# Data:{0}{1}\n'.format(self._ss, data_count) - dfid = open(self.data_fn, 'w') - dfid.writelines(dlines) - dfid.close() - print 'Wrote Data File to : {0}'.format(self.data_fn) + + def _remove_outofquadrant_phase(self, freq, d1, d1_err, d2, d2_err): + """ + remove out of quadrant phase from data + """ + # remove data points with phase out of quadrant + if 'z' in self.mode: + include = (d1/d2 > 0) & (d1/d2 > 0) + elif self.mode in ['det', 'te', 'tm']: + include = (d2%180 <= 90) & (d2%180 >= 0) & (d2%180 <= 90) & (d2%180 >= 0) + + newfreq, nd1, nd1_err, nd2, nd2_err = [arr[include] for arr in [freq, + d1, d1_err, d2, d2_err]] + # fix any zero errors to 100% of the res value or 90 degrees for phase + nd1_err[nd1_err == 0] = nd1[nd1_err == 0] + if 'z' in self.mode: + nd2_err[nd2_err == 0] = nd2[nd2_err == 0] + else: + nd2_err[nd2_err == 0] = 90 + + return newfreq, nd1, nd1_err, nd2, nd2_err def read_data_file(self, data_fn=None): """ From 63cebf1775eed85ec4ebc6a06d581c6d3a9c492a Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 15:22:31 -0700 Subject: [PATCH 058/124] fixing occam1d.py write data file is too complex, making it simpler --- mtpy/modeling/occam1d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index c0c099ae..14576e97 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -274,7 +274,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, data_1_err = np.zeros_like(data_1, dtype=np.float) data_2_err = np.zeros_like(data_2, dtype=np.float) for zd, ze, ii in zip(zdet, zdet_err, range(len(zdet))): - de1, de2 = mtcc.zerror2r_phi_error(zd.real, + de1, de2 = mtcc.zerror2r_phi_error(zd[ii].real, ze[ii], zd[ii].imag, ze[ii]) From 9589d05f7c8b5270a78d07475c78c0fb7bbdafbe Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 15:24:26 -0700 Subject: [PATCH 059/124] fixing occam1d.py write data file is too complex, making it simpler --- mtpy/modeling/occam1d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 14576e97..f9eadcf2 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -274,10 +274,10 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, data_1_err = np.zeros_like(data_1, dtype=np.float) data_2_err = np.zeros_like(data_2, dtype=np.float) for zd, ze, ii in zip(zdet, zdet_err, range(len(zdet))): - de1, de2 = mtcc.zerror2r_phi_error(zd[ii].real, - ze[ii], - zd[ii].imag, - ze[ii]) + de1, de2 = mtcc.zerror2r_phi_error(zd.real, + ze, + zd.imag, + ze) data_1_err[ii] = de1 data_2_err[ii] = de2 From 16020c459f2f61ae366513d02ef9cb436022a161 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 15:31:27 -0700 Subject: [PATCH 060/124] fixing occam1d.py write data file is too complex, making it simpler --- mtpy/modeling/occam1d.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index f9eadcf2..59d82730 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -353,7 +353,8 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, if res_err != 'data': data_1_err = data_1*res_err/100. if phase_err != 'data': - data_2_err = np.repeat(phase_err/100*(180/np.pi), nf) + data_2_err = np.repeat(phase_err/100.*(180/np.pi), nf) + print data_2_err # --> write file #make sure the savepath exists, if not create it @@ -431,6 +432,8 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, print 'Wrote Data File to : {0}'.format(self.data_fn) + #--> set attributes + if 'z' in mode.lower(): self.z = data_1 + 1j*data_2 self.z_err = data_1_err From d35ad244d9a231a1f8075fc7392296f923093360 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 16:10:21 -0700 Subject: [PATCH 061/124] Making occam1d_gui a little smoother to use --- mtpy/gui/occam1d_gui.py | 8 ++++++++ mtpy/modeling/occam1d.py | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index e9e5105f..4c920053 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -441,6 +441,14 @@ def set_phase_err(self): def set_data_mode(self, text): self.data_mode = str(text) + self.occam_data.write_data_file(edi_file=self.edi_fn, + save_path=self.save_dir, + mode=self.data_mode, + res_err=self.res_err, + phase_err=self.phase_err, + thetar=0) + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) + def set_ss(self): self.ss = float(str(self.data_ss_edit.text())) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 59d82730..21529f70 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -354,7 +354,6 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, data_1_err = data_1*res_err/100. if phase_err != 'data': data_2_err = np.repeat(phase_err/100.*(180/np.pi), nf) - print data_2_err # --> write file #make sure the savepath exists, if not create it From acbcf2312c9d4a9f7a97de9fd40fdda93b97f79a Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 16:17:47 -0700 Subject: [PATCH 062/124] fixing occam1d.py to write each mode correctly --- mtpy/modeling/occam1d.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 21529f70..501dd554 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -142,6 +142,9 @@ def __init__(self, data_fn=None, **kwargs): self.phase_tm = None self.resp_fn = None + for key in kwargs.keys(): + setattr(self, key, kwargs[key]) + def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, mode='det', res_err='data', phase_err='data', thetar=0, res_errorfloor = 0., phase_errorfloor = 0., z_errorfloor=0., @@ -251,6 +254,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, if self.mode == 'te': data_1 = z_obj.resistivity[:, 0, 1] data_1_err = z_obj.resistivity_err[:, 0, 1] + print data_1 data_2 = z_obj.phase[:, 0, 1] data_2_err = z_obj.phase_err[:, 0, 1] @@ -288,12 +292,19 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, data_2 = (zdet**0.5).imag*np.pi*4e-4 data_2_err = zdet_err**0.5*np.pi*4e-4 - elif self.mode == 'z': - data_1 = z_obj.z.real*np.pi*4e-4 - data_1_err = z_obj.zerr*np.pi*4e-4 + elif self.mode == 'tez': + data_1 = z_obj.z[:, 0, 1].real*np.pi*4e-4 + data_1_err = z_obj.zerr[:, 0, 1]*np.pi*4e-4 + + data_2 = z_obj.z[:, 0, 1].imag*np.pi*4e-4 + data_2_err = z_obj.zerr[:, 0, 1]*np.pi*4e-4 + + elif self.mode == 'tmz': + data_1 = z_obj.z[:, 1, 0].real*np.pi*4e-4 + data_1_err = z_obj.zerr[:, 1, 0]*np.pi*4e-4 - data_2 = z_obj.z.imag*np.pi*4e-4 - data_2_err = z_obj.zerr*np.pi*4e-4 + data_2 = z_obj.z[:, 1, 0].imag*np.pi*4e-4 + data_2_err = z_obj.zerr[:, 1, 0]*np.pi*4e-4 else: raise IOError('Mode {0} is not supported.'.format(self.mode)) From b18778104c7efa6ae910f3193d209aaf3497049a Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 16:23:55 -0700 Subject: [PATCH 063/124] fixing occam1d.py write data file is too complex, making it simpler --- mtpy/modeling/occam1d.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 501dd554..864b12c2 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -241,6 +241,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, #read in edifile edi_obj = mtedi.Edi(edi_file) z_obj = edi_obj.Z + z_obj._compute_res_phase() # get frequencies to invert freq = z_obj.freq @@ -250,6 +251,8 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, if thetar != 0: z_obj.rotate(thetar) + z_obj._compute_res_phase() + # get the data requested by the given mode if self.mode == 'te': data_1 = z_obj.resistivity[:, 0, 1] From f18790fb9bfe4dc495777a5227339d4f555e0311 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 16:25:56 -0700 Subject: [PATCH 064/124] occam1d.py now produces det, te, tm modes correctly --- mtpy/modeling/occam1d.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 864b12c2..2fe5a026 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -250,14 +250,14 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, #rotate if necessary if thetar != 0: z_obj.rotate(thetar) - + + # be sure to compute resistivity and phase z_obj._compute_res_phase() # get the data requested by the given mode if self.mode == 'te': data_1 = z_obj.resistivity[:, 0, 1] data_1_err = z_obj.resistivity_err[:, 0, 1] - print data_1 data_2 = z_obj.phase[:, 0, 1] data_2_err = z_obj.phase_err[:, 0, 1] From 544e08f3ac68a68c488bab22810f533172197d53 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 17:38:34 -0700 Subject: [PATCH 065/124] added rotation to occam1d_gui and moved iteration combo box to near run buttons --- mtpy/gui/occam1d_gui.py | 71 +++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/mtpy/gui/occam1d_gui.py b/mtpy/gui/occam1d_gui.py index 4c920053..a71986a3 100644 --- a/mtpy/gui/occam1d_gui.py +++ b/mtpy/gui/occam1d_gui.py @@ -151,7 +151,8 @@ def __init__(self): self.occam_model = occam1d.Model() self.occam_startup = occam1d.Startup() self.occam_exec = '' - self.mpl_widget = OccamPlot() + self.mpl_widget = OccamPlot() + self.mpl_widget.depth_limits = (0, self.occam_model.target_depth) self.l2_widget = PlotL2() self.l2_widget.l2_widget.mpl_connect('pick event', self.on_click) @@ -163,6 +164,7 @@ def __init__(self): self.data_mode = 'Det' self.edi_fn = '' self.ss = 1.0 + self.rotation_angle = 0.0 self.save_dir = None self.station_dir = None @@ -221,6 +223,10 @@ def setup_ui(self): self.data_ss_edit.setText('{0:.2f}'.format(self.ss)) self.data_ss_edit.editingFinished.connect(self.set_ss) + self.data_rotate_label = QtGui.QLabel("Rotation Angle (N=0, E=90)") + self.data_rotate_edit = QtGui.QLineEdit('{0:.2f}'.format(self.rotation_angle)) + self.data_rotate_edit.editingFinished.connect(self.set_rotation_angle) + # vertical layer parameters self.model_label = QtGui.QLabel('Model Parameters') self.model_label.setFont(label_font) @@ -274,7 +280,7 @@ def setup_ui(self): self.start_lagrange_edit.setText('{0:.2f}'.format(self.occam_startup.start_lagrange)) self.start_lagrange_edit.editingFinished.connect(self.set_start_lagrange) - self.iter_combo_label = QtGui.QLabel('Iteration') + self.iter_combo_label = QtGui.QLabel('Plot Iteration') self.iter_combo_edit = QtGui.QComboBox() self.iter_combo_edit.addItem('1') self.iter_combo_edit.activated[str].connect(self.set_iteration) @@ -303,6 +309,9 @@ def setup_ui(self): data_grid.addWidget(self.data_ss_button, 4, 0) data_grid.addWidget(self.data_ss_edit, 4, 1) + data_grid.addWidget(self.data_rotate_label, 5, 0) + data_grid.addWidget(self.data_rotate_edit, 5, 1) + model_grid = QtGui.QGridLayout() model_grid.addWidget(self.model_label, 0, 0) @@ -348,6 +357,8 @@ def setup_ui(self): run_layout = QtGui.QHBoxLayout() run_layout.addWidget(run_button) run_layout.addWidget(run_button_edits) + run_layout.addWidget(self.iter_combo_label) + run_layout.addWidget(self.iter_combo_edit) edi_layout = QtGui.QHBoxLayout() edi_layout.addWidget(self.get_edi_button) @@ -363,8 +374,8 @@ def setup_ui(self): edit_layout.addLayout(run_layout) bottom_plot_layout = QtGui.QHBoxLayout() - bottom_plot_layout.addWidget(self.iter_combo_label) - bottom_plot_layout.addWidget(self.iter_combo_edit) +# bottom_plot_layout.addWidget(self.iter_combo_label) +# bottom_plot_layout.addWidget(self.iter_combo_edit) bottom_plot_layout.addWidget(self.l2_widget) plot_layout = QtGui.QGridLayout() @@ -427,7 +438,7 @@ def get_edi_file(self): mode=self.data_mode, res_err=self.res_err, phase_err=self.phase_err, - thetar=0) + thetar=self.rotation_angle) self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) @@ -446,7 +457,7 @@ def set_data_mode(self, text): mode=self.data_mode, res_err=self.res_err, phase_err=self.phase_err, - thetar=0) + thetar=self.rotation_angle) self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) @@ -463,6 +474,19 @@ def apply_ss(self): self.rewrite_data_file() self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) + def set_rotation_angle(self): + self.rotation_angle = float(str(self.data_rotate_edit.text())) + self.data_rotate_edit.setText('{0:.2f}'.format(self.rotation_angle)) + + self.occam_data.write_data_file(edi_file=self.edi_fn, + save_path=self.save_dir, + mode=self.data_mode, + res_err=self.res_err, + phase_err=self.phase_err, + thetar=self.rotation_angle) + + self.mpl_widget.plot_data(data_fn=self.occam_data.data_fn) + def set_n_layers(self): self.occam_model.n_layers = int(str(self.n_layers_edit.text())) self.n_layers_edit.setText('{0:.0f}'.format(self.occam_model.n_layers)) @@ -474,6 +498,7 @@ def set_z1_layer(self): def set_z_target(self): self.occam_model.target_depth = float(str(self.z_target_edit.text())) self.z_target_edit.setText('{0:.2f}'.format(self.occam_model.target_depth)) + self.mpl_widget.depth_limits = (0, self.occam_model.target_depth) def set_z_bottom(self): self.occam_model.bottom_layer = float(str(self.z_bottom_edit.text())) @@ -534,7 +559,7 @@ def run_occam(self): mode=self.data_mode, res_err=self.res_err, phase_err=self.phase_err, - thetar=0) + thetar=self.rotation_angle) # write model file self.occam_model.write_model_file(save_path=self.save_dir) @@ -738,7 +763,7 @@ def __init__(self): self.res_limits = None self.phase_limits = None - self.depth_scale = 'log' + self.depth_scale = 'linear' self.depth_units = 'km' self.depth_limits = None @@ -1074,15 +1099,27 @@ def plot_data(self, data_fn=None, resp_fn=None, model_fn=None, color='b', lw=self.lw) - #if self.depth_limits == None: - dmin = min(plot_depth) - if dmin == 0: - dmin = 1 - dmax = max(plot_depth) - self.depth_limits = (dmin, dmax) - - self.axm.set_ylim(ymin=max(self.depth_limits), - ymax=min(self.depth_limits)) + if self.depth_limits == None: + dmin = min(plot_depth) + if dmin == 0: + dmin = 1 + dmax = max(plot_depth) + self.depth_limits = (dmin, dmax) + + if max(self.depth_limits) > plot_depth.max(): + if self.depth_scale == 'log': + self.axm.set_ylim(ymin=max(self.depth_limits)/dscale, + ymax=max([1, min(self.depth_limits)/dscale])) + else: + self.axm.set_ylim(ymin=max(self.depth_limits)/dscale, + ymax=min(self.depth_limits)/dscale) + else: + if self.depth_scale == 'log': + self.axm.set_ylim(ymin=max(self.depth_limits), + ymax=max([1, min(self.depth_limits)])) + else: + self.axm.set_ylim(ymin=max(self.depth_limits), + ymax=min(self.depth_limits)) if self.depth_scale == 'log': self.axm.set_yscale('log') From 973f6ed159f5a2820b1df88ef7284650875aa233 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 13 Apr 2016 22:01:23 -0700 Subject: [PATCH 066/124] added rotation to occam1d_gui and moved iteration combo box to near run buttons --- mtpy/modeling/pek1dclasses.py | 10 ++++------ mtpy/modeling/ws3dinv.py | 3 +-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/mtpy/modeling/pek1dclasses.py b/mtpy/modeling/pek1dclasses.py index 2897917e..e1349358 100644 --- a/mtpy/modeling/pek1dclasses.py +++ b/mtpy/modeling/pek1dclasses.py @@ -216,15 +216,13 @@ def build_data(self): """ # read edi file to edi object - eo = mtedi.Edi() - eo.readfile(self.edipath) - self.edi_object = eo + self.edi_object = mtedi.Edi(self.edipath) # define z - zr = np.real(eo.Z.z) + zr = np.real(self.edi_object.Z.z) # sign of imaginary component needs to be reversed for the pek1d inversion code - zi = -np.imag(eo.Z.z) - ze = eo.Z.zerr + zi = -np.imag(self.edi_object.Z.z) + ze = self.edi_object.Z.zerr z = zr + 1j*zi # set errorfloors diff --git a/mtpy/modeling/ws3dinv.py b/mtpy/modeling/ws3dinv.py index 2b223abf..953eab08 100644 --- a/mtpy/modeling/ws3dinv.py +++ b/mtpy/modeling/ws3dinv.py @@ -1046,8 +1046,7 @@ def make_mesh(self): ('elev', np.float)]) #get station locations in meters for ii, edi in enumerate(self.edi_list): - zz = mtedi.Edi() - zz.readfile(edi) + zz = mtedi.Edi(edi) zone, east, north = ll2utm.LLtoUTM(23, zz.lat, zz.lon) self.station_locations[ii]['station'] = zz.station self.station_locations[ii]['east'] = east From 9d0be0a4165a13f8a078d82c7e06ae66ae8a1354 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 16:33:30 -0700 Subject: [PATCH 067/124] working on a modem_mesh_builder --- mtpy/gui/modem_main.py | 136 ------------ mtpy/gui/modem_mesh_builder.py | 370 ++++++++++++++++++--------------- 2 files changed, 200 insertions(+), 306 deletions(-) delete mode 100644 mtpy/gui/modem_main.py diff --git a/mtpy/gui/modem_main.py b/mtpy/gui/modem_main.py deleted file mode 100644 index 30d92e0c..00000000 --- a/mtpy/gui/modem_main.py +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Created on Sun Nov 02 13:47:10 2014 - -@author: jrpeacock -""" - -from PyQt4 import QtCore, QtGui -import mtpy.modeling.modem_new as modem -from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas -from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar -from matplotlib.figure import Figure -from matplotlib.patches import Ellipse -import mtpy.imaging.mtplottools as mtplottools -import matplotlib.gridspec as gridspec -import matplotlib.colors as colors -import numpy as np -import matplotlib.pyplot as plt -import os -import mtpy.analysis.pt as mtpt -import mtpy.utils.exceptions as mtex -from matplotlib.colors import Normalize -import matplotlib.colorbar as mcb -import mtpy.imaging.mtcolors as mtcl -import mtpy.gui.get_edi_files as mt_get_edi_files - -class ModEM_Main_Window(QtGui.QMainWindow): - """ - main window for building a mesh for ModEM - - """ - - def __init__(self): - super(ModEM_Main_Window, self).__init__() - - self.ui_setup() - - def ui_setup(self): - - self.setWindowTitle("Make ModEM Data and Model Files") - self.resize(1920, 1080) - - #make a widget that will be the station list - self.list_widget = QtGui.QListWidget() - self.list_widget.itemClicked.connect(self.get_period) - self.list_widget.setMaximumWidth(150) - - # add a menu bar to the top of the window - self.menu_bar = QtGui.QMenuBar(self) - self.menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 38)) - self.menu_bar.setObjectName("menu_bar") - - #----------> DATA ------------------------------------- - # add a tab for getting data file. - self.menu_data = QtGui.QMenu(self.menu_bar) - self.menu_data.setTitle("Data File") - - # create an action to the data tab - self.action_data_open = QtGui.QAction(self) - self.action_data_open.setText('Open') - self.action_data_open.triggered.connect(self.get_data_fn) - - # add the action to the data tap - self.menu_data.addAction(self.action_data_open) - self.menu_bar.addAction(self.menu_data.menuAction()) - - #----------> Model ------------------------------------- - self.menu_model = QtGui.QMenu(self.menu_bar) - self.menu_model.setTitle("Model File") - - # create an action to the model tab - self.action_model_open = QtGui.QAction(self) - self.action_model_open.setText('Open') - self.action_model_open.triggered.connect(self.get_model_fn) - - # add the action to the model tap - self.menu_model.addAction(self.action_model_open) - self.menu_bar.addAction(self.menu_model.menuAction()) - - self.setMenuBar(self.menu_bar) - - QtCore.QMetaObject.connectSlotsByName(self) - - def get_data_fn(self): - """ - get the filename from a file dialogue - - """ - - fn_dialog = QtGui.QFileDialog() - fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM data file', - filter='(*.dat);; (*.data)')) - - self.modem_data = modem.Data() - self.modem_data.read_data_file(fn) - self.modem_data_fn = fn - - self.dir_path = os.path.dirname(fn) - - self.period_list = sorted(self.modem_data.period_list) - self.period_dict = dict([('{0:.5f}'.format(key), value) for value, key - in enumerate(self.period_list)]) - - self.list_widget.clear() - - #this will add the station name for each station to the qwidget list - for period in self.period_list: - self.list_widget.addItem('{0:.5f}'.format(period)) - - self.plot_period = self.period_list[0] - - def get_period(self, widget_item): - """ - get the station name from the clicked station - """ - self.plot_period = str(widget_item.text()) - -#def main(): - -def main(): -#if __name__ == "__main__": - import sys - app = QtGui.QApplication(sys.argv) - ui = ModEM_Main_Window() - ui.ui_setup() - ui.show() - sys.exit(app.exec_()) - -if __name__ == '__main__': - - main() - - - - - \ No newline at end of file diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 05b9451d..86d192c6 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -49,7 +49,7 @@ def __init__(self): self.period_list = [] self.period_dict = {} - self.modem_model = modem.Model() + #self.model_obj = modem.Model() self.ui_setup() @@ -58,17 +58,77 @@ def ui_setup(self): set up the user interface """ self.setWindowTitle("Build a mesh for ModEM") - self.resize(1920, 1080) + self.setWindowState(QtCore.Qt.WindowMaximized) self.mesh_widget = MeshWidget() self.central_widget = self.setCentralWidget(self.mesh_widget) - #self.central_widget.setLayout(self.v_layout) + + #-------------- MENU BAR --------------------------------- + # add a menu bar to the top of the window + self.menu_data_file = self.menuBar().addMenu("Data &File") + self.menu_data_open_action = self.menu_data_file.addAction("Open") + self.menu_data_open_action.triggered.connect(self.get_data_fn) + + self.menu_model_file = self.menuBar().addMenu("&Model File") + self.menu_model_open_action = self.menu_model_file.addAction("Open") + self.menu_model_open_action.triggered.connect(self.get_model_fn) + + self.menu_model_save_action = self.menu_model_file.addAction("Save") + self.menu_model_save_action.triggered.connect(self.save_model_fn) + + #------------Output stream box------------------------------------- self.my_stream = MyStream() self.my_stream.message.connect(self.mesh_widget.normal_output) sys.stdout = self.my_stream QtCore.QMetaObject.connectSlotsByName(self) + + def get_data_fn(self): + """ + get the filename from a file dialogue + + """ + + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM data file', + filter='(*.dat);; (*.data)')) + + self.mesh_widget.modem_data = modem.Data() + self.mesh_widget.modem_data.read_data_file(fn) + self.mesh_widget.modem_data_fn = fn + + self.mesh_widget.dir_path = os.path.dirname(fn) + + + def get_model_fn(self): + """ + read in an existing model file + """ + + fn_dialog = QtGui.QFileDialog() + fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM model file', + filter='*.rho')) + + self.mesh_widget.model_obj = modem.Model() + self.mesh_widget.model_obj.read_model_file(fn) + + self.mesh_widget.dir_path = os.path.dirname(fn) + + def save_model_fn(self): + """ + save the current mesh settings to a file + """ + + fn_dialog = QtGui.QFileDialog() + save_fn = str(fn_dialog.getSaveFileName( + caption='Choose ModEM model file', + filter='*.rho')) + + sv_path = os.path.dirname(save_fn) + sv_basename = os.path.basename(save_fn) + self.mesh_widget.model_obj.write_model_file(save_path=sv_path, + model_fn_basename=sv_basename) #============================================================================== # Mesh widget @@ -90,11 +150,7 @@ def __init__(self): def setup_ui(self): # get edi files self.edi_button = QtGui.QPushButton('Get EDI Files') - self.edi_button.clicked.connect(self.get_edi_files) - - self.list_widget = QtGui.QListWidget() - self.list_widget.itemClicked.connect(self.select_station) - self.list_widget.setMaximumWidth(200) + self.edi_button.clicked.connect(self.load_edi_files) self.plot_mesh_button = QtGui.QPushButton('Make Mesh') self.plot_mesh_button.clicked.connect(self.plot_mesh) @@ -102,7 +158,6 @@ def setup_ui(self): self.save_mesh_button = QtGui.QPushButton('Save Mesh') self.save_mesh_button.clicked.connect(self.save_mesh) - self.output_box = QtGui.QTextEdit() #make a label for the mesh parameters @@ -187,174 +242,82 @@ def setup_ui(self): self.rho_start_edit.editingFinished.connect(self.set_rho) #--- Set the layout ---------- - self.edi_grid = QtGui.QVBoxLayout() - self.edi_grid.addWidget(self.edi_button) - self.edi_grid.addWidget(self.list_widget) + edi_layout = QtGui.QVBoxLayout() + edi_layout.addWidget(self.edi_button) - self.grid_layout = QtGui.QGridLayout() + param_layout = QtGui.QGridLayout() - self.grid_layout.addWidget(self.plot_mesh_button, 0, 0) - self.grid_layout.addWidget(self.save_mesh_button, 0, 1) + param_layout.addWidget(self.plot_mesh_button, 0, 0) + param_layout.addWidget(self.save_mesh_button, 0, 1) - self.grid_layout.addWidget(self.parameters_label, 2, 0, 1, 2) + param_layout.addWidget(self.parameters_label, 2, 0, 1, 2) - self.grid_layout.addWidget(self.cell_size_label_east, 3, 0) - self.grid_layout.addWidget(self.cell_size_edit_east, 3, 1) + param_layout.addWidget(self.cell_size_label_east, 3, 0) + param_layout.addWidget(self.cell_size_edit_east, 3, 1) - self.grid_layout.addWidget(self.cell_size_label_north, 4, 0) - self.grid_layout.addWidget(self.cell_size_edit_north, 4, 1) + param_layout.addWidget(self.cell_size_label_north, 4, 0) + param_layout.addWidget(self.cell_size_edit_north, 4, 1) - self.grid_layout.addWidget(self.cell_pad_label_east, 5, 0) - self.grid_layout.addWidget(self.cell_pad_east_edit, 5, 1) + param_layout.addWidget(self.cell_pad_label_east, 5, 0) + param_layout.addWidget(self.cell_pad_east_edit, 5, 1) - self.grid_layout.addWidget(self.cell_pad_label_north, 6, 0) - self.grid_layout.addWidget(self.cell_pad_north_edit, 6, 1) + param_layout.addWidget(self.cell_pad_label_north, 6, 0) + param_layout.addWidget(self.cell_pad_north_edit, 6, 1) - self.grid_layout.addWidget(self.cell_pad_label_z, 7, 0) - self.grid_layout.addWidget(self.cell_pad_z_edit, 7, 1) + param_layout.addWidget(self.cell_pad_label_z, 7, 0) + param_layout.addWidget(self.cell_pad_z_edit, 7, 1) - self.grid_layout.addWidget(self.pad_h_label, 8, 0) - self.grid_layout.addWidget(self.pad_h_edit, 8, 1) + param_layout.addWidget(self.pad_h_label, 8, 0) + param_layout.addWidget(self.pad_h_edit, 8, 1) - self.grid_layout.addWidget(self.pad_v_label, 9, 0 ) - self.grid_layout.addWidget(self.pad_v_edit, 9, 1) + param_layout.addWidget(self.pad_v_label, 9, 0 ) + param_layout.addWidget(self.pad_v_edit, 9, 1) - self.grid_layout.addWidget(self.n_layers_label, 10, 0) - self.grid_layout.addWidget(self.n_layers_edit, 10, 1) + param_layout.addWidget(self.n_layers_label, 10, 0) + param_layout.addWidget(self.n_layers_edit, 10, 1) - self.grid_layout.addWidget(self.z1_layer_label, 11, 0) - self.grid_layout.addWidget(self.z1_layer_edit, 11, 1) + param_layout.addWidget(self.z1_layer_label, 11, 0) + param_layout.addWidget(self.z1_layer_edit, 11, 1) - self.grid_layout.addWidget(self.z_target_label, 12, 0) - self.grid_layout.addWidget(self.z_target_edit, 12, 1) + param_layout.addWidget(self.z_target_label, 12, 0) + param_layout.addWidget(self.z_target_edit, 12, 1) - self.grid_layout.addWidget(self.z_bottom_label, 13, 0) - self.grid_layout.addWidget(self.z_bottom_edit, 13, 1) + param_layout.addWidget(self.z_bottom_label, 13, 0) + param_layout.addWidget(self.z_bottom_edit, 13, 1) - self.grid_layout.addWidget(self.rot_ang_label, 14, 0) - self.grid_layout.addWidget(self.rot_ang_edit, 14, 1) - self.grid_layout.addWidget(self.rot_ang_hint, 15, 1) + param_layout.addWidget(self.rot_ang_label, 14, 0) + param_layout.addWidget(self.rot_ang_edit, 14, 1) + param_layout.addWidget(self.rot_ang_hint, 15, 1) - self.grid_layout.addWidget(self.rho_start_label, 16, 0) - self.grid_layout.addWidget(self.rho_start_edit, 16, 1) -# self.grid_layout.addWidget(self.rot_ang_hint, 11, 2) - - self.setWindowTitle('Make ModEM Mesh') - self.resize(1920, 1080) - - #-------------- MENU BAR --------------------------------- - # add a menu bar to the top of the window - menu_bar = QtGui.QMenuBar(self) - menu_bar.setGeometry(QtCore.QRect(0, 0, 1920, 38)) - menu_bar.setObjectName("menu_bar") - - # --> Data - menu_data = QtGui.QMenu(menu_bar) - menu_data.setTitle("Data File") - - # create an action to the data tab - action_data_open = QtGui.QAction(self) - action_data_open.setText('Open') - action_data_open.triggered.connect(self.get_data_fn) + param_layout.addWidget(self.rho_start_label, 16, 0) + param_layout.addWidget(self.rho_start_edit, 16, 1) - # add the action to the data tap - menu_data.addAction(action_data_open) - menu_bar.addAction(menu_data.menuAction()) - - #----------> Model ------------------------------------- - menu_model = QtGui.QMenu(menu_bar) - menu_model.setTitle("Model File") - - # create an action to the model tab - action_model_open = QtGui.QAction(self) - action_model_open.setText('Open') - action_model_open.triggered.connect(self.get_model_fn) - - action_model_save = QtGui.QAction(self) - action_model_save.setText('Save') - action_model_save.triggered.connect(self.save_model_fn) - - # add the action to the model tap - menu_model.addAction(action_model_open) - menu_bar.addAction(menu_model.menuAction()) - - #self.setMenuBar(menu_bar) - - #------------------Layout of main window------------------------------ - #need to have a central widget - self.central_widget = QtGui.QWidget() - self.setCentralWidget(self.central_widget) - - #--> list widget - self.list_qmodel = QtGui.QStandardItemModel() - # make a widget that will be the station list - self.list_widget = QtGui.QListWidget() - self.list_widget.itemSelectionChanged - self.list_widget.itemClicked.connect(self.locate_station) - self.list_widget.setMaximumWidth(150) - - #Load edi button - load_edi_button = QtGui.QPushButton('Load .edi Files') - load_edi_button.clicked.connect(self.load_edi_files) - - edi_layout = QtGui.QVBoxLayout() - edi_layout.addWidget(self.list_widget) - edi_layout.addWidget(load_edi_button) - - #add edit fields for mesh properties - cell_size_label = QtGui.QLabel('Cell Size [East, North] (m)') - cell_size_east_edit = QtGui.QLineEdit() - cell_size_east_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_east)) - cell_size_east_edit.textChanged[str].connect(self.set_cell_size_east) - - cell_size_north_edit = QtGui.QLineEdit() - cell_size_north_edit.setText('{0:.2f}'.format(self.modem_model.cell_size_north)) - cell_size_north_edit.textChanged[str].connect(self.set_cell_size_north) - - cell_size_grid = QtGui.QHBoxLayout() - cell_size_grid.addWidget(cell_size_label) - cell_size_grid.addWidget(cell_size_east_edit) - cell_size_grid.addWidget(cell_size_north_edit) # this is the Canvas Widget that displays the `figure` # it takes the `figure` instance as a parameter to __init__ - self.figure = Figure(dpi=150) - self.mpl_widget = FigureCanvas(self.figure) + self.mpl_widget = MeshPlot() -# self.figure.subplots_adjust(left=self.subplot_left, -# right=self.subplot_right, -# bottom=self.subplot_bottom, -# top=self.subplot_top, -# hspace=self.subplot_hspace, -# wspace=self.subplot_wspace) - - #make sure the figure takes up the entire plottable space - self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, - QtGui.QSizePolicy.Expanding) - - # this is the Navigation widget - # it takes the Canvas widget and a parent - self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) - - # set the layout for the plot - mpl_vbox = QtGui.QVBoxLayout() - mpl_vbox.addWidget(self.mpl_toolbar) - mpl_vbox.addWidget(self.mpl_widget) - mpl_vbox.addLayout(cell_size_grid) + left_layout = QtGui.QVBoxLayout() + left_layout.addLayout(edi_layout) + left_layout.addLayout(param_layout) + left_layout.addWidget(self.output_box) # set the layout the main window layout = QtGui.QHBoxLayout() - layout.addLayout(edi_layout) - layout.addLayout(mpl_vbox) - self.central_widget.setLayout(layout) + layout.addLayout(left_layout) + layout.addWidget(self.mpl_widget) + self.setLayout(layout) #set the geometry of each widget - self.list_widget.setObjectName("listWidget") - self.mpl_widget.setObjectName("mpl_widget") self.mpl_widget.updateGeometry() QtCore.QMetaObject.connectSlotsByName(self) + @QtCore.pyqtSlot(str) + def normal_output(self, message): + self.output_box.moveCursor(QtGui.QTextCursor.End) + self.output_box.insertPlainText(message) + def get_data_fn(self): """ get the filename from a file dialogue @@ -394,8 +357,8 @@ def get_model_fn(self): fn = str(fn_dialog.getOpenFileName(caption='Choose ModEM model file', filter='*.rho')) - self.modem_model = modem.Model() - self.modem_model.read_model_file(fn) + self.model_obj = modem.Model() + self.model_obj.read_model_file(fn) self.dir_path = os.path.dirname(fn) @@ -411,7 +374,7 @@ def save_model_fn(self): sv_path = os.path.dirname(save_fn) sv_basename = os.path.basename(save_fn) - self.modem_model.write_model_file(save_path=sv_path, + self.model_obj.write_model_file(save_path=sv_path, model_fn_basename=sv_basename) @@ -424,22 +387,28 @@ def get_period(self, widget_item): """ self.plot_period = str(widget_item.text()) - def get_edi_files(self): - edi_obj = Get_EDI_Files() - self.edi_list = edi_obj.edi_list + def load_edi_files(self): + fn_list = QtGui.QFileDialog().getOpenFileNames( + caption='Choose EDI Files', + filter='*.edi') + self.edi_list = [] + for fn in fn_list: + self.edi_list.append(str(fn)) - self.modem_model = modem.Model(edi_list=self.edi_list) + self.model_obj = modem.Model(edi_list=self.edi_list) - self.modem_model.get_station_locations() + self.model_obj.get_station_locations() - #self.make_checkable_list(self.modem_model.station_locations['station']) + self.mpl_widget.plot_mesh(self.model_obj) - for station in self.modem_model.station_locations['station']: - item = QtGui.QListWidgetItem() - item.setText(station) - item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) - item.setCheckState(QtCore.Qt.Checked) - self.list_widget.addItem(item) +# #self.make_checkable_list(self.model_obj.station_locations['station']) +# +# for station in self.model_obj.station_locations['station']: +# item = QtGui.QListWidgetItem() +# item.setText(station) +# item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) +# item.setCheckState(QtCore.Qt.Checked) +# self.list_widget.addItem(item) def set_cell_size_east(self): self.model_obj.cell_size_east = float(str(self.cell_size_edit_east.text())) @@ -545,35 +514,92 @@ def __init__(self): self.fs = 10 + self.line_mode = 'add_h' + self.setup_ui() def setup_ui(self): + - self.figure = Figure(dpi=300) - self.mpl_widget = FigureCanvas(self.figure) - + self.figure = Figure(dpi=150) self.figure.subplots_adjust(left=self.subplot_left, right=self.subplot_right, bottom=self.subplot_bottom, top=self.subplot_top, hspace=self.subplot_hspace, wspace=self.subplot_wspace) - - #make sure the figure takes up the entire plottable space + + + self.mpl_widget = FigureCanvas(self.figure) + + self.mpl_widget.mpl_connect('pick_event', self.on_pick) + self.mpl_widget.mpl_connect('axes_enter_event', self.in_axes) + self.mpl_widget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + screen = QtGui.QDesktopWidget().screenGeometry() + self.mpl_widget.setMinimumWidth(screen.width()*(1600./1920)) - # this is the Navigation widget - # it takes the Canvas widget and a parent self.mpl_toolbar = NavigationToolbar(self.mpl_widget, self) + + + ## --> buttons for removing, adding lines + self.line_add_h_button = QtGui.QPushButton("Add Horizontal Line") + self.line_add_h_button.pressed.connect(self.line_set_add_h) + + self.line_add_v_button = QtGui.QPushButton("Add Vertical Line") + self.line_add_v_button.pressed.connect(self.line_set_add_v) + + self.line_del_h_button = QtGui.QPushButton("Remove Horizontal Line") + self.line_del_h_button.pressed.connect(self.line_set_del_h) + + self.line_del_v_button = QtGui.QPushButton("Remove Vertical Line") + self.line_del_v_button.pressed.connect(self.line_set_del_v) + # set the layout for the plot + line_layout = QtGui.QHBoxLayout() + line_layout.addWidget(self.line_add_h_button) + line_layout.addWidget(self.line_add_v_button) + line_layout.addWidget(self.line_del_h_button) + line_layout.addWidget(self.line_del_v_button) + mpl_vbox = QtGui.QVBoxLayout() mpl_vbox.addWidget(self.mpl_toolbar) mpl_vbox.addWidget(self.mpl_widget) + mpl_vbox.addLayout(line_layout) self.setLayout(mpl_vbox) self.mpl_widget.updateGeometry() + + def line_set_add_h(self): + self.line_mode = 'add_h' + self.line_add_h_button.setStyleSheet("background-color: red") + self.line_add_v_button.setStyleSheet("background-color: None") + self.line_del_h_button.setStyleSheet("background-color: None") + self.line_del_v_button.setStyleSheet("background-color: None") + + def line_set_add_v(self): + self.line_mode = 'add_v' + self.line_add_h_button.setStyleSheet("background-color: None") + self.line_add_v_button.setStyleSheet("background-color: red") + self.line_del_h_button.setStyleSheet("background-color: None") + self.line_del_v_button.setStyleSheet("background-color: None") + + def line_set_del_h(self): + self.line_mode = 'del_h' + self.line_add_h_button.setStyleSheet("background-color: None") + self.line_add_v_button.setStyleSheet("background-color: None") + self.line_del_h_button.setStyleSheet("background-color: red") + self.line_del_v_button.setStyleSheet("background-color: None") + + def line_set_del_v(self): + self.line_mode = 'del_v' + self.line_add_h_button.setStyleSheet("background-color: None") + self.line_add_v_button.setStyleSheet("background-color: None") + self.line_del_h_button.setStyleSheet("background-color: None") + self.line_del_v_button.setStyleSheet("background-color: red") + def plot_mesh(self, model_obj, east_limits=None, north_limits=None, z_limits=None): @@ -724,6 +750,11 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, self.mpl_widget.draw() + def on_pick(self): + pass + + def in_axes(self): + pass #============================================================================== # DEFINE MAIN #============================================================================== @@ -731,7 +762,6 @@ def main(): import sys app = QtGui.QApplication(sys.argv) ui = ModEM_Mesh_Window() - ui.ui_setup() ui.show() sys.exit(app.exec_()) From bec22c0ef4772d333144e55d91c45d41dc6525ad Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 17:51:38 -0700 Subject: [PATCH 068/124] added removal of extra spaces in define measurement block for poorly formatted .edi files --- mtpy/core/edi.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 8c93e613..665918c2 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1241,7 +1241,7 @@ def get_measurement_lists(self): if line.find('!') > 0: pass else: - line_list = line.strip().split() + line_list = line.replace('= ', '=').strip().split() m_dict = {} for ll in line_list[1:]: ll_list = ll.split('=') @@ -1609,5 +1609,9 @@ def write_data_sect(self, data_sect_list=None): data_sect_lines.append('\n') return data_sect_lines - - \ No newline at end of file + +#============================================================================== +# Test +#============================================================================== +edi_fn = r"c:\Users\jrpeacock\Downloads\2_LF_z.edi" +edi_obj = Edi(edi_fn) \ No newline at end of file From de5f02d7c56920ec5081bef10ad3ecee4af3facf Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 17:58:44 -0700 Subject: [PATCH 069/124] added removal of extra spaces in define measurement block for poorly formatted .edi files --- mtpy/modeling/occam2d_rewrite.py | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 12b6b665..59aabadd 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -33,14 +33,14 @@ import numpy as np import scipy as sp from scipy.stats import mode -import sys +#import sys import os import os.path as op -import subprocess -import shutil -import fnmatch -import datetime -from operator import itemgetter +#import subprocess +#import shutil +#import fnmatch +#import datetime +#from operator import itemgetter import time import matplotlib.colorbar as mcb from matplotlib.colors import Normalize @@ -49,23 +49,11 @@ import matplotlib.pyplot as plt import scipy.interpolate as spi -import mtpy.core.edi as MTedi import mtpy.core.mt as mt import mtpy.modeling.winglinktools as MTwl -import mtpy.utils.conversions as MTcv -import mtpy.utils.filehandling as MTfh -import mtpy.utils.configfile as MTcf import mtpy.analysis.geometry as MTgy -import mtpy.utils.exceptions as MTex -import scipy.interpolate as si from mtpy.imaging.mtplottools import plot_errorbar - -reload(MTcv) -reload(MTcf) -reload(MTedi) -reload(MTex) - #============================================================================== class Mesh(): From a75fcd5d29878c379b227fec1ea4d176a5f7b88f Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 18:17:57 -0700 Subject: [PATCH 070/124] removed the test at the end of Edi --- mtpy/core/edi.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 665918c2..9a2a839a 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1610,8 +1610,4 @@ def write_data_sect(self, data_sect_list=None): return data_sect_lines -#============================================================================== -# Test -#============================================================================== -edi_fn = r"c:\Users\jrpeacock\Downloads\2_LF_z.edi" -edi_obj = Edi(edi_fn) \ No newline at end of file + \ No newline at end of file From 4d8873d8def1ba22f70279964a9c6137d8db2342 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 18:39:58 -0700 Subject: [PATCH 071/124] changed the input of a filename to MT to call _set_fn() which will detect whether its an .edi file or not --- mtpy/core/mt.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index 236a5489..0c2d7966 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -200,14 +200,9 @@ def __init__(self, fn=None, **kwargs): self.zinv = None self._utm_ellipsoid = 23 - #--> read in the edi file if its given + #--> read in the file name given if self._fn is not None: - if self._fn[-3:] == 'edi': - self._read_edi_file() - else: - not_fn = self._fn[os.path.basename(self._fn).find['.']:] - raise MTex.MTpyError_file_handling('File '+\ - 'type {0} not supported yet.'.format(not_fn)) + self._set_fn(fn) #========================================================================== # set functions @@ -413,6 +408,7 @@ def _get_ll(self): self.utm_zone) + #--> read in edi file def _read_edi_file(self): """ @@ -705,8 +701,6 @@ def plot_mt_response(self, **kwargs): return plot_obj - - From 376802452cffae392e5ce0af83ac94e49f2d586c Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 14 Apr 2016 19:54:28 -0700 Subject: [PATCH 072/124] adding ability to add, remove lines to a mesh for modem --- mtpy/gui/modem_mesh_builder.py | 143 ++++++++++++++++++++------------- 1 file changed, 85 insertions(+), 58 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 86d192c6..7d9fe002 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -515,6 +515,7 @@ def __init__(self): self.fs = 10 self.line_mode = 'add_h' + self._ax = None self.setup_ui() @@ -629,132 +630,158 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, gs = gridspec.GridSpec(1, 2, width_ratios=[10, 1]) #--->plot map view - ax1 = self.figure.add_subplot(gs[0], aspect='equal') + self.ax_map = self.figure.add_subplot(gs[0], aspect='equal') #plot station locations plot_east = model_obj.station_locations['rel_east']/1000. plot_north = model_obj.station_locations['rel_north']/1000. - plot_grid_east = model_obj.grid_east.copy()/1000. - plot_grid_north = model_obj.grid_north.copy()/1000. - plot_grid_z = model_obj.grid_z.copy()/1000. + self.plot_grid_east = model_obj.grid_east.copy()/1000. + self.plot_grid_north = model_obj.grid_north.copy()/1000. + self.plot_grid_z = model_obj.grid_z.copy()/1000. - ax1.scatter(plot_east, - plot_north, - marker=self.station_marker, - c=self.marker_color, - s=self.marker_size) + self.ax_map.scatter(plot_east, + plot_north, + marker=self.station_marker, + c=self.marker_color, + s=self.marker_size, + picker=3) + # plot vertical lines east_line_xlist = [] east_line_ylist = [] - north_min = plot_grid_north.min() - north_max = plot_grid_north.max() - for xx in plot_grid_east: + north_min = self.plot_grid_north.min() + north_max = self.plot_grid_north.max() + for xx in self.plot_grid_east: east_line_xlist.extend([xx*cos_ang+north_min*sin_ang, xx*cos_ang+north_max*sin_ang]) east_line_xlist.append(None) east_line_ylist.extend([-xx*sin_ang+north_min*cos_ang, -xx*sin_ang+north_max*cos_ang]) east_line_ylist.append(None) - ax1.plot(east_line_xlist, - east_line_ylist, - lw=self.line_width, - color=self.line_color) + self.ax_map.plot(east_line_xlist, + east_line_ylist, + lw=self.line_width, + color=self.line_color, + picker=3) north_line_xlist = [] north_line_ylist = [] - east_max = plot_grid_east.max() - east_min = plot_grid_east.min() - for yy in plot_grid_north: + east_max = self.plot_grid_east.max() + east_min = self.plot_grid_east.min() + for yy in self.plot_grid_north: north_line_xlist.extend([east_min*cos_ang+yy*sin_ang, east_max*cos_ang+yy*sin_ang]) north_line_xlist.append(None) north_line_ylist.extend([-east_min*sin_ang+yy*cos_ang, -east_max*sin_ang+yy*cos_ang]) north_line_ylist.append(None) - ax1.plot(north_line_xlist, - north_line_ylist, - lw=self.line_width, - color=self.line_color) + self.ax_map.plot(north_line_xlist, + north_line_ylist, + lw=self.line_width, + color=self.line_color, + picker=3) if east_limits == None: - ax1.set_xlim(plot_grid_east.min(), - plot_grid_east.max()) + self.ax_map.set_xlim(self.plot_grid_east.min(), + self.plot_grid_east.max()) pass else: - ax1.set_xlim(east_limits) + self.ax_map.set_xlim(east_limits) if north_limits == None: - ax1.set_ylim(plot_grid_north.min(), - plot_grid_north.max()) + self.ax_map.set_ylim(self.plot_grid_north.min(), + self.plot_grid_north.max()) pass else: - ax1.set_ylim(north_limits) + self.ax_map.set_ylim(north_limits) - ax1.set_ylabel('Northing (km)', fontdict={'size':12, 'weight':'bold'}) - ax1.set_xlabel('Easting (km)', fontdict={'size':12, 'weight':'bold'}) + self.ax_map.set_ylabel('Northing (km)', fontdict={'size':12, 'weight':'bold'}) + self.ax_map.set_xlabel('Easting (km)', fontdict={'size':12, 'weight':'bold'}) ##----plot depth view - ax2 = self.figure.add_subplot(gs[1], aspect='auto') + self.ax_depth = self.figure.add_subplot(gs[1], aspect='auto') #plot the grid east_line_xlist = [] east_line_ylist = [] - for xx in plot_grid_east: + for xx in self.plot_grid_east: east_line_xlist.extend([xx, xx]) east_line_xlist.append(None) east_line_ylist.extend([0, - plot_grid_z.max()]) + self.plot_grid_z.max()]) east_line_ylist.append(None) - ax2.plot(east_line_xlist, + self.ax_depth.plot(east_line_xlist, east_line_ylist, lw=self.line_width, color=self.line_color) z_line_xlist = [] z_line_ylist = [] - for zz in plot_grid_z: - z_line_xlist.extend([plot_grid_east.min(), - plot_grid_east.max()]) + for zz in self.plot_grid_z: + z_line_xlist.extend([self.plot_grid_east.min(), + self.plot_grid_east.max()]) z_line_xlist.append(None) z_line_ylist.extend([zz, zz]) z_line_ylist.append(None) - ax2.plot(z_line_xlist, - z_line_ylist, - lw=self.line_width, - color=self.line_color) + self.ax_depth.plot(z_line_xlist, + z_line_ylist, + lw=self.line_width, + color=self.line_color, + picker=3) #--> plot stations - ax2.scatter(plot_east, - [0]*model_obj.station_locations.shape[0], - marker=self.station_marker, - c=self.marker_color, - s=self.marker_size) + self.ax_depth.scatter(plot_east, + [0]*model_obj.station_locations.shape[0], + marker=self.station_marker, + c=self.marker_color, + s=self.marker_size, + picker=3) if z_limits == None: - ax2.set_ylim(model_obj.z_target_depth/1000., -1) + self.ax_depth.set_ylim(model_obj.z_target_depth/1000., -1) else: - ax2.set_ylim(z_limits) + self.ax_depth.set_ylim(z_limits) - ax2.set_xlim(-model_obj.cell_size_east/6000., - model_obj.cell_size_east/6000.) - plt.setp(ax2.xaxis.get_ticklabels(), visible=False) + self.ax_depth.set_xlim(-model_obj.cell_size_east/1000*.75, + model_obj.cell_size_east/1000*.75) + plt.setp(self.ax_depth.xaxis.get_ticklabels(), visible=False) - ax2.set_ylabel('Depth (km)', fontdict={'size':9, 'weight':'bold'}) -# ax2.set_xlabel('Easting (m)', fontdict={'size':9, 'weight':'bold'}) + self.ax_depth.set_ylabel('Depth (km)', fontdict={'size':9, 'weight':'bold'}) +# self.ax_depth.set_xlabel('Easting (m)', fontdict={'size':9, 'weight':'bold'}) self.mpl_widget.draw() - def on_pick(self): - pass + def on_pick(self, event): + """ + mask a data point when it is clicked on. + """ + data_point = event.mouseevent + + east = float(data_point.xdata) + north = float(data_point.ydata) + +# for ii in dir(event.mouseevent): +# print ii + if event.mouseevent.button == 1: + if self.line_mode == 'add_h' and self._ax == self.ax_map: + print 'drawing line at {0:.2f}, {1:.2f}'.format(east, north) + self.ax_map.plot([self.plot_grid_east.min(), + self.plot_grid_east.max()], + [north, north], + lw=self.line_width, + color='r', + picker=3) + + self._ax.figure.canvas.draw() - def in_axes(self): - pass + def in_axes(self, event): + self._ax = event.inaxes #============================================================================== # DEFINE MAIN #============================================================================== From ec3ee4504d1306d2d3bb95208656c160f9d1952a Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 19 Apr 2016 11:53:02 -0700 Subject: [PATCH 073/124] added a validation of strings that are separated by an = so to remove any ambiguity with how to split them up --- mtpy/core/edi.py | 51 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 9a2a839a..058e001b 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -308,14 +308,17 @@ def _read_spectra(self, data_lines, data_find = False for line in data_lines: if line.lower().find('>spectra') == 0 and line.find('!') == -1: - line_list = line[1:].strip().split() + line_list = _validate_str_with_equals(line) data_find = True # frequency will be the key try: - key = float(line_list[1].split('=')[1]) + key = float([ss.split('=')[1] for ss in line_list + if ss.lower().find('freq')==0][0]) data_dict[key] = [] - avgt_dict[key] = float(line_list[4].split('=')[1]) + avgt = float([ss.split('=')[1] for ss in line_list + if ss.lower().find('avgt')==0][0]) + avgt_dict[key] = avgt except ValueError: print 'did not find frequency key' @@ -1241,9 +1244,9 @@ def get_measurement_lists(self): if line.find('!') > 0: pass else: - line_list = line.replace('= ', '=').strip().split() + line_list = _validate_str_with_equals(line) m_dict = {} - for ll in line_list[1:]: + for ll in line_list: ll_list = ll.split('=') key = ll_list[0].lower() value = ll_list[1] @@ -1610,4 +1613,40 @@ def write_data_sect(self, data_sect_list=None): return data_sect_lines - \ No newline at end of file +def _validate_str_with_equals(input_string): + """ + make sure an input string is of the format {0}={1} {2}={3} {4}={5} ... + Some software programs put spaces after the equals sign and that's not + cool. So we make the string into a readable format + """ + # remove the first >XXXXX + if input_string.find('>') == 0: + input_string = input_string[input_string.find(' '):] + + # check if there is a // at the end of the line + if input_string.find('//') > 0: + input_string = input_string[0:input_string.find('//')] + + # split the line by = + l_list = input_string.strip().split('=') + + # split the remaining strings + str_list = [] + for line in l_list: + s_list = line.strip().split() + for l_str in s_list: + str_list.append(l_str.strip()) + + # probably not a good return + if len(str_list)%2 != 0: + print 'The number of entries in {0} is not even'.format(str_list) + return str_list + + line_list = ['{0}={1}'.format(str_list[ii], str_list[ii+1]) for ii in + range(0, len(str_list), 2)] + + return line_list + + + + \ No newline at end of file From b7dbed22222c5371097902d700d7ebaeff110616 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 19 Apr 2016 21:59:03 -0700 Subject: [PATCH 074/124] working on mesh_builder --- mtpy/gui/modem_mesh_builder.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 7d9fe002..b373589a 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -698,8 +698,10 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, else: self.ax_map.set_ylim(north_limits) - self.ax_map.set_ylabel('Northing (km)', fontdict={'size':12, 'weight':'bold'}) - self.ax_map.set_xlabel('Easting (km)', fontdict={'size':12, 'weight':'bold'}) + self.ax_map.set_ylabel('Northing (km)', + fontdict={'size':12, 'weight':'bold'}) + self.ax_map.set_xlabel('Easting (km)', + fontdict={'size':12, 'weight':'bold'}) ##----plot depth view self.ax_depth = self.figure.add_subplot(gs[1], aspect='auto') @@ -761,15 +763,17 @@ def on_pick(self, event): """ mask a data point when it is clicked on. """ - data_point = event.mouseevent - east = float(data_point.xdata) - north = float(data_point.ydata) # for ii in dir(event.mouseevent): # print ii if event.mouseevent.button == 1: if self.line_mode == 'add_h' and self._ax == self.ax_map: + data_point = event.mouseevent + + east = float(data_point.xdata) + north = float(data_point.ydata) + print 'drawing line at {0:.2f}, {1:.2f}'.format(east, north) self.ax_map.plot([self.plot_grid_east.min(), self.plot_grid_east.max()], From 7f7ee1bf5fcdf27a9492d566d8354d66ccde5e0d Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 25 Apr 2016 18:48:01 -0700 Subject: [PATCH 075/124] added hmeas and emeas to metadata in EDITextEditor and save button --- mtpy/gui/edi_editor.py | 221 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 213 insertions(+), 8 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index afd72d4f..99726926 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -117,7 +117,12 @@ def close_edi_file(self): pass def save_edi_file(self): - pass + save_fn_dialog = QtGui.QFileDialog() + save_fn = str(save_fn_dialog.getSaveFileName(caption='Choose EDI File', + directory=self.plot_widget.dir_path, + filter='*.edi')) + + self.plot_widget.mt_obj.write_edi_file(new_fn=save_fn) def edit_plot_properties(self): self.plot_widget.plot_properties.setup_ui() @@ -133,7 +138,7 @@ def edit_metadata(self): self.edi_text_editor.metadata_updated.connect(self.update_edi_metadata) def update_edi_metadata(self): - self.plot_widget.mt_obj.edi_object = copy.deepcopy(self.edi_text_editor.edi_obj) + self.plot_widget.mt_obj.edi_object = copy.deepcopy(self.edi_text_editor.edi_obj) self.plot_widget.mt_obj.station = self.plot_widget.mt_obj.edi_object.station self.plot_widget.mt_obj.elev = self.plot_widget.mt_obj.edi_object.elev self.plot_widget.mt_obj.lat = self.plot_widget.mt_obj.edi_object.lat @@ -1743,13 +1748,13 @@ def setup_ui(self): self.meas_help = QtGui.QLabel() self.meas_help.setText('Assume x is northing (m), y is easting (m), North = 0 deg, East = 90 deg') - ch_list = ['EX', 'EY', 'HX', 'HY', 'HZ', 'RHX', 'RHY', 'EZ'] + h_ch_list = ['HX', 'HY', 'HZ', 'RHX', 'RHY'] self.meas_h01_label = QtGui.QLabel("HMEAS") self.meas_h01_id_label = QtGui.QLabel("ID") self.meas_h01_id_edit = QtGui.QLineEdit() self.meas_h01_ct_label = QtGui.QLabel("CHTYPE") self.meas_h01_ct_combo = QtGui.QComboBox() - for ch in ch_list: + for ch in h_ch_list: self.meas_h01_ct_combo.addItem(ch) self.meas_h01_x_label = QtGui.QLabel("X (m)") self.meas_h01_x_edit = QtGui.QLineEdit() @@ -1759,9 +1764,121 @@ def setup_ui(self): self.meas_h01_azm_edit = QtGui.QLineEdit() self.meas_h01_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_h01_acqchn_combo = QtGui.QComboBox() - for ch in ch_list: + for ch in h_ch_list: self.meas_h01_acqchn_combo.addItem(ch) + self.meas_h02_label = QtGui.QLabel("HMEAS") + self.meas_h02_id_label = QtGui.QLabel("ID") + self.meas_h02_id_edit = QtGui.QLineEdit() + self.meas_h02_ct_label = QtGui.QLabel("CHTYPE") + self.meas_h02_ct_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_h02_ct_combo.addItem(ch) + self.meas_h02_x_label = QtGui.QLabel("X (m)") + self.meas_h02_x_edit = QtGui.QLineEdit() + self.meas_h02_y_label = QtGui.QLabel("Y (m)") + self.meas_h02_y_edit = QtGui.QLineEdit() + self.meas_h02_azm_label = QtGui.QLabel("Azimtuh (deg)") + self.meas_h02_azm_edit = QtGui.QLineEdit() + self.meas_h02_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_h02_acqchn_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_h02_acqchn_combo.addItem(ch) + + self.meas_h03_label = QtGui.QLabel("HMEAS") + self.meas_h03_id_label = QtGui.QLabel("ID") + self.meas_h03_id_edit = QtGui.QLineEdit() + self.meas_h03_ct_label = QtGui.QLabel("CHTYPE") + self.meas_h03_ct_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_h03_ct_combo.addItem(ch) + self.meas_h03_x_label = QtGui.QLabel("X (m)") + self.meas_h03_x_edit = QtGui.QLineEdit() + self.meas_h03_y_label = QtGui.QLabel("Y (m)") + self.meas_h03_y_edit = QtGui.QLineEdit() + self.meas_h03_azm_label = QtGui.QLabel("Azimtuh (deg)") + self.meas_h03_azm_edit = QtGui.QLineEdit() + self.meas_h03_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_h03_acqchn_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_h03_acqchn_combo.addItem(ch) + + self.meas_hr1_label = QtGui.QLabel("HMEAS") + self.meas_hr1_id_label = QtGui.QLabel("ID") + self.meas_hr1_id_edit = QtGui.QLineEdit() + self.meas_hr1_ct_label = QtGui.QLabel("CHTYPE") + self.meas_hr1_ct_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_hr1_ct_combo.addItem(ch) + self.meas_hr1_x_label = QtGui.QLabel("X (m)") + self.meas_hr1_x_edit = QtGui.QLineEdit() + self.meas_hr1_y_label = QtGui.QLabel("Y (m)") + self.meas_hr1_y_edit = QtGui.QLineEdit() + self.meas_hr1_azm_label = QtGui.QLabel("Azimtuh (deg)") + self.meas_hr1_azm_edit = QtGui.QLineEdit() + self.meas_hr1_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_hr1_acqchn_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_hr1_acqchn_combo.addItem(ch) + + self.meas_hr2_label = QtGui.QLabel("HMEAS") + self.meas_hr2_id_label = QtGui.QLabel("ID") + self.meas_hr2_id_edit = QtGui.QLineEdit() + self.meas_hr2_ct_label = QtGui.QLabel("CHTYPE") + self.meas_hr2_ct_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_hr2_ct_combo.addItem(ch) + self.meas_hr2_x_label = QtGui.QLabel("X (m)") + self.meas_hr2_x_edit = QtGui.QLineEdit() + self.meas_hr2_y_label = QtGui.QLabel("Y (m)") + self.meas_hr2_y_edit = QtGui.QLineEdit() + self.meas_hr2_azm_label = QtGui.QLabel("Azimtuh (deg)") + self.meas_hr2_azm_edit = QtGui.QLineEdit() + self.meas_hr2_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_hr2_acqchn_combo = QtGui.QComboBox() + for ch in h_ch_list: + self.meas_hr2_acqchn_combo.addItem(ch) + + e_ch_list = ['EX', 'EY', 'EZ'] + self.meas_e01_label = QtGui.QLabel("EMEAS") + self.meas_e01_id_label = QtGui.QLabel("ID") + self.meas_e01_id_edit = QtGui.QLineEdit() + self.meas_e01_ct_label = QtGui.QLabel("CHTYPE") + self.meas_e01_ct_combo = QtGui.QComboBox() + for ch in e_ch_list: + self.meas_e01_ct_combo.addItem(ch) + self.meas_e01_x_label = QtGui.QLabel("X (m)") + self.meas_e01_x_edit = QtGui.QLineEdit() + self.meas_e01_y_label = QtGui.QLabel("Y (m)") + self.meas_e01_y_edit = QtGui.QLineEdit() + self.meas_e01_x2_label = QtGui.QLabel("X2 (m)") + self.meas_e01_x2_edit = QtGui.QLineEdit() + self.meas_e01_y2_label = QtGui.QLabel("Y2 (m)") + self.meas_e01_y2_edit = QtGui.QLineEdit() + self.meas_e01_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_e01_acqchn_combo = QtGui.QComboBox() + for ch in e_ch_list: + self.meas_e01_acqchn_combo.addItem(ch) + + self.meas_e02_label = QtGui.QLabel("EMEAS") + self.meas_e02_id_label = QtGui.QLabel("ID") + self.meas_e02_id_edit = QtGui.QLineEdit() + self.meas_e02_ct_label = QtGui.QLabel("CHTYPE") + self.meas_e02_ct_combo = QtGui.QComboBox() + for ch in e_ch_list: + self.meas_e02_ct_combo.addItem(ch) + self.meas_e02_x_label = QtGui.QLabel("X (m)") + self.meas_e02_x_edit = QtGui.QLineEdit() + self.meas_e02_y_label = QtGui.QLabel("Y (m)") + self.meas_e02_y_edit = QtGui.QLineEdit() + self.meas_e02_x2_label = QtGui.QLabel("X2 (m)") + self.meas_e02_x2_edit = QtGui.QLineEdit() + self.meas_e02_y2_label = QtGui.QLabel("Y2 (m)") + self.meas_e02_y2_edit = QtGui.QLineEdit() + self.meas_e02_acqchn_label = QtGui.QLabel("Acq. Channel") + self.meas_e02_acqchn_combo = QtGui.QComboBox() + for ch in e_ch_list: + self.meas_e02_acqchn_combo.addItem(ch) ##--> Update button self.update_button = QtGui.QPushButton('Update') @@ -1833,8 +1950,96 @@ def setup_ui(self): meas_layout.addWidget(self.meas_h01_y_edit, 1, 8) meas_layout.addWidget(self.meas_h01_azm_label, 1, 9) meas_layout.addWidget(self.meas_h01_azm_edit, 1, 10) - meas_layout.addWidget(self.meas_h01_acqchn_label, 1, 11) - meas_layout.addWidget(self.meas_h01_acqchn_combo, 1, 12) + meas_layout.addWidget(self.meas_h01_acqchn_label, 1, 13) + meas_layout.addWidget(self.meas_h01_acqchn_combo, 1, 14) + + meas_layout.addWidget(self.meas_h02_label, 2, 0) + meas_layout.addWidget(self.meas_h02_id_label, 2, 1) + meas_layout.addWidget(self.meas_h02_id_edit, 2, 2) + meas_layout.addWidget(self.meas_h02_ct_label, 2, 3) + meas_layout.addWidget(self.meas_h02_ct_combo, 2, 4) + meas_layout.addWidget(self.meas_h02_x_label, 2, 5) + meas_layout.addWidget(self.meas_h02_x_edit, 2, 6) + meas_layout.addWidget(self.meas_h02_y_label, 2, 7) + meas_layout.addWidget(self.meas_h02_y_edit, 2, 8) + meas_layout.addWidget(self.meas_h02_azm_label, 2, 9) + meas_layout.addWidget(self.meas_h02_azm_edit, 2, 10) + meas_layout.addWidget(self.meas_h02_acqchn_label, 2, 13) + meas_layout.addWidget(self.meas_h02_acqchn_combo, 2, 14) + + meas_layout.addWidget(self.meas_h03_label, 3, 0) + meas_layout.addWidget(self.meas_h03_id_label, 3, 1) + meas_layout.addWidget(self.meas_h03_id_edit, 3, 2) + meas_layout.addWidget(self.meas_h03_ct_label, 3, 3) + meas_layout.addWidget(self.meas_h03_ct_combo, 3, 4) + meas_layout.addWidget(self.meas_h03_x_label, 3, 5) + meas_layout.addWidget(self.meas_h03_x_edit, 3, 6) + meas_layout.addWidget(self.meas_h03_y_label, 3, 7) + meas_layout.addWidget(self.meas_h03_y_edit, 3, 8) + meas_layout.addWidget(self.meas_h03_azm_label, 3, 9) + meas_layout.addWidget(self.meas_h03_azm_edit, 3, 10) + meas_layout.addWidget(self.meas_h03_acqchn_label, 3, 13) + meas_layout.addWidget(self.meas_h03_acqchn_combo, 3, 14) + + meas_layout.addWidget(self.meas_hr1_label, 4, 0) + meas_layout.addWidget(self.meas_hr1_id_label, 4, 1) + meas_layout.addWidget(self.meas_hr1_id_edit, 4, 2) + meas_layout.addWidget(self.meas_hr1_ct_label, 4, 3) + meas_layout.addWidget(self.meas_hr1_ct_combo, 4, 4) + meas_layout.addWidget(self.meas_hr1_x_label, 4, 5) + meas_layout.addWidget(self.meas_hr1_x_edit, 4, 6) + meas_layout.addWidget(self.meas_hr1_y_label, 4, 7) + meas_layout.addWidget(self.meas_hr1_y_edit, 4, 8) + meas_layout.addWidget(self.meas_hr1_azm_label, 4, 9) + meas_layout.addWidget(self.meas_hr1_azm_edit, 4, 10) + meas_layout.addWidget(self.meas_hr1_acqchn_label, 4, 13) + meas_layout.addWidget(self.meas_hr1_acqchn_combo, 4, 14) + + meas_layout.addWidget(self.meas_hr2_label, 5, 0) + meas_layout.addWidget(self.meas_hr2_id_label, 5, 1) + meas_layout.addWidget(self.meas_hr2_id_edit, 5, 2) + meas_layout.addWidget(self.meas_hr2_ct_label, 5, 3) + meas_layout.addWidget(self.meas_hr2_ct_combo, 5, 4) + meas_layout.addWidget(self.meas_hr2_x_label, 5, 5) + meas_layout.addWidget(self.meas_hr2_x_edit, 5, 6) + meas_layout.addWidget(self.meas_hr2_y_label, 5, 7) + meas_layout.addWidget(self.meas_hr2_y_edit, 5, 8) + meas_layout.addWidget(self.meas_hr2_azm_label, 5, 9) + meas_layout.addWidget(self.meas_hr2_azm_edit, 5, 10) + meas_layout.addWidget(self.meas_hr2_acqchn_label, 5, 13) + meas_layout.addWidget(self.meas_hr2_acqchn_combo, 5, 14) + + meas_layout.addWidget(self.meas_e01_label, 6, 0) + meas_layout.addWidget(self.meas_e01_id_label, 6, 1) + meas_layout.addWidget(self.meas_e01_id_edit, 6, 2) + meas_layout.addWidget(self.meas_e01_ct_label, 6, 3) + meas_layout.addWidget(self.meas_e01_ct_combo, 6, 4) + meas_layout.addWidget(self.meas_e01_x_label, 6, 5) + meas_layout.addWidget(self.meas_e01_x_edit, 6, 6) + meas_layout.addWidget(self.meas_e01_y_label, 6, 7) + meas_layout.addWidget(self.meas_e01_y_edit, 6, 8) + meas_layout.addWidget(self.meas_e01_x2_label, 6, 9) + meas_layout.addWidget(self.meas_e01_x2_edit, 6, 10) + meas_layout.addWidget(self.meas_e01_y2_label, 6, 11) + meas_layout.addWidget(self.meas_e01_y2_edit, 6, 12) + meas_layout.addWidget(self.meas_e01_acqchn_label, 6, 13) + meas_layout.addWidget(self.meas_e01_acqchn_combo, 6, 14) + + meas_layout.addWidget(self.meas_e02_label, 7, 0) + meas_layout.addWidget(self.meas_e02_id_label, 7, 1) + meas_layout.addWidget(self.meas_e02_id_edit, 7, 2) + meas_layout.addWidget(self.meas_e02_ct_label, 7, 3) + meas_layout.addWidget(self.meas_e02_ct_combo, 7, 4) + meas_layout.addWidget(self.meas_e02_x_label, 7, 5) + meas_layout.addWidget(self.meas_e02_x_edit, 7, 6) + meas_layout.addWidget(self.meas_e02_y_label, 7, 7) + meas_layout.addWidget(self.meas_e02_y_edit, 7, 8) + meas_layout.addWidget(self.meas_e02_x2_label, 7, 9) + meas_layout.addWidget(self.meas_e02_x2_edit, 7, 10) + meas_layout.addWidget(self.meas_e02_y2_label, 7, 11) + meas_layout.addWidget(self.meas_e02_y2_edit, 7, 12) + meas_layout.addWidget(self.meas_e02_acqchn_label, 7, 13) + meas_layout.addWidget(self.meas_e02_acqchn_combo, 7, 14) v_layout = QtGui.QVBoxLayout() v_layout.addLayout(header_layout) @@ -1903,7 +2108,7 @@ def header_set_progvers(self): def info_set_text(self): new_info_str = self.info_edit.toPlainText() - new_info_list = new_info_str.split('\n') + new_info_list = [str(nn) for nn in new_info_str.split('\n')] self.edi_obj.Info.info_lines = self.edi_obj.Info._validate_info_list(new_info_list) def define_set_maxchan(self): From 8ab339f940ad4d9fc11b1cee76fae8167b55aaec Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 26 Apr 2016 14:46:44 -0700 Subject: [PATCH 076/124] added a strip() function to value of header list, changed edi_editor to accept changes in information section --- mtpy/core/edi.py | 4 ++-- mtpy/gui/edi_editor.py | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 058e001b..712773a7 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -882,7 +882,7 @@ def read_header(self, header_list=None): for h_line in self.header_list: h_list = h_line.split('=') key = h_list[0].lower() - value = h_list[1].replace('"', '') + value = h_list[1].replace('"', '').strip() if key in 'latitude': key = 'lat' @@ -1328,7 +1328,7 @@ def write_define_measurement(self, measurement_list=None): if measurement_list is not None: self.read_define_measurement(measurement_list=measurement_list) - measurement_lines = ['>=DEFINEMEAS\n\n'] + measurement_lines = ['\n>=DEFINEMEAS\n\n'] for key in self._define_meas_keys: value = getattr(self, key) if key == 'reflat' or key == 'reflon': diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 99726926..cdabef13 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1123,7 +1123,6 @@ def on_pick(self, event): d_index = np.where(np.round(self.mt_obj.Tipper.amplitude, 8) == data_value) - print d_index # mask point self._ax.plot(data_period, data_value, **mask_kw) @@ -2075,7 +2074,7 @@ def header_set_elev(self): self.header_elev_edit.setText('{0:.1f}'.format(self.edi_obj.elev)) def header_set_empty(self): - self.edi_obj.Header.empty = float(str(self.header_elev_edit.text())) + self.edi_obj.Header.empty = float(str(self.header_empty_edit.text())) self.header_empty_edit.setText('{0:.2e}'.format(self.edi_obj.Header.empty)) def header_set_fileby(self): @@ -2109,7 +2108,7 @@ def header_set_progvers(self): def info_set_text(self): new_info_str = self.info_edit.toPlainText() new_info_list = [str(nn) for nn in new_info_str.split('\n')] - self.edi_obj.Info.info_lines = self.edi_obj.Info._validate_info_list(new_info_list) + self.edi_obj.Info.info_list = self.edi_obj.Info._validate_info_list(new_info_list) def define_set_maxchan(self): self.edi_obj.Define_measurement.maxchan = int(str(self.define_maxchan_edit.text())) From ebafc45651610d85b4ba11c64886ac00ee5529a7 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 26 Apr 2016 14:49:54 -0700 Subject: [PATCH 077/124] added a strip() function to value of define_measurement --- mtpy/core/edi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 712773a7..ca09f9d5 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1291,7 +1291,7 @@ def read_define_measurement(self, measurement_list=None): if type(line) is str: line_list = line.split('=') key = line_list[0].lower() - value = line_list[1] + value = line_list[1].strip() if key in 'reflatitude': key = 'reflat' value = MTft._assert_position_format('lat', value) From 56211441c12c4aa94d00560a23de719a0fe6c122 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 29 Apr 2016 09:56:29 -0700 Subject: [PATCH 078/124] changing occam2d_rewrite to be able to input a frequency list --- mtpy/modeling/occam2d_rewrite.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 59aabadd..7ac9e9c8 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2287,6 +2287,9 @@ def _get_frequencies(self): *default* is None and will use the data to find num """ + if self.freq is not None: + return + #get all frequencies from all edi files lo_all_freqs = [] for edi in self.edi_list: @@ -2372,6 +2375,9 @@ def _fill_data(self): #loop over mt object in edi_list and use a counter starting at 1 #because that is what occam starts at. for s_index, edi in enumerate(self.edi_list): + station_freq = edi.Z.freq + # interpolate data onto given frequency list + z_interp, t_interp = edi.interpolate() rho = edi.Z.resistivity phi = edi.Z.phase rho_err = edi.Z.resistivity_err From 59d3fdbba98a7143435fae9e2e48a26fe7888869 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 29 Apr 2016 10:07:55 -0700 Subject: [PATCH 079/124] changing occam2d_rewrite to be able to input a frequency list --- mtpy/modeling/occam2d_rewrite.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 7ac9e9c8..bde4746b 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2376,25 +2376,28 @@ def _fill_data(self): #because that is what occam starts at. for s_index, edi in enumerate(self.edi_list): station_freq = edi.Z.freq + interp_freq = station_freq[np.where((station_freq >= self.freq.min()) & + (station_freq <= self.freq.max()))] # interpolate data onto given frequency list - z_interp, t_interp = edi.interpolate() - rho = edi.Z.resistivity - phi = edi.Z.phase - rho_err = edi.Z.resistivity_err - station_freqs = edi.Z.freq - tipper = edi.Tipper.tipper - tipper_err = edi.Tipper.tippererr + z_interp, t_interp = edi.interpolate(interp_freq) + z_interp._compute_res_phase() + + rho = z_interp.resistivity + phi = z_interp.phase + rho_err = z_interp.resistivity_err + tipper = t_interp.tipper + tipper_err = t_interp.tippererr self.data[s_index]['station'] = edi.station self.data[s_index]['offset'] = edi.offset for freq_num, frequency in enumerate(self.freq): #skip, if the listed frequency is not available for the station - if not (frequency in station_freqs): + if not (frequency in interp_freq): continue #find the respective frequency index for the station - f_index = np.abs(station_freqs-frequency).argmin() + f_index = np.abs(station_freq-frequency).argmin() #--> get te resistivity self.data[s_index]['te_res'][0, freq_num] = rho[f_index, 0, 1] From 1e484d34ec38a45b07097a6f880558fddb99463d Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 2 May 2016 11:27:16 -0700 Subject: [PATCH 080/124] added functionality to edi_editor --- mtpy/gui/edi_editor.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index cdabef13..414edf2e 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1076,6 +1076,7 @@ def on_pick(self, event): # mask point in impedance object self.mt_obj.Z.z[d_index] = 0.0+0.0*1j + self.mt_obj.Z.zerr[d_index] = 0.0 self._ax.plot(data_period, data_value, **mask_kw) @@ -1103,6 +1104,7 @@ def on_pick(self, event): # mask point in impedance object self.mt_obj.Z.z[d_index] = 0.0+0.0*1j + self.mt_obj.Z.zerr[d_index] = 0.0 # mask the point in the axis selected self._ax.plot(data_period, data_value, **mask_kw) From 73c826624ba823db373680b0ff496802aea52f72 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 2 May 2016 11:36:12 -0700 Subject: [PATCH 081/124] fixed occam2d_rewrite to test for null tipper --- mtpy/modeling/occam2d_rewrite.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index bde4746b..a665630a 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2385,8 +2385,12 @@ def _fill_data(self): rho = z_interp.resistivity phi = z_interp.phase rho_err = z_interp.resistivity_err - tipper = t_interp.tipper - tipper_err = t_interp.tippererr + if t_interp is not None: + tipper = t_interp.tipper + tipper_err = t_interp.tippererr + else: + tipper = None + tipper_err = None self.data[s_index]['station'] = edi.station self.data[s_index]['offset'] = edi.offset From 9463d817ca2887fa45b891fe1bf82dce75de2729 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 15:27:52 -0700 Subject: [PATCH 082/124] changing occam2d_rewrite to be able to input a frequency list --- mtpy/modeling/occam2d_rewrite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index a665630a..3e395a37 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2401,7 +2401,7 @@ def _fill_data(self): continue #find the respective frequency index for the station - f_index = np.abs(station_freq-frequency).argmin() + f_index = np.abs(interp_freq-frequency).argmin() #--> get te resistivity self.data[s_index]['te_res'][0, freq_num] = rho[f_index, 0, 1] From 3168c03e0a1e42cbc4bcbd3450b1bf3bb9b2ed0d Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 15:39:50 -0700 Subject: [PATCH 083/124] changing occam2d_rewrite format of frequency list as written to data file --- mtpy/modeling/occam2d_rewrite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 3e395a37..0bee10a9 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2651,7 +2651,7 @@ def write_data_file(self, data_fn=None): data_lines.append('{0:<18}{1}\n'.format('FREQUENCIES:', self.freq.shape[0])) for ff in self.freq: - data_lines.append(' {0:.6f}\n'.format(ff)) + data_lines.append(' {0:<10.6g}\n'.format(ff)) #--> data data_lines.append('{0:<18}{1}\n'.format('DATA BLOCKS:', From 503a5da5220b764e463c52e11bf0a948aabbfe96 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 16:03:12 -0700 Subject: [PATCH 084/124] changing occam2d_rewrite interpolate frequencies --- mtpy/modeling/occam2d_rewrite.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 0bee10a9..30fe28f7 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2376,8 +2376,8 @@ def _fill_data(self): #because that is what occam starts at. for s_index, edi in enumerate(self.edi_list): station_freq = edi.Z.freq - interp_freq = station_freq[np.where((station_freq >= self.freq.min()) & - (station_freq <= self.freq.max()))] + interp_freq = self.freq[np.where((self.freq >= station_freq.min()) & + (self.freq <= station_freq.max())] # interpolate data onto given frequency list z_interp, t_interp = edi.interpolate(interp_freq) z_interp._compute_res_phase() @@ -2651,7 +2651,7 @@ def write_data_file(self, data_fn=None): data_lines.append('{0:<18}{1}\n'.format('FREQUENCIES:', self.freq.shape[0])) for ff in self.freq: - data_lines.append(' {0:<10.6g}\n'.format(ff)) + data_lines.append(' {0:<10.6e}\n'.format(ff)) #--> data data_lines.append('{0:<18}{1}\n'.format('DATA BLOCKS:', From 3c649e53892e30715082f3b25d747cffde914250 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 16:04:48 -0700 Subject: [PATCH 085/124] changing occam2d_rewrite interpolate frequencies --- mtpy/modeling/occam2d_rewrite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 30fe28f7..31d957e7 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2377,7 +2377,7 @@ def _fill_data(self): for s_index, edi in enumerate(self.edi_list): station_freq = edi.Z.freq interp_freq = self.freq[np.where((self.freq >= station_freq.min()) & - (self.freq <= station_freq.max())] + (self.freq <= station_freq.max()))] # interpolate data onto given frequency list z_interp, t_interp = edi.interpolate(interp_freq) z_interp._compute_res_phase() From eefed244e1d3a76ab91458236996f160ea4a7e0b Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 16:24:43 -0700 Subject: [PATCH 086/124] changing occam2d_rewrite interpolate frequencies --- mtpy/modeling/occam2d_rewrite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 31d957e7..19fd8dae 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -1121,7 +1121,7 @@ def generate_profile(self): print '='*72 print ('Rotated Z and Tipper to be perpendicular with ' '{0:+.2f} profile angle'.format((self.profile_angle-90)%180)) - print ('Profile angle is' + print ('Profile angle is ' '{0:+.2f} degrees E of N'.format(self.profile_angle)) print '='*72 From 64ef28297c4efeadd6855d1ef6526b225d90936f Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 16:36:55 -0700 Subject: [PATCH 087/124] adding a dictionary of measurement for defin_meas --- mtpy/core/edi.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index ca09f9d5..cd0969b4 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1365,7 +1365,19 @@ def write_define_measurement(self, measurement_list=None): measurement_lines.append(''.join(m_list)) return measurement_lines + + def get_measurement_dict(self): + """ + get a dictionary for the xmeas parts + """ + meas_dict = {} + for key in self.__dict__.keys(): + if key.find('meas_') == 0: + meas_attr = getattr(self, key) + meas_key = meas_attr.chtype + meas_dict[meas_key] =meas_attr + return meas_dict #============================================================================== # magnetic measurements #============================================================================== From f4438124ec5c5a963ddb2a2354211a249a6c9ad3 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 19:36:10 -0700 Subject: [PATCH 088/124] made computing resistivity and phase automatic when reading in an .edi file --- mtpy/core/edi.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index cd0969b4..6eec5d84 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -269,6 +269,9 @@ def _read_mt(self, data_lines): self.Z.zerr[:, 0, 1] = np.array(data_dict['zxy.var']) self.Z.zerr[:, 1, 0] = np.array(data_dict['zyx.var']) self.Z.zerr[:, 1, 1] = np.array(data_dict['zyy.var']) + + # compute resistivity and phase + self.Z._compute_res_phase() ## fill tipper data if there it exists @@ -293,6 +296,9 @@ def _read_mt(self, data_lines): self.Tipper.tippererr[:, 0, 0] = np.array(data_dict['txvar.exp']) self.Tipper.tippererr[:, 0, 1] = np.array(data_dict['tyvar.exp']) + + self.Tipper._compute_amp_phase() + self.Tipper._compute_mag_direction() else: print 'Could not find any Tipper data.' @@ -455,11 +461,14 @@ def _read_spectra(self, data_lines, self.Z.zerr = z_err_arr self.Z.freq = freq_arr self.Z.rotation_angle = np.zeros_like(freq_arr) + self.Z._compute_res_phase() self.Tipper.tipper = t_arr self.Tipper.tippererr = t_err_arr self.Tipper.freq = freq_arr self.Tipper.rotation_angle = np.zeros_like(freq_arr) + self.Tipper._compute_amp_phase() + self.Tipper._compute_mag_direction() def write_edi_file(self, new_edi_fn=None): """ @@ -1310,13 +1319,10 @@ def read_define_measurement(self, measurement_list=None): setattr(self, key, value) elif type(line) is dict: - try: - key = 'meas_{0:02.0f}'.format(float(line['id'])) - except KeyError: - key = 'meas_{0:02}'.format(m_count) - if line['chtype'].lower().find('h') >= 0: + key = 'meas_{0:02}'.format(line['chtype'].lower()) + if key.find('h') >= 0: value = HMeasurement(**line) - elif line['chtype'].lower().find('e') >= 0: + elif key.find('e') >= 0: value = EMeasurement(**line) setattr(self, key, value) From 8c36118a44f30c3e46eec680e2b85f13d996ecc2 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 3 May 2016 19:44:20 -0700 Subject: [PATCH 089/124] made computing resistivity and phase automatic when reading in an .edi file --- mtpy/core/edi.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 6eec5d84..d83447a9 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1294,8 +1294,7 @@ def read_define_measurement(self, measurement_list=None): if self.measurement_list is None and self.edi_fn is None: print 'Nothing to read, check edi_fn or measurement_list attributes' return - - m_count = 1 + for line in self.measurement_list: if type(line) is str: line_list = line.split('=') @@ -1319,10 +1318,10 @@ def read_define_measurement(self, measurement_list=None): setattr(self, key, value) elif type(line) is dict: - key = 'meas_{0:02}'.format(line['chtype'].lower()) - if key.find('h') >= 0: + key = 'meas_{0}'.format(line['chtype'].lower()) + if key[4:].find('h') >= 0: value = HMeasurement(**line) - elif key.find('e') >= 0: + elif key[4:].find('e') >= 0: value = EMeasurement(**line) setattr(self, key, value) From 484e40df20970360a7cf0962f3c6c8ea821f3687 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 4 May 2016 16:54:12 -0700 Subject: [PATCH 090/124] added test for maxrun in DefineMeasurement --- mtpy/core/edi.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index d83447a9..1268a177 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1315,6 +1315,9 @@ def read_define_measurement(self, measurement_list=None): elif key in 'maxmeasurements': key = 'maxmeas' value = int(value) + elif key in 'maxruns': + key = 'maxrun' + value = int(value) setattr(self, key, value) elif type(line) is dict: @@ -1663,7 +1666,4 @@ def _validate_str_with_equals(input_string): range(0, len(str_list), 2)] return line_list - - - \ No newline at end of file From b9b939694c7f47b398de9b4aa32dee31a645a12e Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 4 May 2016 17:00:28 -0700 Subject: [PATCH 091/124] added test for number in define_measurement --- mtpy/core/edi.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 1268a177..57e705df 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1311,13 +1311,22 @@ def read_define_measurement(self, measurement_list=None): value = MTft._assert_position_format('elev', value) elif key in 'maxchannels': key = 'maxchan' - value = int(value) + try: + value = int(value) + except ValueError: + value = 0 elif key in 'maxmeasurements': key = 'maxmeas' - value = int(value) + try: + value = int(value) + except ValueError: + value = 0 elif key in 'maxruns': key = 'maxrun' - value = int(value) + try: + value = int(value) + except ValueError: + value = 0 setattr(self, key, value) elif type(line) is dict: From e6649d621bdc147b21464c4f1a6180c3cf2f1254 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 4 May 2016 17:05:50 -0700 Subject: [PATCH 092/124] changed len of Z to be defined by the lenght of frequencies --- mtpy/core/edi.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 57e705df..1acf1677 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -249,8 +249,8 @@ def _read_mt(self, data_lines): ## fill impedance tensor self.Z.freq = freq_arr.copy() - self.Z.z = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.complex) - self.Z.zerr = np.zeros((self.Data_sect.nfreq, 2, 2), dtype=np.float) + self.Z.z = np.zeros((freq_arr.size, 2, 2), dtype=np.complex) + self.Z.zerr = np.zeros((freq_arr.size, 2, 2), dtype=np.float) try: self.Z.rotation_angle = data_dict['zrot'] except KeyError: @@ -275,9 +275,9 @@ def _read_mt(self, data_lines): ## fill tipper data if there it exists - self.Tipper.tipper = np.zeros((self.Data_sect.nfreq, 1, 2), + self.Tipper.tipper = np.zeros((freq_arr.size, 1, 2), dtype=np.complex) - self.Tipper.tippererr = np.zeros((self.Data_sect.nfreq, 1, 2), + self.Tipper.tippererr = np.zeros((freq_arr.size, 1, 2), dtype=np.float) self.Tipper.freq = freq_arr.copy() try: From dee8dec71cd4d662275ab19d64a98763b5e93023 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 4 May 2016 18:25:23 -0700 Subject: [PATCH 093/124] added functionality to fill define_measurement metadata --- mtpy/gui/edi_editor.py | 102 ++++++++++++++++++++++++--------- mtpy/gui/modem_mesh_builder.py | 41 +++++++++---- 2 files changed, 104 insertions(+), 39 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 414edf2e..7ad82edb 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1755,8 +1755,7 @@ def setup_ui(self): self.meas_h01_id_edit = QtGui.QLineEdit() self.meas_h01_ct_label = QtGui.QLabel("CHTYPE") self.meas_h01_ct_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h01_ct_combo.addItem(ch) + self.meas_h01_ct_combo.addItems(h_ch_list) self.meas_h01_x_label = QtGui.QLabel("X (m)") self.meas_h01_x_edit = QtGui.QLineEdit() self.meas_h01_y_label = QtGui.QLabel("Y (m)") @@ -1765,16 +1764,14 @@ def setup_ui(self): self.meas_h01_azm_edit = QtGui.QLineEdit() self.meas_h01_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_h01_acqchn_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h01_acqchn_combo.addItem(ch) + self.meas_h01_acqchn_combo.addItems(h_ch_list) self.meas_h02_label = QtGui.QLabel("HMEAS") self.meas_h02_id_label = QtGui.QLabel("ID") self.meas_h02_id_edit = QtGui.QLineEdit() self.meas_h02_ct_label = QtGui.QLabel("CHTYPE") self.meas_h02_ct_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h02_ct_combo.addItem(ch) + self.meas_h02_ct_combo.addItems(h_ch_list) self.meas_h02_x_label = QtGui.QLabel("X (m)") self.meas_h02_x_edit = QtGui.QLineEdit() self.meas_h02_y_label = QtGui.QLabel("Y (m)") @@ -1783,16 +1780,14 @@ def setup_ui(self): self.meas_h02_azm_edit = QtGui.QLineEdit() self.meas_h02_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_h02_acqchn_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h02_acqchn_combo.addItem(ch) + self.meas_h02_acqchn_combo.addItems(h_ch_list) self.meas_h03_label = QtGui.QLabel("HMEAS") self.meas_h03_id_label = QtGui.QLabel("ID") self.meas_h03_id_edit = QtGui.QLineEdit() self.meas_h03_ct_label = QtGui.QLabel("CHTYPE") self.meas_h03_ct_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h03_ct_combo.addItem(ch) + self.meas_h03_ct_combo.addItems(h_ch_list) self.meas_h03_x_label = QtGui.QLabel("X (m)") self.meas_h03_x_edit = QtGui.QLineEdit() self.meas_h03_y_label = QtGui.QLabel("Y (m)") @@ -1801,16 +1796,14 @@ def setup_ui(self): self.meas_h03_azm_edit = QtGui.QLineEdit() self.meas_h03_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_h03_acqchn_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_h03_acqchn_combo.addItem(ch) + self.meas_h03_acqchn_combo.addItems(h_ch_list) self.meas_hr1_label = QtGui.QLabel("HMEAS") self.meas_hr1_id_label = QtGui.QLabel("ID") self.meas_hr1_id_edit = QtGui.QLineEdit() self.meas_hr1_ct_label = QtGui.QLabel("CHTYPE") self.meas_hr1_ct_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_hr1_ct_combo.addItem(ch) + self.meas_hr1_ct_combo.addItems(h_ch_list) self.meas_hr1_x_label = QtGui.QLabel("X (m)") self.meas_hr1_x_edit = QtGui.QLineEdit() self.meas_hr1_y_label = QtGui.QLabel("Y (m)") @@ -1819,16 +1812,14 @@ def setup_ui(self): self.meas_hr1_azm_edit = QtGui.QLineEdit() self.meas_hr1_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_hr1_acqchn_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_hr1_acqchn_combo.addItem(ch) + self.meas_hr1_acqchn_combo.addItems(h_ch_list) self.meas_hr2_label = QtGui.QLabel("HMEAS") self.meas_hr2_id_label = QtGui.QLabel("ID") self.meas_hr2_id_edit = QtGui.QLineEdit() self.meas_hr2_ct_label = QtGui.QLabel("CHTYPE") self.meas_hr2_ct_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_hr2_ct_combo.addItem(ch) + self.meas_hr2_ct_combo.addItems(h_ch_list) self.meas_hr2_x_label = QtGui.QLabel("X (m)") self.meas_hr2_x_edit = QtGui.QLineEdit() self.meas_hr2_y_label = QtGui.QLabel("Y (m)") @@ -1837,8 +1828,7 @@ def setup_ui(self): self.meas_hr2_azm_edit = QtGui.QLineEdit() self.meas_hr2_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_hr2_acqchn_combo = QtGui.QComboBox() - for ch in h_ch_list: - self.meas_hr2_acqchn_combo.addItem(ch) + self.meas_hr2_acqchn_combo.addItems(h_ch_list) e_ch_list = ['EX', 'EY', 'EZ'] self.meas_e01_label = QtGui.QLabel("EMEAS") @@ -1846,8 +1836,7 @@ def setup_ui(self): self.meas_e01_id_edit = QtGui.QLineEdit() self.meas_e01_ct_label = QtGui.QLabel("CHTYPE") self.meas_e01_ct_combo = QtGui.QComboBox() - for ch in e_ch_list: - self.meas_e01_ct_combo.addItem(ch) + self.meas_e01_ct_combo.addItems(e_ch_list) self.meas_e01_x_label = QtGui.QLabel("X (m)") self.meas_e01_x_edit = QtGui.QLineEdit() self.meas_e01_y_label = QtGui.QLabel("Y (m)") @@ -1858,16 +1847,14 @@ def setup_ui(self): self.meas_e01_y2_edit = QtGui.QLineEdit() self.meas_e01_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_e01_acqchn_combo = QtGui.QComboBox() - for ch in e_ch_list: - self.meas_e01_acqchn_combo.addItem(ch) + self.meas_e01_acqchn_combo.addItems(e_ch_list) self.meas_e02_label = QtGui.QLabel("EMEAS") self.meas_e02_id_label = QtGui.QLabel("ID") self.meas_e02_id_edit = QtGui.QLineEdit() self.meas_e02_ct_label = QtGui.QLabel("CHTYPE") self.meas_e02_ct_combo = QtGui.QComboBox() - for ch in e_ch_list: - self.meas_e02_ct_combo.addItem(ch) + self.meas_e02_ct_combo.addItems(e_ch_list) self.meas_e02_x_label = QtGui.QLabel("X (m)") self.meas_e02_x_edit = QtGui.QLineEdit() self.meas_e02_y_label = QtGui.QLabel("Y (m)") @@ -1878,8 +1865,9 @@ def setup_ui(self): self.meas_e02_y2_edit = QtGui.QLineEdit() self.meas_e02_acqchn_label = QtGui.QLabel("Acq. Channel") self.meas_e02_acqchn_combo = QtGui.QComboBox() - for ch in e_ch_list: - self.meas_e02_acqchn_combo.addItem(ch) + self.meas_e02_acqchn_combo.addItems(e_ch_list) + + self.fill_meas() ##--> Update button self.update_button = QtGui.QPushButton('Update') @@ -2154,7 +2142,65 @@ def define_set_units(self): self.edi_obj.Define_measurement.units = str(self.define_units_edit.text()) self.define_units_edit.setText('{0}'.format(self.edi_obj.Define_measurement.units)) + def fill_meas(self): + if hasattr(self.edi_obj.Define_measurement, 'meas_hx'): + self.meas_h01_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_hx.id)) + self.meas_h01_azm_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hx.azm)) + self.meas_h01_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hx.x)) + self.meas_h01_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hx.y)) + self.meas_h01_ct_combo.setCurrentIndex(0) + self.meas_h01_acqchn_combo.setCurrentIndex(0) + + if hasattr(self.edi_obj.Define_measurement, 'meas_hy'): + self.meas_h02_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_hy.id)) + self.meas_h02_azm_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hy.azm)) + self.meas_h02_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hy.x)) + self.meas_h02_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hy.y)) + self.meas_h02_ct_combo.setCurrentIndex(1) + self.meas_h02_acqchn_combo.setCurrentIndex(1) + + if hasattr(self.edi_obj.Define_measurement, 'meas_hz'): + self.meas_h03_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_hz.id)) + self.meas_h03_azm_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hz.azm)) + self.meas_h03_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hz.x)) + self.meas_h03_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_hz.y)) + self.meas_h03_ct_combo.setCurrentIndex(2) + self.meas_h03_acqchn_combo.setCurrentIndex(2) + + if hasattr(self.edi_obj.Define_measurement, 'meas_rhx'): + self.meas_hr1_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_rhx.id)) + self.meas_hr1_azm_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhx.azm)) + self.meas_hr1_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhx.x)) + self.meas_hr1_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhx.y)) + self.meas_hr1_ct_combo.setCurrentIndex(3) + self.meas_hr1_acqchn_combo.setCurrentIndex(3) + + if hasattr(self.edi_obj.Define_measurement, 'meas_rhy'): + self.meas_hr2_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_rhy.id)) + self.meas_hr2_azm_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhy.azm)) + self.meas_hr2_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhy.x)) + self.meas_hr2_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_rhy.y)) + self.meas_hr2_ct_combo.setCurrentIndex(4) + self.meas_hr2_acqchn_combo.setCurrentIndex(4) + + if hasattr(self.edi_obj.Define_measurement, 'meas_ex'): + self.meas_e01_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_ex.id)) + self.meas_e01_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ex.x)) + self.meas_e01_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ex.y)) + self.meas_e01_x2_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ex.x2)) + self.meas_e01_y2_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ex.y2)) + self.meas_e01_ct_combo.setCurrentIndex(0) + self.meas_e01_acqchn_combo.setCurrentIndex(0) + + if hasattr(self.edi_obj.Define_measurement, 'meas_ey'): + self.meas_e02_id_edit.setText('{0}'.format(self.edi_obj.Define_measurement.meas_ey.id)) + self.meas_e02_x_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ey.x)) + self.meas_e02_y_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ey.y)) + self.meas_e02_x2_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ey.x2)) + self.meas_e02_y2_edit.setText('{0:.2f}'.format(self.edi_obj.Define_measurement.meas_ey.y2)) + self.meas_e02_ct_combo.setCurrentIndex(1) + self.meas_e02_acqchn_combo.setCurrentIndex(1) def update_metadata(self): self.metadata_updated.emit() diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index b373589a..74459146 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -24,6 +24,7 @@ import mtpy.imaging.mtcolors as mtcl from mtpy.gui.get_edi_files import Get_EDI_Files import sys +import copy class MyStream(QtCore.QObject): @@ -517,6 +518,8 @@ def __init__(self): self.line_mode = 'add_h' self._ax = None + self.model_obj = None + self.setup_ui() def setup_ui(self): @@ -605,8 +608,10 @@ def line_set_del_v(self): def plot_mesh(self, model_obj, east_limits=None, north_limits=None, z_limits=None): + self.model_obj = copy.deepcopy(model_obj) + try: - model_obj.make_mesh() + self.model_obj.make_mesh() except AttributeError: QtGui.QMessageBox.warning(self, 'Cannot Make Mesh -- Need EDI Files', @@ -634,15 +639,15 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, #plot station locations - plot_east = model_obj.station_locations['rel_east']/1000. - plot_north = model_obj.station_locations['rel_north']/1000. + station_plot_east = self.model_obj.station_locations['rel_east']/1000. + station_plot_north = self.model_obj.station_locations['rel_north']/1000. - self.plot_grid_east = model_obj.grid_east.copy()/1000. - self.plot_grid_north = model_obj.grid_north.copy()/1000. - self.plot_grid_z = model_obj.grid_z.copy()/1000. + self.plot_grid_east = self.model_obj.grid_east.copy()/1000. + self.plot_grid_north = self.model_obj.grid_north.copy()/1000. + self.plot_grid_z = self.model_obj.grid_z.copy()/1000. - self.ax_map.scatter(plot_east, - plot_north, + self.ax_map.scatter(station_plot_east, + station_plot_north, marker=self.station_marker, c=self.marker_color, s=self.marker_size, @@ -737,7 +742,7 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, #--> plot stations - self.ax_depth.scatter(plot_east, + self.ax_depth.scatter(station_plot_east, [0]*model_obj.station_locations.shape[0], marker=self.station_marker, c=self.marker_color, @@ -771,16 +776,30 @@ def on_pick(self, event): if self.line_mode == 'add_h' and self._ax == self.ax_map: data_point = event.mouseevent - east = float(data_point.xdata) north = float(data_point.ydata) - print 'drawing line at {0:.2f}, {1:.2f}'.format(east, north) + self.model_obj.grid_north = np.append(self.model_obj.grid_north, north) + self.model_obj.grid_north.sort() self.ax_map.plot([self.plot_grid_east.min(), self.plot_grid_east.max()], [north, north], lw=self.line_width, color='r', picker=3) + + elif self.line_mode == 'add_v' and self._ax == self.ax_map: + data_point = event.mouseevent + + east = float(data_point.xdata) + + self.model_obj.grid_east = np.append(self.model_obj.grid_east, east) + self.model_obj.grid_east.sort() + self.ax_map.plot([east,east], + [self.plot_grid_north.min(), + self.plot_grid_north.max()], + lw=self.line_width, + color='r', + picker=3) self._ax.figure.canvas.draw() From 776b350859f2ac55224057bc06ba29b21203148d Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 6 May 2016 15:00:09 -0700 Subject: [PATCH 094/124] changed reading a modem model file to make grid_east, grid_north based on grid center --- mtpy/gui/edi_editor.py | 14 +++++++++ mtpy/modeling/modem_new.py | 60 ++++++++++++++++++-------------------- 2 files changed, 42 insertions(+), 32 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 7ad82edb..0e629c98 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1611,6 +1611,8 @@ def setup_ui(self): self.setWindowTitle("EDI Text Editor") + + # header label font header_font = QtGui.QFont() header_font.setBold = True @@ -2047,6 +2049,17 @@ def setup_ui(self): self.show() + #center the window, needs to go after show() + self.center_window() + + def center_window(self): + screen_center = QtGui.QDesktopWidget().availableGeometry().center() + widget_size = self.frameGeometry() + + widget_size.moveCenter(screen_center) + + self.move(widget_size.topLeft()) + def header_set_acqby(self): self.edi_obj.Header.acqby = str(self.header_acqby_edit.text()) self.header_acqby_edit.setText(self.edi_obj.Header.acqby) @@ -2204,6 +2217,7 @@ def fill_meas(self): def update_metadata(self): self.metadata_updated.emit() + self.close() #============================================================================== # Def Main diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 7298387c..3dd4e3f6 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -802,14 +802,13 @@ def write_data_file(self, save_path=None, fn_basename=None, self.rotation_angle = rotation_angle #be sure to fill in data array - if fill: + if fill is True: self._fill_data_array() + # get relative station locations in grid coordinates + self.get_relative_station_locations() #reset the header string to be informational self._set_header_string() - - # get relative station locations in grid coordinates - self.get_relative_station_locations() dlines = [] for inv_mode in self.inv_mode_dict[self.inv_mode]: @@ -2166,27 +2165,6 @@ def read_model_file(self, model_fn=None): self.res_model = np.zeros((n_north, n_east, n_z)) - #put the grids into coordinates relative to the center of the grid - self.grid_north = self.nodes_north.copy() - self.grid_north[:int(n_north/2)] =\ - -np.array([self.nodes_north[ii:int(n_north/2)].sum() - for ii in range(int(n_north/2))]) - self.grid_north[int(n_north/2):] = \ - np.array([self.nodes_north[int(n_north/2):ii+1].sum() - for ii in range(int(n_north/2), n_north)])-\ - self.nodes_north[int(n_north/2)] - - self.grid_east = self.nodes_east.copy() - self.grid_east[:int(n_east/2)] = \ - -np.array([self.nodes_east[ii:int(n_east/2)].sum() - for ii in range(int(n_east/2))]) - self.grid_east[int(n_east/2):] = \ - np.array([self.nodes_east[int(n_east/2):ii+1].sum() - for ii in range(int(n_east/2),n_east)])-\ - self.nodes_east[int(n_east/2)] - - self.grid_z = np.array([self.nodes_z[:ii+1].sum() for ii in range(n_z)]) - #get model count_z = 0 line_index= 6 @@ -2231,6 +2209,22 @@ def read_model_file(self, model_fn=None): elif log_yn.lower() == 'log' or log_yn.lower() == 'log10': self.res_model = 10**self.res_model + #put the grids into coordinates relative to the center of the grid + self.grid_north = np.array([self.nodes_north[0:ii].sum() + for ii in range(n_north)]) + self.grid_east = np.array([self.nodes_east[0:ii].sum() + for ii in range(n_east)]) + + self.grid_z = np.array([self.nodes_z[:ii+1].sum() + for ii in range(n_z)]) + + # center the grids + if self.grid_center is not None: + self.grid_north += self.grid_center[0] + self.grid_east += self.grid_center[1] + self.grid_z += self.grid_center[2] + + def read_ws_model_file(self, ws_model_fn): """ reads in a WS3INV3D model file @@ -3073,7 +3067,8 @@ def change_data_elevation(data_fn, model_fn, new_data_fn=None, res_air=1e12): d_obj.write_data_file(save_path=os.path.dirname(new_dfn), fn_basename=os.path.basename(new_dfn), - compute_error=False) + compute_error=False, + fill=False) return new_dfn @@ -7350,15 +7345,16 @@ def plot(self): self.residual.data_array['lat'].min())/5, 2) if x_locator > y_locator: - tick_locator = x_locator + self.tick_locator = x_locator elif x_locator < y_locator: - tick_locator = y_locator + self.tick_locator = y_locator + if self.pad_x is None: - self.pad_x = tick_locator/2 + self.pad_x = self.tick_locator/2 if self.pad_y is None: - self.pad_y = tick_locator/2 + self.pad_y = self.tick_locator/2 plt.rcParams['font.size'] = self.font_size @@ -7454,8 +7450,8 @@ def plot(self): ax.set_ylim(self.residual.data_array['lat'].min()-self.pad_y, self.residual.data_array['lat'].max()+self.pad_y) - ax.xaxis.set_major_locator(MultipleLocator(tick_locator)) - ax.yaxis.set_major_locator(MultipleLocator(tick_locator)) + ax.xaxis.set_major_locator(MultipleLocator(self.tick_locator)) + ax.yaxis.set_major_locator(MultipleLocator(self.tick_locator)) ax.xaxis.set_major_formatter(FormatStrFormatter('%2.2f')) ax.yaxis.set_major_formatter(FormatStrFormatter('%2.2f')) From 310fc5ec7e9bdc6a1036ba0730ea4e84f5a5aef9 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 9 May 2016 16:15:59 -0700 Subject: [PATCH 095/124] changed line 814 to only plot the periods where tipper is non-zero. --- mtpy/gui/modem_plot_response.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index 2f0642f6..0e27e64d 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -811,20 +811,20 @@ def plot(self): **kw_yy) if self.plot_tipper == True: rertx = mtplottools.plot_errorbar(axtxr, - period, + period[ntx], resp_t_obj.tipper[ntx, 0, 0].real, **kw_xx) rerty = mtplottools.plot_errorbar(axtyr, - period, + period[nty], resp_t_obj.tipper[nty, 0, 1].real, **kw_yy) rertx = mtplottools.plot_errorbar(axtxi, - period, + period[ntx], resp_t_obj.tipper[ntx, 0, 0].imag, **kw_xx) rerty = mtplottools.plot_errorbar(axtyi, - period, + period[nty], resp_t_obj.tipper[nty, 0, 1].imag, **kw_yy) From a55e6b7d8558c9c9cee9383a07eb8044b305789c Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 10 May 2016 14:58:12 -0700 Subject: [PATCH 096/124] added functionality to incorporate wave sign and units for modem_new. --- mtpy/modeling/modem_new.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 3dd4e3f6..4eb83e0c 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -1041,6 +1041,10 @@ def read_data_file(self, data_fn=None): header_list.append(dline.strip()) elif dline.find('>') == 0: metadata_list.append(dline[1:].strip()) + if dline.lower().find('ohm') > 0: + self.units = 'ohm' + if dline.lower().find('mv') > 0: + self.units =' [mV/km]/[nT]' if dline.lower().find('vertical') > 0: read_tipper = True read_impedance = False @@ -1056,10 +1060,14 @@ def read_data_file(self, data_fn=None): dline_list = dline.strip().split() if len(dline_list) == 11: for ii, d_str in enumerate(dline_list): - try: - dline_list[ii] = float(d_str.strip()) - except ValueError: - pass + if ii != 1: + try: + dline_list[ii] = float(d_str.strip()) + except ValueError: + pass + # be sure the station name is a string + else: + dline_list[ii] = d_str.strip() period_list.append(dline_list[0]) station_list.append(dline_list[1]) @@ -1127,9 +1135,14 @@ def read_data_file(self, data_fn=None): #fill in the impedance tensor with appropriate values if dd[7].find('Z') == 0: if self.wave_sign_impedance == '+': - data_dict[dd[1]].Z.z[p_index, ii, jj] = dd[8]+1j*dd[9] + z_value = dd[8]+1j*dd[9] elif self.wave_sign_impedance == '-': - data_dict[dd[1]].Z.z[p_index, ii, jj] = dd[8]-1j*dd[9] + z_value = dd[8]-1j*dd[9] + + if self.units == 'ohm': + z_value *= 796. + + data_dict[dd[1]].Z.z[p_index, ii, jj] = z_value data_dict[dd[1]].Z.zerr[p_index, ii, jj] = dd[10] #fill in tipper with appropriate values elif dd[7].find('T') == 0: From b629f154adf7ef52d7cad2a61d164df573c8e79d Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 10 May 2016 16:46:47 -0700 Subject: [PATCH 097/124] fixed modem_new to accommodate different units and wave sign, and adjusted modem_plot_response to mask points properly --- mtpy/gui/modem_plot_response.py | 10 +++++++++- mtpy/modeling/modem_new.py | 31 ++++++++++++++++++++++++------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index 0e27e64d..40f09171 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -315,7 +315,8 @@ def save_edits(self): self.modem_data.write_data_file(save_path=os.path.dirname(save_fn), fn_basename=os.path.basename(save_fn), - compute_error=False) + compute_error=False, + fill=False) def get_station(self, widget_item): """ @@ -886,18 +887,25 @@ def on_pick(self, event): data_period = data_point.get_xdata()[event.ind] data_value = data_point.get_ydata()[event.ind] p_index = np.where(self.modem_data.period_list==data_period)[0][0] + s_index = np.where(self.modem_data.data_array['station']==self.station)[0][0] if event.mouseevent.button == 1: # mask the point in the data mt_dict if len(self.ax_list) == 8: + self.modem_data.data_array[s_index]['z'][p_index, + self._comp_index_x, self._comp_index_y] = 0+0j self.modem_data.mt_dict[self.station].Z.z[p_index, self._comp_index_x, self._comp_index_y] = 0+0j elif len(self.ax_list) == 12: if self._ax_index == 4 or self._ax_index == 5 or \ self._ax_index == 10 or self._ax_index == 11: + self.modem_data.data_array[s_index]['tip'][p_index, + self._comp_index_x, self._comp_index_y] = 0+0j self.modem_data.mt_dict[self.station].Tipper.tipper[p_index, self._comp_index_x, self._comp_index_y] = 0+0j else: + self.modem_data.data_array[s_index]['z'][p_index, + self._comp_index_x, self._comp_index_y] = 0+0j self.modem_data.mt_dict[self.station].Z.z[p_index, self._comp_index_x, self._comp_index_y] = 0+0j # plot the point as masked diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 4eb83e0c..85e46d4c 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -853,8 +853,14 @@ def write_data_file(self, save_path=None, fn_basename=None, nor = '{0:> 12.3f}'.format(self.data_array[ss]['rel_north']) ele = '{0:> 12.3f}'.format(self.data_array[ss]['elev']) com = '{0:>4}'.format(comp.upper()) - rea = '{0:> 14.6e}'.format(zz.real) - ima = '{0:> 14.6e}'.format(zz.imag) + if self.units == 'ohm': + rea = '{0:> 14.6e}'.format(zz.real/796.) + ima = '{0:> 14.6e}'.format(zz.imag/796.) + else: + rea = '{0:> 14.6e}'.format(zz.real) + ima = '{0:> 14.6e}'.format(zz.imag) + + elif self.formatting == '2': per = '{0:<14.6e}'.format(self.period_list[ff]) sta = '{0:<10}'.format(self.data_array[ss]['station']) @@ -864,13 +870,18 @@ def write_data_file(self, save_path=None, fn_basename=None, nor = '{0:> 15.3f}'.format(self.data_array[ss]['rel_north']) ele = '{0:> 10.3f}'.format(self.data_array[ss]['elev']) com = '{0:>12}'.format(comp.upper()) - rea = '{0:> 17.6e}'.format(zz.real) - ima = '{0:> 17.6e}'.format(zz.imag) + if self.units == 'ohm': + rea = '{0:> 17.6e}'.format(zz.real/796.) + ima = '{0:> 17.6e}'.format(zz.imag/796.) + else: + rea = '{0:> 17.6e}'.format(zz.real) + ima = '{0:> 17.6e}'.format(zz.imag) if compute_error: #compute relative error if comp.find('t') == 0: if 'floor' in self.error_type: - abs_err = max(self.error_tipper,self.data_array[ss]['tip_err'][ff,0,z_ii]) + abs_err = max(self.error_tipper, + self.data_array[ss]['tip_err'][ff,0,z_ii]) else: abs_err = self.error_tipper elif comp.find('z') == 0: @@ -900,10 +911,14 @@ def write_data_file(self, save_path=None, fn_basename=None, abs_err = 1e3 print ('error at {0} is 0 for period {1}'.format( sta, per)+'set to 1e3') + if self.units == 'ohm': + abs_err /= 796. else: abs_err = self.data_array[ss][c_key+'_err'][ff, z_ii, z_jj].real - + if c_key.find('z') >= 0 and self.units == 'ohm': + abs_err /= 796. + abs_err = '{0:> 14.6e}'.format(abs(abs_err)) #make sure that x==north, y==east, z==+down dline = ''.join([per, sta, lat, lon, nor, eas, ele, @@ -1134,6 +1149,7 @@ def read_data_file(self, data_fn=None): tf_dict[dd[1]] = True #fill in the impedance tensor with appropriate values if dd[7].find('Z') == 0: + z_err = dd[10] if self.wave_sign_impedance == '+': z_value = dd[8]+1j*dd[9] elif self.wave_sign_impedance == '-': @@ -1141,9 +1157,10 @@ def read_data_file(self, data_fn=None): if self.units == 'ohm': z_value *= 796. + z_err *= 796. data_dict[dd[1]].Z.z[p_index, ii, jj] = z_value - data_dict[dd[1]].Z.zerr[p_index, ii, jj] = dd[10] + data_dict[dd[1]].Z.zerr[p_index, ii, jj] = z_err #fill in tipper with appropriate values elif dd[7].find('T') == 0: if self.wave_sign_tipper == '+': From 710fc487749a37a6e1914140a56db1e303b2288d Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 10 May 2016 18:08:57 -0700 Subject: [PATCH 098/124] modified plot_settings in modem_plot_response to include changing the increase error value. --- mtpy/gui/modem_plot_response.py | 630 ++++++++++++++++++-------------- 1 file changed, 348 insertions(+), 282 deletions(-) diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index 40f09171..100314ae 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -82,6 +82,9 @@ def __init__(self): self.legend_label_spacing = 0.07 self.legend_handle_text_pad = .2 self.legend_border_pad = .15 + + self.z_err_increase = .05 + self.t_err_increase = .05 self.fs = 11 @@ -888,7 +891,7 @@ def on_pick(self, event): data_value = data_point.get_ydata()[event.ind] p_index = np.where(self.modem_data.period_list==data_period)[0][0] s_index = np.where(self.modem_data.data_array['station']==self.station)[0][0] - + if event.mouseevent.button == 1: # mask the point in the data mt_dict if len(self.ax_list) == 8: @@ -921,8 +924,9 @@ def on_pick(self, event): if len(self.ax_list) == 8: err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, self._comp_index_x, self._comp_index_y] - err = err+abs(err)*.05 - print err + err = err+abs(err)*self.z_err_increase + self.modem_data.data_array[s_index]['z_err'][p_index, + self._comp_index_x, self._comp_index_y] = err self.modem_data.mt_dict[self.station].Z.zerr[p_index, self._comp_index_x, self._comp_index_y] = err elif len(self.ax_list) == 12: @@ -930,13 +934,17 @@ def on_pick(self, event): self._ax_index == 10 or self._ax_index == 11: err = self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, self._comp_index_x, self._comp_index_y] + self.modem_data.data_array[s_index]['tip_err'][p_index, + self._comp_index_x, self._comp_index_y] += abs(err)*self.t_err_increase self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, - self._comp_index_x, self._comp_index_y] += abs(err)*.05 + self._comp_index_x, self._comp_index_y] += abs(err)*self.t_err_increase else: err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, self._comp_index_x, self._comp_index_y] + self.modem_data.data_array[s_index]['z_err'][p_index, + self._comp_index_x, self._comp_index_y] += abs(err)*self.z_err_increase self.modem_data.mt_dict[self.station].Z.zerr[p_index, - self._comp_index_x, self._comp_index_y] += abs(err)*.05 + self._comp_index_x, self._comp_index_y] += abs(err)*self.z_err_increase # make error bar array eb = self._err_list[ax_index][2].get_paths()[p_index].vertices @@ -1048,6 +1056,9 @@ def __init__(self, parent, **kwargs): self.subplot_top = kwargs.pop('subplot_top', .93) self.subplot_bottom = kwargs.pop('subplot_bottom', .08) + self.z_err_increase = kwargs.pop('z_err_increase', 0.05) + self.t_err_increase = kwargs.pop('t_err_increase', 0.05) + self.legend_loc = kwargs.pop('legend_loc', 'upper center') self.legend_pos = kwargs.pop('legend_pos', (.5, 1.11)) self.legend_marker_scale = kwargs.pop('legend_marker_scale', 1) @@ -1060,337 +1071,373 @@ def __init__(self, parent, **kwargs): def initUI(self): #--> line properties - fs_label = QtGui.QLabel('Font Size') - fs_edit = QtGui.QLineEdit() - fs_edit.setText('{0:.1f}'.format(self.fs)) - fs_edit.textChanged[str].connect(self.set_text_fs) - - lw_label = QtGui.QLabel('Line Width') - lw_edit = QtGui.QLineEdit() - lw_edit.setText('{0:.1f}'.format(self.lw)) - lw_edit.textChanged[str].connect(self.set_text_lw) - - e_capthick_label = QtGui.QLabel('Error cap thickness') - e_capthick_edit = QtGui.QLineEdit() - e_capthick_edit.setText('{0:.1f}'.format(self.e_capthick)) - e_capthick_edit.textChanged[str].connect(self.set_text_e_capthick) - - e_capsize_label = QtGui.QLabel('Error cap size') - e_capsize_edit = QtGui.QLineEdit() - e_capsize_edit.setText('{0:.1f}'.format(self.e_capsize)) - e_capsize_edit.textChanged[str].connect(self.set_text_e_capsize) + self.fs_label = QtGui.QLabel('Font Size') + self.fs_edit = QtGui.QLineEdit('{0:.1f}'.format(self.fs)) + self.fs_edit.editingFinished.connect(self.set_text_fs) + + self.lw_label = QtGui.QLabel('Line Width') + self.lw_edit = QtGui.QLineEdit('{0:.1f}'.format(self.lw)) + self.lw_edit.editingFinished.connect(self.set_text_lw) + + self.e_capthick_label = QtGui.QLabel('Error cap thickness') + self.e_capthick_edit = QtGui.QLineEdit('{0:.1f}'.format(self.e_capthick)) + self.e_capthick_edit.editingFinished.connect(self.set_text_e_capthick) + + self.e_capsize_label = QtGui.QLabel('Error cap size') + self.e_capsize_edit = QtGui.QLineEdit('{0:.1f}'.format(self.e_capsize)) + self.e_capsize_edit.editingFinished.connect(self.set_text_e_capsize) grid_line = QtGui.QGridLayout() - grid_line.setSpacing(10) - grid_line.addWidget(fs_label, 1, 0) - grid_line.addWidget(fs_edit, 1, 1) + grid_line.addWidget(self.fs_label, 1, 0) + grid_line.addWidget(self.fs_edit, 1, 1) - grid_line.addWidget(lw_label, 1, 2) - grid_line.addWidget(lw_edit, 1, 3) + grid_line.addWidget(self.lw_label, 1, 2) + grid_line.addWidget(self.lw_edit, 1, 3) - grid_line.addWidget(e_capthick_label, 1, 4) - grid_line.addWidget(e_capthick_edit, 1, 5) + grid_line.addWidget(self.e_capthick_label, 1, 4) + grid_line.addWidget(self.e_capthick_edit, 1, 5) - grid_line.addWidget(e_capsize_label, 1, 6) - grid_line.addWidget(e_capsize_edit, 1, 7) + grid_line.addWidget(self.e_capsize_label, 1, 6) + grid_line.addWidget(self.e_capsize_edit, 1, 7) #--> marker properties - ms_label = QtGui.QLabel('Marker Size') - ms_edit = QtGui.QLineEdit() - ms_edit.setText('{0:.1f}'.format(self.ms)) - ms_edit.textChanged[str].connect(self.set_text_ms) - - dcxy_label = QtGui.QLabel('Data Color xy') - dcxy_edit = QtGui.QLineEdit() - dcxy_edit.setText('{0}'.format(self.cted)) - dcxy_edit.textChanged[str].connect(self.set_text_cted) - - dcyx_label = QtGui.QLabel('Data Color yx') - dcyx_edit = QtGui.QLineEdit() - dcyx_edit.setText('{0}'.format(self.ctmd)) - dcyx_edit.textChanged[str].connect(self.set_text_ctmd) - - dmxy_label = QtGui.QLabel('Data Marker xy') - dmxy_edit = QtGui.QLineEdit() - dmxy_edit.setText('{0}'.format(self.mted)) - dmxy_edit.textChanged[str].connect(self.set_text_mted) - - dmyx_label = QtGui.QLabel('Data Marker yx') - dmyx_edit = QtGui.QLineEdit() - dmyx_edit.setText('{0}'.format(self.mtmd)) - dmyx_edit.textChanged[str].connect(self.set_text_mtmd) - - mcxy_label = QtGui.QLabel('Model Color xy') - mcxy_edit = QtGui.QLineEdit() - mcxy_edit.setText('{0}'.format(self.ctem)) - mcxy_edit.textChanged[str].connect(self.set_text_ctem) - - mcyx_label = QtGui.QLabel('Model Color yx') - mcyx_edit = QtGui.QLineEdit() - mcyx_edit.setText('{0}'.format(self.ctmm)) - mcyx_edit.textChanged[str].connect(self.set_text_ctmm) - - mmxy_label = QtGui.QLabel('Model Marker xy') - mmxy_edit = QtGui.QLineEdit() - mmxy_edit.setText('{0}'.format(self.mtem)) - mmxy_edit.textChanged[str].connect(self.set_text_mtem) - - mmyx_label = QtGui.QLabel('Model Marker yx') - mmyx_edit = QtGui.QLineEdit() - mmyx_edit.setText('{0}'.format(self.mtmm)) - mmyx_edit.textChanged[str].connect(self.set_text_mtmm) - - marker_label = QtGui.QLabel('Maker Properties:') + self.ms_label = QtGui.QLabel('Marker Size') + self.ms_edit = QtGui.QLineEdit() + self.ms_edit.setText('{0:.1f}'.format(self.ms)) + self.ms_edit.editingFinished.connect(self.set_text_ms) + + self.mted_label = QtGui.QLabel("Marker x components (data)") + self.mted_combo = QtGui.QComboBox() + self.mted_combo.addItem(self.mted) + self.mted_combo.addItem('.') + self.mted_combo.addItem(',') + self.mted_combo.addItem('o') + self.mted_combo.addItem('v') + self.mted_combo.addItem('^') + self.mted_combo.addItem('<') + self.mted_combo.addItem('>') + self.mted_combo.addItem('s') + self.mted_combo.addItem('p') + self.mted_combo.addItem('*') + self.mted_combo.addItem('h') + self.mted_combo.addItem('H') + self.mted_combo.addItem('+') + self.mted_combo.addItem('x') + self.mted_combo.addItem('D') + self.mted_combo.addItem('d') + self.mted_combo.addItem('|') + self.mted_combo.addItem('_') + self.mted_combo.activated[str].connect(self.set_mted) + + self.mtmd_label = QtGui.QLabel("Marker y components (data)") + self.mtmd_combo = QtGui.QComboBox() + self.mtmd_combo.addItem(self.mtmd) + self.mtmd_combo.addItem('.') + self.mtmd_combo.addItem(',') + self.mtmd_combo.addItem('o') + self.mtmd_combo.addItem('v') + self.mtmd_combo.addItem('^') + self.mtmd_combo.addItem('<') + self.mtmd_combo.addItem('>') + self.mtmd_combo.addItem('s') + self.mtmd_combo.addItem('p') + self.mtmd_combo.addItem('*') + self.mtmd_combo.addItem('h') + self.mtmd_combo.addItem('H') + self.mtmd_combo.addItem('+') + self.mtmd_combo.addItem('x') + self.mtmd_combo.addItem('D') + self.mtmd_combo.addItem('d') + self.mtmd_combo.addItem('|') + self.mtmd_combo.addItem('_') + self.mtmd_combo.activated[str].connect(self.set_mtmd) + + self.mtem_label = QtGui.QLabel("Marker x components (model)") + self.mtem_combo = QtGui.QComboBox() + self.mtem_combo.addItem(self.mtem) + self.mtem_combo.addItem('.') + self.mtem_combo.addItem(',') + self.mtem_combo.addItem('o') + self.mtem_combo.addItem('v') + self.mtem_combo.addItem('^') + self.mtem_combo.addItem('<') + self.mtem_combo.addItem('>') + self.mtem_combo.addItem('s') + self.mtem_combo.addItem('p') + self.mtem_combo.addItem('*') + self.mtem_combo.addItem('h') + self.mtem_combo.addItem('H') + self.mtem_combo.addItem('+') + self.mtem_combo.addItem('x') + self.mtem_combo.addItem('D') + self.mtem_combo.addItem('d') + self.mtem_combo.addItem('|') + self.mtem_combo.addItem('_') + self.mtem_combo.activated[str].connect(self.set_mtem) + + self.mtmm_label = QtGui.QLabel("Marker y components (model)") + self.mtmm_combo = QtGui.QComboBox() + self.mtmm_combo.addItem(self.mtmm) + self.mtmm_combo.addItem('.') + self.mtmm_combo.addItem(',') + self.mtmm_combo.addItem('o') + self.mtmm_combo.addItem('v') + self.mtmm_combo.addItem('^') + self.mtmm_combo.addItem('<') + self.mtmm_combo.addItem('>') + self.mtmm_combo.addItem('s') + self.mtmm_combo.addItem('p') + self.mtmm_combo.addItem('*') + self.mtmm_combo.addItem('h') + self.mtmm_combo.addItem('H') + self.mtmm_combo.addItem('+') + self.mtmm_combo.addItem('x') + self.mtmm_combo.addItem('D') + self.mtmm_combo.addItem('d') + self.mtmm_combo.addItem('|') + self.mtmm_combo.addItem('_') + self.mtmm_combo.activated[str].connect(self.set_mtmm) + + self.cted_button = QtGui.QPushButton("Set Z_xi Color (data)") + self.cted_button.pressed.connect(self.set_cted) + + self.ctmd_button = QtGui.QPushButton("Set Z_yi Color (data)") + self.ctmd_button.pressed.connect(self.set_ctmd) + + + self.ctem_button = QtGui.QPushButton("Set Z_xi Color (model)") + self.ctem_button.pressed.connect(self.set_ctem) + + self.ctmm_button = QtGui.QPushButton("Set Z_yi Color (model)") + self.ctmm_button.pressed.connect(self.set_ctmm) + + + marker_size_grid = QtGui.QGridLayout() + marker_size_grid.addWidget(self.ms_label, 0, 0) + marker_size_grid.addWidget(self.ms_edit, 0, 1) marker_grid = QtGui.QGridLayout() - marker_grid.setSpacing(10) - - marker_grid.addWidget(marker_label, 1, 0) - marker_grid.addWidget(ms_label, 1, 2) - marker_grid.addWidget(ms_edit, 1, 3) - marker_grid.addWidget(dcxy_label, 2, 0) - marker_grid.addWidget(dcxy_edit, 2, 1) + marker_grid.addWidget(self.mted_label, 0, 0) + marker_grid.addWidget(self.mted_combo, 0, 1) - marker_grid.addWidget(dcyx_label, 2, 2) - marker_grid.addWidget(dcyx_edit, 2, 3) + marker_grid.addWidget(self.mtmd_label, 0, 2) + marker_grid.addWidget(self.mtmd_combo, 0, 3) - marker_grid.addWidget(dmxy_label, 2, 4) - marker_grid.addWidget(dmxy_edit, 2, 5) + marker_grid.addWidget(self.mtem_label, 0, 4) + marker_grid.addWidget(self.mtem_combo, 0, 5) - marker_grid.addWidget(dmyx_label, 2, 6) - marker_grid.addWidget(dmyx_edit, 2, 7) + marker_grid.addWidget(self.mtmm_label, 0, 6) + marker_grid.addWidget(self.mtmm_combo, 0, 7) - marker_grid.addWidget(mcxy_label, 3, 0) - marker_grid.addWidget(mcxy_edit, 3, 1) + marker_grid.addWidget(self.cted_button, 1, 0, 2, 2) + marker_grid.addWidget(self.ctmd_button, 1, 2, 2, 2) + marker_grid.addWidget(self.ctem_button, 1, 4, 2, 2) + marker_grid.addWidget(self.ctmm_button, 1, 6, 2, 2) - marker_grid.addWidget(mcyx_label, 3, 2) - marker_grid.addWidget(mcyx_edit, 3, 3) + marker_layout = QtGui.QVBoxLayout() + marker_layout.addLayout(marker_size_grid) + marker_layout.addLayout(marker_grid) - marker_grid.addWidget(mmxy_label, 3, 4) - marker_grid.addWidget(mmxy_edit, 3, 5) - marker_grid.addWidget(mmyx_label, 3, 6) - marker_grid.addWidget(mmyx_edit, 3, 7) + #-> increase error by this percent + self.z_err_inc_label = QtGui.QLabel('Z error increase (%)') + self.z_err_inc_edit = QtGui.QLineEdit('{0:.2f}'.format(self.z_err_increase*100)) + self.z_err_inc_edit.editingFinished.connect(self.set_z_err_inc) + + self.t_err_inc_label = QtGui.QLabel('Tipper error increase (%)') + self.t_err_inc_edit = QtGui.QLineEdit('{0:.2f}'.format(self.z_err_increase*100)) + self.t_err_inc_edit.editingFinished.connect(self.set_z_err_inc) + + err_grid = QtGui.QGridLayout() + err_grid.addWidget(self.z_err_inc_label, 0, 0) + err_grid.addWidget(self.z_err_inc_edit, 0, 1) + err_grid.addWidget(self.t_err_inc_label, 0, 2) + err_grid.addWidget(self.t_err_inc_edit, 0, 3) #--> plot limits - ylimr_xx_label = QtGui.QLabel('Res_xx') - ylimr_xx_edit = QtGui.QLineEdit() - ylimr_xx_edit.setText('{0}'.format(self.res_xx_limits)) - ylimr_xx_edit.textChanged[str].connect(self.set_text_res_xx) - - ylimr_xy_label = QtGui.QLabel('Res_xy') - ylimr_xy_edit = QtGui.QLineEdit() - ylimr_xy_edit.setText('{0}'.format(self.res_xy_limits)) - ylimr_xy_edit.textChanged[str].connect(self.set_text_res_xy) - - ylimr_yx_label = QtGui.QLabel('Res_yx') - ylimr_yx_edit = QtGui.QLineEdit() - ylimr_yx_edit.setText('{0}'.format(self.res_yx_limits)) - ylimr_yx_edit.textChanged[str].connect(self.set_text_res_yx) - - ylimr_yy_label = QtGui.QLabel('Res_yy') - ylimr_yy_edit = QtGui.QLineEdit() - ylimr_yy_edit.setText('{0}'.format(self.res_yy_limits)) - ylimr_yy_edit.textChanged[str].connect(self.set_text_res_yy) - - ylimp_xx_label = QtGui.QLabel('phase_xx') - ylimp_xx_edit = QtGui.QLineEdit() - ylimp_xx_edit.setText('{0}'.format(self.phase_xx_limits)) - ylimp_xx_edit.textChanged[str].connect(self.set_text_phase_xx) - - ylimp_xy_label = QtGui.QLabel('phase_xy') - ylimp_xy_edit = QtGui.QLineEdit() - ylimp_xy_edit.setText('{0}'.format(self.phase_xy_limits)) - ylimp_xy_edit.textChanged[str].connect(self.set_text_phase_xy) - - ylimp_yx_label = QtGui.QLabel('phase_yx') - ylimp_yx_edit = QtGui.QLineEdit() - ylimp_yx_edit.setText('{0}'.format(self.phase_yx_limits)) - ylimp_yx_edit.textChanged[str].connect(self.set_text_phase_yx) - - ylimp_yy_label = QtGui.QLabel('phase_yy') - ylimp_yy_edit = QtGui.QLineEdit() - ylimp_yy_edit.setText('{0}'.format(self.phase_yy_limits)) - ylimp_yy_edit.textChanged[str].connect(self.set_text_phase_yy) + self.ylimr_xx_label = QtGui.QLabel('Res_xx') + self.ylimr_xx_edit = QtGui.QLineEdit() + self.ylimr_xx_edit.setText('{0}'.format(self.res_xx_limits)) + self.ylimr_xx_edit.editingFinished.connect(self.set_text_res_xx) + + self.ylimr_xy_label = QtGui.QLabel('Res_xy') + self.ylimr_xy_edit = QtGui.QLineEdit() + self.ylimr_xy_edit.setText('{0}'.format(self.res_xy_limits)) + self.ylimr_xy_edit.editingFinished.connect(self.set_text_res_xy) + + self.ylimr_yx_label = QtGui.QLabel('Res_yx') + self.ylimr_yx_edit = QtGui.QLineEdit() + self.ylimr_yx_edit.setText('{0}'.format(self.res_yx_limits)) + self.ylimr_yx_edit.editingFinished.connect(self.set_text_res_yx) + + self.ylimr_yy_label = QtGui.QLabel('Res_yy') + self.ylimr_yy_edit = QtGui.QLineEdit() + self.ylimr_yy_edit.setText('{0}'.format(self.res_yy_limits)) + self.ylimr_yy_edit.editingFinished.connect(self.set_text_res_yy) + + self.ylimp_xx_label = QtGui.QLabel('phase_xx') + self.ylimp_xx_edit = QtGui.QLineEdit() + self.ylimp_xx_edit.setText('{0}'.format(self.phase_xx_limits)) + self.ylimp_xx_edit.editingFinished.connect(self.set_text_phase_xx) + + self.ylimp_xy_label = QtGui.QLabel('phase_xy') + self.ylimp_xy_edit = QtGui.QLineEdit() + self.ylimp_xy_edit.setText('{0}'.format(self.phase_xy_limits)) + self.ylimp_xy_edit.editingFinished.connect(self.set_text_phase_xy) + + self.ylimp_yx_label = QtGui.QLabel('phase_yx') + self.ylimp_yx_edit = QtGui.QLineEdit() + self.ylimp_yx_edit.setText('{0}'.format(self.phase_yx_limits)) + self.ylimp_yx_edit.editingFinished.connect(self.set_text_phase_yx) + + self.ylimp_yy_label = QtGui.QLabel('phase_yy') + self.ylimp_yy_edit = QtGui.QLineEdit() + self.ylimp_yy_edit.setText('{0}'.format(self.phase_yy_limits)) + self.ylimp_yy_edit.editingFinished.connect(self.set_text_phase_yy) limits_grid = QtGui.QGridLayout() - limits_grid.setSpacing(10) limits_label = QtGui.QLabel('Plot Limits: (Res=Real, Phase=Imaginary)' ' --> input on a linear scale') - limits_grid.addWidget(limits_label, 1, 0, 1, 7) - - limits_grid.addWidget(ylimr_xx_label, 2, 0) - limits_grid.addWidget(ylimr_xx_edit, 2, 1) - limits_grid.addWidget(ylimr_xy_label, 2, 2) - limits_grid.addWidget(ylimr_xy_edit, 2, 3) - limits_grid.addWidget(ylimr_yx_label, 2, 4) - limits_grid.addWidget(ylimr_yx_edit, 2, 5) - limits_grid.addWidget(ylimr_yy_label, 2, 6) - limits_grid.addWidget(ylimr_yy_edit, 2, 7) - - limits_grid.addWidget(ylimp_xx_label, 3, 0) - limits_grid.addWidget(ylimp_xx_edit, 3, 1) - limits_grid.addWidget(ylimp_xy_label, 3, 2) - limits_grid.addWidget(ylimp_xy_edit, 3, 3) - limits_grid.addWidget(ylimp_yx_label, 3, 4) - limits_grid.addWidget(ylimp_yx_edit, 3, 5) - limits_grid.addWidget(ylimp_yy_label, 3, 6) - limits_grid.addWidget(ylimp_yy_edit, 3, 7) + limits_grid.addWidget(limits_label, 0, 0, 7, 1) + + limits_grid.addWidget(self.ylimr_xx_label, 2, 0) + limits_grid.addWidget(self.ylimr_xx_edit, 2, 1) + limits_grid.addWidget(self.ylimr_xy_label, 2, 2) + limits_grid.addWidget(self.ylimr_xy_edit, 2, 3) + limits_grid.addWidget(self.ylimr_yx_label, 2, 4) + limits_grid.addWidget(self.ylimr_yx_edit, 2, 5) + limits_grid.addWidget(self.ylimr_yy_label, 2, 6) + limits_grid.addWidget(self.ylimr_yy_edit, 2, 7) + + limits_grid.addWidget(self.ylimp_xx_label, 3, 0) + limits_grid.addWidget(self.ylimp_xx_edit, 3, 1) + limits_grid.addWidget(self.ylimp_xy_label, 3, 2) + limits_grid.addWidget(self.ylimp_xy_edit, 3, 3) + limits_grid.addWidget(self.ylimp_yx_label, 3, 4) + limits_grid.addWidget(self.ylimp_yx_edit, 3, 5) + limits_grid.addWidget(self.ylimp_yy_label, 3, 6) + limits_grid.addWidget(self.ylimp_yy_edit, 3, 7) #--> legend properties - legend_pos_label = QtGui.QLabel('Legend Position') - legend_pos_edit = QtGui.QLineEdit() - legend_pos_edit.setText('{0}'.format(self.legend_pos)) - legend_pos_edit.textChanged[str].connect(self.set_text_legend_pos) + self.legend_pos_label = QtGui.QLabel('Legend Position') + self.legend_pos_edit = QtGui.QLineEdit() + self.legend_pos_edit.setText('{0}'.format(self.legend_pos)) + self.legend_pos_edit.editingFinished.connect(self.set_text_legend_pos) legend_grid = QtGui.QGridLayout() legend_grid.setSpacing(10) legend_grid.addWidget(QtGui.QLabel('Legend Properties:'), 1, 0) - legend_grid.addWidget(legend_pos_label, 1, 2,) - legend_grid.addWidget(legend_pos_edit, 1, 3) + legend_grid.addWidget(self.legend_pos_label, 1, 2,) + legend_grid.addWidget(self.legend_pos_edit, 1, 3) update_button = QtGui.QPushButton('Update') update_button.clicked.connect(self.update_settings) vbox = QtGui.QVBoxLayout() vbox.addLayout(grid_line) - vbox.addLayout(marker_grid) + vbox.addLayout(marker_layout) + vbox.addLayout(err_grid) vbox.addLayout(limits_grid) vbox.addLayout(legend_grid) vbox.addWidget(update_button) self.setLayout(vbox) - self.setGeometry(300, 300, 350, 300) - self.resize(1350, 500) + #self.setGeometry(300, 300, 350, 300) + #self.resize(1350, 500) self.setWindowTitle('Plot Settings') self.show() - - def set_text_fs(self, text): - try: - self.fs = float(text) - except ValueError: - print "Enter a float point number" - - def set_text_e_capthick(self, text): + + def _test_float(self, text): try: - self.e_capthick = float(text) + return_float = float(str(text)) except ValueError: - print "Enter a float point number" + print 'Enter a floating point number' + return_float = 1.0 - def set_text_e_capsize(self, text): - try: - self.e_capsize = float(text) - except ValueError: - print "Enter a float point number" + return return_float - - def set_text_lw(self, text): - try: - self.lw = float(text) - except ValueError: - print "Enter a float point number" - - def set_text_ms(self, text): - try: - self.ms = float(text) - except ValueError: - print "Enter a float point number" - - def set_text_cted(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.cted = tuple(l_list) - - def set_text_ctmd(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctmd = tuple(l_list) - - def set_text_mted(self, text): - try: - self.mted = str(text) - except ValueError: - print "Enter a string" - - def set_text_mtmd(self, text): - try: - self.mtmd = str(text) - except ValueError: - print "Enter a string" + def set_text_fs(self): + self.fs = self._test_float(self.fs_edit.text()) + self.fs_edit.setText('{0:.1f}'.format(self.fs)) + + def set_text_e_capthick(self): + self.e_capthick_edit = self._test_float(self.e_capthick_edit.text()) + self.e_capthick_edit.setText('{0:.1f}'.format(self.e_capthick)) - def set_text_ctem(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctem = tuple(l_list) + def set_text_e_capsize(self): + self.e_capsize_edit = self._test_float(self.e_capsize_edit.text()) + self.e_capsize_edit.setText('{0:.1f}'.format(self.e_capsize)) - def set_text_ctmm(self, text): - if text =='None': - return - text = text.replace('(', '').replace(')', '') - t_list = text.split(',') - if len(t_list) != 3: - print 'enter as (r, g, b)' - l_list = [] - for txt in t_list: - try: - l_list.append(float(txt)) - except ValueError: - pass - if len(l_list) == 3: - self.ctmm = tuple(l_list) - - def set_text_mtem(self, text): - try: - self.mtem = str(text) - except ValueError: - print "Enter a string" + def set_text_lw(self): + self.lw = self._test_float(self.lw_edit.text()) + self.lw_edit.setText('{0:.2f}'.format(self.lw)) - def set_text_mtmm(self, text): - try: - self.mtmm = str(text) - except ValueError: - print "Enter a string" + def set_text_ms(self, text): + self.ms = self._test_float(self.ms_edit.text()) + self.ms_edit.setText('{0:.1f}'.format(self.ms)) + + def set_mted(self, text): + self.mted = text + + def set_mtmd(self, text): + self.mtmd = text + + def set_mtem(self, text): + self.mtem = text + + def set_mtmm(self, text): + self.mtmm = text + + def convert_color_to_qt(self, color): + """ + convert decimal tuple to QColor object + """ + r = int(color[0]*255) + g = int(color[1]*255) + b = int(color[2]*255) + + return QtGui.QColor(r, g, b) + + def set_cted(self): + initial_color = self.convert_color_to_qt(self.cted) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.cted = (r, g, b) + + def set_ctmd(self): + initial_color = self.convert_color_to_qt(self.ctmd) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.ctmd = (r, g, b) + + def set_ctem(self): + initial_color = self.convert_color_to_qt(self.ctem) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.ctem = (r, g, b) + + def set_ctmm(self): + initial_color = self.convert_color_to_qt(self.ctmm) + new_color = QtGui.QColorDialog.getColor(initial_color) + + r,g,b,a = new_color.getRgbF() + + self.ctmm = (r, g, b) - def set_text_res_xx(self, text): + def set_text_res_xx(self): + text = self.ylimr_xx_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1407,6 +1454,7 @@ def set_text_res_xx(self, text): self.res_xx_limits = tuple(l_list) def set_text_res_xy(self, text): + text = self.ylimr_xy_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1423,6 +1471,7 @@ def set_text_res_xy(self, text): self.res_xy_limits = tuple(l_list) def set_text_res_yx(self, text): + text = self.ylimr_yx_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1439,6 +1488,7 @@ def set_text_res_yx(self, text): self.res_yx_limits = tuple(l_list) def set_text_res_yy(self, text): + text = self.ylimr_yy_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1455,6 +1505,7 @@ def set_text_res_yy(self, text): self.res_yy_limits = tuple(l_list) def set_text_phase_xx(self, text): + text = self.ylimp_xx_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1471,6 +1522,7 @@ def set_text_phase_xx(self, text): self.phase_xx_limits = tuple(l_list) def set_text_phase_xy(self, text): + text = self.ylimp_xy_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1487,6 +1539,7 @@ def set_text_phase_xy(self, text): self.phase_xy_limits = tuple(l_list) def set_text_phase_yx(self, text): + text = self.ylimp_yx_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1503,6 +1556,7 @@ def set_text_phase_yx(self, text): self.phase_yx_limits = tuple(l_list) def set_text_phase_yy(self, text): + text = self.ylimp_yy_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1518,7 +1572,8 @@ def set_text_phase_yy(self, text): if len(l_list) == 2: self.phase_yy_limits = tuple(l_list) - def set_text_legend_pos(self, text): + def set_text_legend_pos(self): + text = self.legend_pos_edit.text() if text =='None': return text = text.replace('(', '').replace(')', '') @@ -1534,6 +1589,17 @@ def set_text_legend_pos(self, text): if len(l_list) == 2: self.legend_pos = tuple(l_list) + def set_z_err_inc(self): + err = float(str(self.z_err_inc_edit.text()))/100. + self.z_err_increase = err + self.z_err_inc_edit.setText('{0:.2f}'.format(err*100.)) + + def set_t_err_inc(self): + err = float(str(self.t_err_inc_edit.text()))/100. + self.t_err_increase = err + self.t_err_inc_edit.setText('{0:.2f}'.format(err*100.)) + + def update_settings(self): self.settings_updated.emit() From a8f656590e38cd4a024cf93c3dae24044e4c3706 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 11 May 2016 18:25:50 -0700 Subject: [PATCH 099/124] adding ability to add node lines in mesh_builder --- mtpy/gui/modem_mesh_builder.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 74459146..abf17aad 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -375,8 +375,27 @@ def save_model_fn(self): sv_path = os.path.dirname(save_fn) sv_basename = os.path.basename(save_fn) + + # be sure to change the grid into nodes + east_nodes = self._grid_to_nodes(self.model_obj.grid_east) + north_nodes = self._grid_to_nodes(self.model_obj.grid_north) + z_nodes = self._grid_to_nodes(self.model_obj.grid_z) + self.model_obj.write_model_file(save_path=sv_path, - model_fn_basename=sv_basename) + model_fn_basename=sv_basename, + nodes_east=east_nodes, + nodes_north=north_nodes, + nodes_z=z_nodes) + + def _grid_to_nodes(self, grid_array): + nodes_array = grid_array.copy() + nx = grid_array.shape[0] + nodes_array[:nx/2] = np.array([abs(grid_array[ii]-grid_array[ii+1]) + for ii in range(int(nx/2))]) + nodes_array[nx/2:] = np.array([abs(grid_array[ii]-grid_array[ii+1]) + for ii in range(int(nx/2)-1, nx-1)]) + return nodes_array + def locate_station(self): From 3def2fb1c4dc377ef32e44bdbfa5878ad83f123e Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 11 May 2016 18:31:18 -0700 Subject: [PATCH 100/124] adding ability to add node lines in mesh_builder --- mtpy/modeling/modem_new.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index 85e46d4c..e5809940 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -2041,9 +2041,9 @@ def write_model_file(self, **kwargs): if self.res_model is None or type(self.res_model) is float or\ type(self.res_model) is int: - res_model = np.zeros((self.grid_north.shape[0], - self.grid_east.shape[0], - self.grid_z.shape[0])) + res_model = np.zeros((self.nodes_north.shape[0], + self.nodes_east.shape[0], + self.nodes_z.shape[0])) if self.res_model is None: res_model[:, :, :] = 100.0 From 82999d42eacda06c0966b736e4bb3cb2b7570c37 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 11 May 2016 19:33:46 -0700 Subject: [PATCH 101/124] Added ability to add mesh lines in mesh_builder and write to a file. --- mtpy/gui/modem_mesh_builder.py | 48 ++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index abf17aad..5fb908cc 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -377,9 +377,11 @@ def save_model_fn(self): sv_basename = os.path.basename(save_fn) # be sure to change the grid into nodes - east_nodes = self._grid_to_nodes(self.model_obj.grid_east) - north_nodes = self._grid_to_nodes(self.model_obj.grid_north) - z_nodes = self._grid_to_nodes(self.model_obj.grid_z) + east_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) + north_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) + z_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) + + print east_nodes self.model_obj.write_model_file(save_path=sv_path, model_fn_basename=sv_basename, @@ -486,12 +488,26 @@ def plot_mesh(self): self.mpl_widget.plot_mesh(self.model_obj) def save_mesh(self): - fn = str(QtGui.QFileDialog.getSaveFileName(self, - caption='Choose Model File', - directory=os.getcwd())) + fn_dialog = QtGui.QFileDialog() + save_fn = str(fn_dialog.getSaveFileName( + caption='Choose ModEM model file', + filter='*.rho')) - self.model_obj.write_model_file(save_path=os.path.dirname(fn), - model_fn_basename=os.path.basename(fn)) + sv_path = os.path.dirname(save_fn) + sv_basename = os.path.basename(save_fn) + + # be sure to change the grid into nodes + east_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) + north_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) + z_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) + + print east_nodes + + self.model_obj.write_model_file(save_path=sv_path, + model_fn_basename=sv_basename, + nodes_east=east_nodes, + nodes_north=north_nodes, + nodes_z=z_nodes) def set_rho(self): if self.model_obj.res_model is None: @@ -795,13 +811,16 @@ def on_pick(self, event): if self.line_mode == 'add_h' and self._ax == self.ax_map: data_point = event.mouseevent - north = float(data_point.ydata) + north = np.round(float(data_point.ydata)*1000., -2) - self.model_obj.grid_north = np.append(self.model_obj.grid_north, north) + print north + self.model_obj.grid_north = np.append(self.model_obj.grid_north, + north) self.model_obj.grid_north.sort() + print self.model_obj.grid_north self.ax_map.plot([self.plot_grid_east.min(), self.plot_grid_east.max()], - [north, north], + [north/1000., north/1000.], lw=self.line_width, color='r', picker=3) @@ -809,11 +828,12 @@ def on_pick(self, event): elif self.line_mode == 'add_v' and self._ax == self.ax_map: data_point = event.mouseevent - east = float(data_point.xdata) + east = np.round(float(data_point.xdata)*1000, -2) - self.model_obj.grid_east = np.append(self.model_obj.grid_east, east) + self.model_obj.grid_east = np.append(self.model_obj.grid_east, + east) self.model_obj.grid_east.sort() - self.ax_map.plot([east,east], + self.ax_map.plot([east/1000., east/1000.], [self.plot_grid_north.min(), self.plot_grid_north.max()], lw=self.line_width, From 70034ff03319597a12ce873c82fae4cd553d5281 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 16 May 2016 18:02:59 -0700 Subject: [PATCH 102/124] fixing distortion removal to allow for zeros in the impedance and look at both 1d and 2d parts --- mtpy/analysis/distortion.py | 362 +++++++++++++++--------------------- mtpy/analysis/pt.py | 65 ++++--- mtpy/core/mt.py | 5 +- mtpy/gui/edi_editor.py | 26 ++- 4 files changed, 214 insertions(+), 244 deletions(-) diff --git a/mtpy/analysis/distortion.py b/mtpy/analysis/distortion.py index 644075fd..8017b180 100644 --- a/mtpy/analysis/distortion.py +++ b/mtpy/analysis/distortion.py @@ -33,6 +33,7 @@ import mtpy.analysis.geometry as MTge import mtpy.utils.exceptions as MTex import mtpy.utils.calculator as MTcc +import copy #reload(MTex) #reload(MTz) @@ -61,7 +62,7 @@ -def find_distortion(z_object, g = 'det', lo_dims = None): +def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): """ find optimal distortion tensor from z object @@ -69,232 +70,171 @@ def find_distortion(z_object, g = 'det', lo_dims = None): the appropriate distortion tensor D """ - z_obj = z_object - - if lo_dims is None : - lo_dims = MTge.dimensionality(z_object = z_obj) - try: - if len(lo_dims) != len(z_obj.z): - lo_dims = MTge.dimensionality(z_object = z_obj) - except: - pass + z_obj = copy.deepcopy(z_object) + + if num_freq is not None: + if num_freq > z_obj.freq.size: + num_freq = z_obj.freq.size + print 'Number of frequencies to sweep over is too high for z' + print 'setting num_freq to {0}'.format(num_freq) + else: + num_freq = z_obj.freq.size + + z_obj.z = z_obj.z[0:num_freq] + z_obj.zerr = z_obj.zerr[0:num_freq] + z_obj.freq = z_obj.freq[0:num_freq] + + + g = 'det' + + dim_arr = MTge.dimensionality(z_object=z_obj) + st_arr = -1*MTge.strike_angle(z_object=z_obj)[:, 0] + + dis = np.zeros_like(z_obj.z, dtype=np.float) + dis_err = np.ones_like(z_obj.z, dtype=np.float) + #dictionary of values that should be no distortion in case distortion #cannot be calculated for that component - dis_dict = {(0,0):1, (0,1):0, (1,0):0, (1,1):1} - - lo_dis = [] - lo_diserr = [] - - if 1 in lo_dims: - idx_1 = np.where(np.array(lo_dims) == 1)[0] - - for idx in idx_1: - - realz = np.real(z_obj.z[idx]) - imagz = np.imag(z_obj.z[idx]) - - mat1 = np.matrix([[0, -1],[1, 0]]) - - - if g in ['01','10']: - gr = np.abs(realz[int(g[0]),int(g[1])]) - gi = np.abs(imagz[int(g[0]),int(g[1])]) + + rot_mat = np.matrix([[0, -1], [1, 0]]) + for idx, dim in enumerate(dim_arr): + if dim == 1: + + if g in ['01', '10']: + gr = np.abs(z_obj.z.real[idx, int(g[0]), int(g[1])]) + gi = np.abs(z_obj.z.imag[idx, int(g[0]), int(g[1])]) else: - gr = np.sqrt(np.linalg.det(realz)) - gi = np.sqrt(np.linalg.det(imagz)) - - lo_dis.append(1./gr*np.dot(realz,mat1)) - lo_dis.append(1./gi*np.dot(imagz,mat1)) - + gr = np.sqrt(np.linalg.det(z_obj.z.real[idx])) + gi = np.sqrt(np.linalg.det(z_obj.z.imag[idx])) + + dis[idx] = np.mean(np.array([(1./gr*np.dot(z_obj.z.real[idx], + rot_mat)), + (1./gi*np.dot(z_obj.z.imag[idx], + rot_mat))]), + axis=0) + if z_obj.zerr is not None: #find errors of entries for calculating weights - - lo_diserr.append(1./gr*\ - np.array([[np.abs(z_obj.zerr[idx][0,1]), - np.abs(z_obj.zerr[idx][0,0])], - [np.abs(z_obj.zerr[idx][1,1]), - np.abs(z_obj.zerr[idx][1,0])]])) - - lo_diserr.append(1./gi*\ - np.array([[np.abs(z_obj.zerr[idx][0,1]), - np.abs(z_obj.zerr[idx][0,0])], - [np.abs(z_obj.zerr[idx][1,1]), - np.abs(z_obj.zerr[idx][1,0])]])) - - else: - #otherwise go for evenly weighted average - lo_diserr.append(np.ones((2, 2))) - lo_diserr.append(np.ones((2, 2))) - - - dis = np.identity(2) - diserr = np.identity(2) - for i in range(2): - for j in range(2): - try: - dis[i,j], dummy = np.average(np.array([k[i, j] - for k in lo_dis]), - weights=np.array([1./(k[i,j])**2 - for k in lo_diserr]), - returned=True) - diserr[i,j] = np.sqrt(1./dummy) - - #if the distortion came out as nan set it to an appropriate - #value - if np.nan_to_num(dis[i,j]) == 0: - dis[i, j] = dis_dict[i, j] - diserr[i, j] = dis_dict[i, j] - - except ZeroDivisionError: - - print ('Could not get distortion for dis[{0}, {1}]'.format( - i, j)+' setting value to {0}'.format(dis_dict[i,j])) - dis[i, j] = dis_dict[i, j] - diserr[i, j] = dis_dict[i, j]*1e-6 - return dis, diserr - - if 2 in lo_dims: - idx_2 = np.where(np.array(lo_dims) == 2)[0] - #follow bibby et al. 2005 first alternative: P = 1 - P = 1 - - lo_strikes = MTge.strike_angle(z_object = z_obj) - lo_tetms = [] - lo_t = [] - lo_tetm_errs =[] - - for idx in idx_2: - - mat = z_obj.z[idx] - ang = -lo_strikes[idx][0] - if np.isnan(ang): - ang = 0. - - errmat = None + gr_err = 1./gr*np.abs(z_obj.zerr[idx]) + gr_err[np.where(gr_err == 0.0)] = 1.0 + + gi_err = 1./gi*np.abs(z_obj.zerr[idx]) + gi_err[np.where(gi_err == 0.0)] = 1.0 + + dis_err[idx] = np.mean(np.array([gi_err, gr_err]), + axis=0) + + elif dim == 2: + P = 1 + strike_ang = st_arr[idx] + if np.isnan(strike_ang): + strike_ang = 0.0 + if z_obj.zerr is not None: - errmat = z_obj.zerr[idx] - tetm_mat, tetm_err = MTcc.rotatematrix_incl_errors(mat, - ang, - inmatrix_err=errmat) - - lo_tetms.append(tetm_mat) - - lo_tetm_errs.append(tetm_err) - - realz = np.real(tetm_mat) - imagz = np.imag(tetm_mat) - lo_t.append(-4*P*realz[0,1]*realz[1,0]/np.linalg.det(realz) ) - lo_t.append(-4*P*imagz[0,1]*imagz[1,0]/np.linalg.det(imagz) ) - - #since there is no 'wrong' solution by a different value of T, no - #error is given/calculated for T ! - try: - #just add 0.1% for avoiding numerical issues in the squareroots - #later on - T = np.sqrt(max(lo_t))+0.001 - except: - T = 2 - - - for idx in range(len(lo_tetms)): - - realz = np.real(lo_tetms[idx]) - imagz = np.imag(lo_tetms[idx]) - errmat = lo_tetm_errs[idx] + err_arr = z_obj.zerr[idx] + err_arr[np.where(err_arr == 0.0)] = 1.0 + else: + err_arr = None + + tetm_arr, tetm_err = MTcc.rotatematrix_incl_errors(z_obj.z[idx], + strike_ang, + inmatrix_err=err_arr) - sr = np.sqrt(T**2+4*P*realz[0, 1]*realz[1, 0]/np.linalg.det(realz)) - si = np.sqrt(T**2+4*P*imagz[0, 1]*imagz[1, 0]/np.linalg.det(imagz)) - - par_r = 2*realz[0, 1]/(T-sr) - orth_r = 2*realz[1, 0]/(T+sr) - par_i = 2*imagz[0, 1]/(T-si) - orth_i = 2*imagz[1, 0]/(T+si) - + tetm_r = tetm_arr.real + tetm_i = tetm_arr.imag + t_arr_r = -4*P*tetm_r[0, 1]*tetm_r[1, 0]/np.linalg.det(tetm_r) + t_arr_i = -4*P*tetm_i[0, 1]*tetm_i[1, 0]/np.linalg.det(tetm_i) + + try: + T = np.sqrt(max([t_arr_r, t_arr_i]))+.001 + except ValueError: + T = 2 + + sr = np.sqrt(T**2+4*P*tetm_r[0, 1]*tetm_r[1, 0]/np.linalg.det(tetm_r)) + si = np.sqrt(T**2+4*P*tetm_i[0, 1]*tetm_i[1, 0]/np.linalg.det(tetm_i)) + + par_r = 2*tetm_r[0, 1]/(T-sr) + orth_r = 2*tetm_r[1, 0]/(T+sr) + par_i = 2*tetm_i[0, 1]/(T-si) + orth_i = 2*tetm_i[1, 0]/(T+si) + mat2_r = np.matrix([[0, 1./orth_r], [1./par_r, 0]]) mat2_i = np.matrix([[0, 1./orth_i], [1./par_i ,0]]) - - lo_dis.append(np.dot(realz,mat2_r)) - lo_dis.append(np.dot(imagz,mat2_i)) - - if z_obj.zerr is not None: + + avg_mat = np.mean(np.array([np.dot(tetm_r, mat2_r), + np.dot(tetm_i, mat2_i)]), + axis=0) + + dis[idx] = avg_mat + + if err_arr is not None: #find errors of entries for calculating weights - sigma_sr = np.sqrt((-(2*P*realz[0,1]*realz[1,0]*\ - realz[1,1]*errmat[0,0])/\ - (np.linalg.det(realz)**2*sr))**2+\ - ((2*P*realz[0,0]*realz[1,0]*\ - realz[1,1]*errmat[0,1])/\ - (np.linalg.det(realz)**2*sr))**2+\ - ((2*P*realz[0,0]* realz[0,1]*\ - realz[1,1]*errmat[1,0])/\ - (np.linalg.det(realz)**2*sr))**2 +\ - (-(2*P*realz[0,1]* realz[1,0]*\ - realz[0,0]*errmat[1,1])/\ - (np.linalg.det(realz)**2*sr))**2) - + sigma_sr = np.sqrt((-(2*P*tetm_r[0,1]*tetm_r[1,0]*\ + tetm_r[1,1]*err_arr[0,0])/\ + (np.linalg.det(tetm_r)**2*sr))**2+\ + ((2*P*tetm_r[0,0]*tetm_r[1,0]*\ + tetm_r[1,1]*err_arr[0,1])/\ + (np.linalg.det(tetm_r)**2*sr))**2+\ + ((2*P*tetm_r[0,0]* tetm_r[0,1]*\ + tetm_r[1,1]*err_arr[1,0])/\ + (np.linalg.det(tetm_r)**2*sr))**2 +\ + (-(2*P*tetm_r[0,1]* tetm_r[1,0]*\ + tetm_r[0,0]*err_arr[1,1])/\ + (np.linalg.det(tetm_r)**2*sr))**2) + sigma_dr_11 = 0.5*sigma_sr sigma_dr_22 = 0.5*sigma_sr - - sigma_dr_12 = np.sqrt((mat2_r[0,1]/realz[0,0]*errmat[0,0])**2+\ - (mat2_r[0,1]/realz[1,0]*errmat[1,0])**2+\ - (0.5*realz[0,0]/realz[1,0]*sigma_sr)**2) - sigma_dr_21 = np.sqrt((mat2_r[1,0]/realz[1,1]*errmat[1,1])**2+\ - (mat2_r[1,0]/realz[0,1]*errmat[0,1])**2+\ - (0.5*realz[1,1]/realz[0,1]*sigma_sr)**2) - - lo_diserr.append(np.array([[sigma_dr_11, sigma_dr_12], - [sigma_dr_21, sigma_dr_22]])) - - sigma_si = np.sqrt((-(2*P*imagz[0,1]*imagz[1,0]*\ - imagz[1,1]*errmat[0,0])/\ - (np.linalg.det(imagz)**2*sr))**2+\ - ((2*P*imagz[0,0]*imagz[1,0]*\ - imagz[1,1]*errmat[0,1])/\ - (np.linalg.det(imagz)**2*sr))**2+\ - ((2*P*imagz[0,0]*imagz[0,1]*\ - imagz[1,1]*errmat[1,0])/\ - (np.linalg.det(imagz)**2*sr))**2+\ - (-(2*P*imagz[0,1]*imagz[1,0]*\ - imagz[0,0]*errmat[1,1])/\ - (np.linalg.det(imagz)**2*sr))**2) - + + sigma_dr_12 = np.sqrt((mat2_r[0,1]/tetm_r[0,0]*err_arr[0,0])**2+\ + (mat2_r[0,1]/tetm_r[1,0]*err_arr[1,0])**2+\ + (0.5*tetm_r[0,0]/tetm_r[1,0]*sigma_sr)**2) + sigma_dr_21 = np.sqrt((mat2_r[1,0]/tetm_r[1,1]*err_arr[1,1])**2+\ + (mat2_r[1,0]/tetm_r[0,1]*err_arr[0,1])**2+\ + (0.5*tetm_r[1,1]/tetm_r[0,1]*sigma_sr)**2) + + dis_err_r = np.array([[sigma_dr_11, sigma_dr_12], + [sigma_dr_21, sigma_dr_22]]) + + sigma_si = np.sqrt((-(2*P*tetm_i[0,1]*tetm_i[1,0]*\ + tetm_i[1,1]*err_arr[0,0])/\ + (np.linalg.det(tetm_i)**2*sr))**2+\ + ((2*P*tetm_i[0,0]*tetm_i[1,0]*\ + tetm_i[1,1]*err_arr[0,1])/\ + (np.linalg.det(tetm_i)**2*sr))**2+\ + ((2*P*tetm_i[0,0]*tetm_i[0,1]*\ + tetm_i[1,1]*err_arr[1,0])/\ + (np.linalg.det(tetm_i)**2*sr))**2+\ + (-(2*P*tetm_i[0,1]*tetm_i[1,0]*\ + tetm_i[0,0]*err_arr[1,1])/\ + (np.linalg.det(tetm_i)**2*sr))**2) + sigma_di_11 = 0.5*sigma_si sigma_di_22 = 0.5*sigma_si - sigma_di_12 = np.sqrt((mat2_i[0,1]/imagz[0,0]*errmat[0,0])**2+\ - (mat2_i[0,1]/imagz[1,0]*errmat[1,0])**2+\ - (0.5*imagz[0,0]/imagz[1,0]*sigma_si)**2) - sigma_di_21 = np.sqrt((mat2_i[1,0]/imagz[1,1]*errmat[1,1])**2+\ - (mat2_i[1,0]/imagz[0,1]*errmat[0,1])**2+\ - (0.5*imagz[1,1]/imagz[0,1]*sigma_si)**2) - - lo_diserr.append(np.array([[sigma_di_11, sigma_di_12], - [sigma_di_21, sigma_di_22]])) - - else: - #otherwise go for evenly weighted average - lo_diserr.append(np.ones((2, 2))) - lo_diserr.append(np.ones((2, 2))) - - - dis = np.zeros((2, 2)) - diserr = np.zeros((2, 2)) - for i in range(2): - for j in range(2): - - dis[i, j], dummy = np.average(np.array([k[i, j] - for k in lo_dis]), - weights=np.array([1./(k[i,j])**2 - for k in lo_diserr]), - returned=True ) - diserr[i, j] = np.sqrt(1./dummy) + sigma_di_12 = np.sqrt((mat2_i[0,1]/tetm_i[0,0]*err_arr[0,0])**2+\ + (mat2_i[0,1]/tetm_i[1,0]*err_arr[1,0])**2+\ + (0.5*tetm_i[0,0]/tetm_i[1,0]*sigma_si)**2) + sigma_di_21 = np.sqrt((mat2_i[1,0]/tetm_i[1,1]*err_arr[1,1])**2+\ + (mat2_i[1,0]/tetm_i[0,1]*err_arr[0,1])**2+\ + (0.5*tetm_i[1,1]/tetm_i[0,1]*sigma_si)**2) + + dis_err_i = np.array([[sigma_di_11, sigma_di_12], + [sigma_di_21, sigma_di_22]]) + + dis_err[idx] = np.mean(np.array([dis_err_r, dis_err_i])) + else: + dis[idx] = np.identity(2) + + nonzero_idx = np.array(list(set(np.nonzero(dis)[0]))) + + dis_avg, dis_avg_err = np.average(dis[nonzero_idx], + axis=0, + weights=(1./dis_err[nonzero_idx])**2, + returned=True) - return dis, diserr - #if only 3D, use identity matrix - no distortion calculated - dis = np.identity(2) - diserr = diserr = np.zeros((2, 2)) - return dis, diserr + return dis_avg, dis_avg_err @@ -359,7 +299,7 @@ def find_2d_distortion(z_object, include_non2d=False): return find_distortion(z_obj, lo_dims = lo_dims) -def remove_distortion(z_array=None, z_object=None): +def remove_distortion(z_array=None, z_object=None, num_freq=None): if z_array is not None: z_obj = MTz.Z(z_array=z_array) @@ -371,7 +311,7 @@ def remove_distortion(z_array=None, z_object=None): #1. find distortion via function above, #2. remove distortion via method of z object - dis, diserr = find_distortion(z_obj) + dis, diserr = find_distortion(z_obj, num_freq=num_freq) try: distortion_tensor, zd, zd_err = z_obj.no_distortion(dis, diff --git a/mtpy/analysis/pt.py b/mtpy/analysis/pt.py index 2009861c..db202d39 100644 --- a/mtpy/analysis/pt.py +++ b/mtpy/analysis/pt.py @@ -982,39 +982,46 @@ def compute_residual_pt(self, pt_o1, pt_o2): #--> compute residual phase tensor if pt1 is not None and pt2 is not None: - try: - if pt1.dtype not in [float,int]: - raise - if pt2.dtype not in [float,int]: - raise - if not pt1.shape == pt2.shape: - raise - if (not len(pt1.shape) in [2,3]) : - raise - - if len(pt1.shape) == 3: - self.rpt = np.zeros_like(pt1) - - for idx in range(len(pt1)): + if pt1.dtype not in [float,int]: + raise ValueError + if pt2.dtype not in [float,int]: + raise ValueError + if not pt1.shape == pt2.shape: + raise MTex.MTpyError_PT('PT arrays not the same shape') + if (not len(pt1.shape) in [2,3]) : + raise MTex.MTpyError_PT('PT array is not a valid shape') + + if len(pt1.shape) == 3: + self.rpt = np.zeros_like(pt1) + + for idx in range(len(pt1)): + try: self.rpt[idx] = np.eye(2)-np.dot(np.matrix(pt1[idx]).I, np.matrix(pt2[idx])) - - self._pt1 = pt1 - self._pt2 = pt2 + except np.linalg.LinAlgError: + print 'Singular matrix at index {0}, frequency {1:.5g}'.format(idx, self.freq[idx]) + print 'Setting residual PT to zeros. ' + self.rpt[idx] = np.zeros((2, 2)) + + self._pt1 = pt1 + self._pt2 = pt2 - else: - self.rpt = np.zeros((1,2,2)) - self.rpt[0] = np.eye(2)-np.dot(np.matrix(pt1).I, - np.matrix(pt2)) - - self._pt1 = np.zeros((1,2,2)) - self._pt1[0] = pt1 - self._pt2 = np.zeros((1,2,2)) - self._pt2[0] = pt2 + else: + self.rpt = np.zeros((1,2,2)) + try: + self.rpt[idx] = np.eye(2)-np.dot(np.matrix(pt1).I, + np.matrix(pt2)) + except np.linalg.LinAlgError: + print 'Singular matrix at frequency {0:.5g}'.format(self.freq) + print 'Setting residual PT to zeros. ' + self.rpt[0] = np.eye(2)-np.dot(np.matrix(pt1).I, + np.matrix(pt2)) + + self._pt1 = np.zeros((1,2,2)) + self._pt1[0] = pt1 + self._pt2 = np.zeros((1,2,2)) + self._pt2[0] = pt2 - except: - raise MTex.MTpyError_PT('ERROR - both PhaseTensor objects must' - ' contain valid PT arrays of the same shape') else: print ('Could not determine ResPT - both PhaseTensor objects must' diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index 0c2d7966..cd9c2995 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -500,7 +500,7 @@ def _check_freq_order(self): self.Tipper.tippererr = self.Tipper.tippererr.copy()[::-1] self.Tipper.freq = self.Tipper.freq.copy()[::-1] - def remove_distortion(self): + def remove_distortion(self, num_freq=None): """ remove distortion following Bibby et al. [2005]. @@ -515,7 +515,8 @@ def remove_distortion(self): >>> new_Z=new_z) """ dummy_z_obj = MTz.copy.deepcopy(self.Z) - D, new_z_object = MTdistortion.remove_distortion(z_object=dummy_z_obj) + D, new_z_object = MTdistortion.remove_distortion(z_object=dummy_z_obj, + num_freq=num_freq) return D, new_z_object diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 0e629c98..27b3f4b7 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -173,6 +173,7 @@ def __init__(self): self.interp_period_min = .001 self.interp_period_max = 1000. self.interp_period_num = 24 + self.num_freq = None self.setup_ui() @@ -267,6 +268,11 @@ def setup_ui(self): self.remove_distortion_button.setText("Remove Distortion [Bibby et al., 2005]") self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) + self.remove_distortion_num_freq_label = QtGui.QLabel("Number of Frequencies") + self.remove_distortion_num_freq_edit = QtGui.QLineEdit() + if self.mt_obj.Z.freq is not None: + self.remove_distortion_num_freq_edit.setText('{0:.0f}'.format(self.mt_obj.Z.freq.size)) + self.remove_distortion_num_freq_edit.editingFinished.connect(self.remove_distortion_set_num_freq) ## rotate data self.rotate_data_label = QtGui.QLabel("Rotate") self.rotate_data_label.setFont(header_font) @@ -408,6 +414,10 @@ def setup_ui(self): interp_layout.addWidget(self.interp_num_label, 3, 0) interp_layout.addWidget(self.interp_num_edit, 3, 1) + dis_hbox = QtGui.QHBoxLayout() + dis_hbox.addWidget(self.remove_distortion_num_freq_label) + dis_hbox.addWidget(self.remove_distortion_num_freq_edit) + ## left panel info_layout = QtGui.QVBoxLayout() info_layout.addLayout(meta_layout) @@ -415,6 +425,7 @@ def setup_ui(self): info_layout.addWidget(h_line_01) info_layout.addWidget(self.remove_distortion_label) info_layout.addWidget(self.remove_distortion_button) + info_layout.addLayout(dis_hbox) info_layout.addWidget(h_line_02) info_layout.addLayout(ss_layout) info_layout.addWidget(h_line_03) @@ -508,6 +519,17 @@ def static_shift_apply(self): self.mt_obj.Z = new_z_obj self.redraw_plot() + def remove_distortion_set_num_freq(self): + """ + set number of frequencies to remove distortion from + """ + + try: + self.num_freq = int(str(self.remove_distortion_num_freq_edit.text())) + self.remove_distortion_num_freq_edit.setText('{0:.0f}'.format(self.num_freq)) + except ValueError: + self.num_freq = None + def remove_distortion_apply(self): """ remove distortion from the mt repsonse @@ -515,12 +537,12 @@ def remove_distortion_apply(self): if self._edited_dist == False and self._edited_rot == False and \ self._edited_mask == False: # remove distortion from original data - distortion, new_z_object = self._mt_obj.remove_distortion() + distortion, new_z_object = self._mt_obj.remove_distortion(num_freq=self.num_freq) print '\n - Removed distortion from original data' else: # remove distortion from edited data - distortion, new_z_object = self.mt_obj.remove_distortion() + distortion, new_z_object = self.mt_obj.remove_distortion(num_freq=self.num_freq) print '\n - Removed distortion from edited data' self._edited_dist = True From 001108b869580ab2f461ef5f99443d1e57791f84 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 17 May 2016 17:48:40 -0700 Subject: [PATCH 103/124] adjusted distortion and static shift to be compatible with edi_editor, added removal of nan on estimation of spectra in edi --- mtpy/analysis/distortion.py | 18 ++- mtpy/analysis/staticshift.py | 102 +++++++++++--- mtpy/core/edi.py | 14 +- mtpy/gui/edi_editor.py | 254 +++++++++++++++++++++++++++++++---- 4 files changed, 336 insertions(+), 52 deletions(-) diff --git a/mtpy/analysis/distortion.py b/mtpy/analysis/distortion.py index 8017b180..c6ac653a 100644 --- a/mtpy/analysis/distortion.py +++ b/mtpy/analysis/distortion.py @@ -99,6 +99,11 @@ def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): rot_mat = np.matrix([[0, -1], [1, 0]]) for idx, dim in enumerate(dim_arr): + if np.any(z_obj.z[idx] == 0.0+0.0j) == True: + dis[idx] = np.identity(2) + print 'Found a zero in z at {0}, skipping'.format(idx) + continue + if dim == 1: if g in ['01', '10']: @@ -228,11 +233,12 @@ def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): nonzero_idx = np.array(list(set(np.nonzero(dis)[0]))) - dis_avg, dis_avg_err = np.average(dis[nonzero_idx], + dis_avg, weights_sum = np.average(dis[nonzero_idx], axis=0, weights=(1./dis_err[nonzero_idx])**2, returned=True) + dis_avg_err = np.sqrt(1./weights_sum) return dis_avg, dis_avg_err @@ -306,18 +312,24 @@ def remove_distortion(z_array=None, z_object=None, num_freq=None): elif z_object is not None: z_obj = z_object + + zero_idx = np.where(z_obj.z == 0+0j) #0. generate a Z object #1. find distortion via function above, #2. remove distortion via method of z object - dis, diserr = find_distortion(z_obj, num_freq=num_freq) + dis, dis_err = find_distortion(z_obj, num_freq=num_freq) try: distortion_tensor, zd, zd_err = z_obj.no_distortion(dis, - distortion_err_tensor=diserr) + distortion_err_tensor=dis_err) + + zd_err = np.nan_to_num(zd_err) + zd_err[np.where(zd_err == 0.0)] = 1.0 distortion_z_obj = z_obj distortion_z_obj.z = zd + distortion_z_obj.z[zero_idx] = 0.0+0.0j distortion_z_obj.zerr = zd_err return distortion_tensor, distortion_z_obj diff --git a/mtpy/analysis/staticshift.py b/mtpy/analysis/staticshift.py index 5ac7885c..bef8eeee 100644 --- a/mtpy/analysis/staticshift.py +++ b/mtpy/analysis/staticshift.py @@ -18,9 +18,8 @@ import mtpy.imaging.mtplot as mtplot #============================================================================== -def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, - freq_skip=4, shift_tol=.15, plot=False): - +def estimate_static_spatial_median(edi_fn, radius=1000., num_freq=20, + freq_skip=4, shift_tol=.15): """ Remove static shift from a station using a spatial median filter. This will look at all the edi files in the same directory as edi_fn and find @@ -57,24 +56,15 @@ def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, away from 1. Therefore the shift_tol is used to stop that bias. If 1-tol < correction < 1+tol then the correction factor is set to 1. *default* is 0.15 - - **plot** : [ True | False ] - Boolean to plot the corrected response against the - non-corrected response. *default* is False + Returns ---------------- - **new_edi_fn_ss** : string - new path to the edi file with static shift removed **shift_corrections** : (float, float) static shift corrections for x and y modes - **plot_obj** : mtplot.plot_multiple_mt_responses object - If plot is True a plot_obj is returned - If plot is False None is returned - """ - + """ # convert meters to decimal degrees so we don't have to deal with zone # changes meter_to_deg_factor = 8.994423457456377e-06 @@ -82,9 +72,11 @@ def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, # make a list of edi files in the directory edi_path = os.path.dirname(edi_fn) - edi_list = [os.path.join(edi_path, edi) for edi in os.listdir(edi_path) - if edi.find('.edi') > 0] - edi_list.remove(edi_fn) + edi_list = [os.path.abspath(os.path.join(edi_path, edi)) + for edi in os.listdir(edi_path) + if edi.endswith('.edi')] + + edi_list.remove(os.path.abspath(edi_fn)) # read the edi file mt_obj = mt.MT(edi_fn) @@ -100,6 +92,10 @@ def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, mt_obj_2.delta_d = float(delta_d)/meter_to_deg_factor mt_obj_list.append(mt_obj_2) + if len(mt_obj_list) == 0: + print 'No stations found within given radius {0:.2f} m'.format(radius) + return 1.0, 1.0 + # extract the resistivity values from the near by stations res_array = np.zeros((len(mt_obj_list), num_freq, 2, 2)) print 'These stations are within the given {0} m radius:'.format(radius) @@ -128,11 +124,75 @@ def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, if 1-shift_tol < static_shift_y and static_shift_y < 1+shift_tol: static_shift_y = 1.0 - print 'x static shift is {0:.3f}'.format(static_shift_x) - print 'y static shift is {0:.3f}'.format(static_shift_y) + return static_shift_x, static_shift_y + +def remove_static_shift_spatial_filter(edi_fn, radius=1000, num_freq=20, + freq_skip=4, shift_tol=.15, plot=False): + + """ + Remove static shift from a station using a spatial median filter. This + will look at all the edi files in the same directory as edi_fn and find + those station within the given radius (meters). Then it will find + the medain static shift for the x and y modes and remove it, given that + it is larger than the shift tolerance away from 1. A new edi file will + be written in a new folder called SS. + + Arguments + ----------------- + **edi_fn** : string + full path to edi file to have static shift removed + + **radius** : float + radius to look for nearby stations, in meters. + *default* is 1000 m + + **num_freq** : int + number of frequencies calculate the median static + shift. This is assuming the first frequency is the + highest frequency. Cause usually highest frequencies + are sampling a 1D earth. *default* is 20 + + **freq_skip** : int + number of frequencies to skip from the highest + frequency. Sometimes the highest frequencies are + not reliable due to noise or low signal in the AMT + deadband. This allows you to skip those frequencies. + *default* is 4 + + **shift_tol** : float + Tolerance on the median static shift correction. If + the data is noisy the correction factor can be biased + away from 1. Therefore the shift_tol is used to stop + that bias. If 1-tol < correction < 1+tol then the + correction factor is set to 1. *default* is 0.15 + + **plot** : [ True | False ] + Boolean to plot the corrected response against the + non-corrected response. *default* is False + + Returns + ---------------- + **new_edi_fn_ss** : string + new path to the edi file with static shift removed + + **shift_corrections** : (float, float) + static shift corrections for x and y modes + + **plot_obj** : mtplot.plot_multiple_mt_responses object + If plot is True a plot_obj is returned + If plot is False None is returned + """ + + ss_x, ss_y = estimate_static_spatial_median(edi_fn, + radius=radius, + num_freq=num_freq, + freq_skip=freq_skip, + shift_tol=.15) + mt_obj = mt.MT(edi_fn) - s, z_ss = mt_obj.Z.no_ss(reduce_res_factor_x=static_shift_x, - reduce_res_factor_y=static_shift_y) + s, z_ss = mt_obj.Z.no_ss(reduce_res_factor_x=ss_x, + reduce_res_factor_y=ss_y) + edi_path = os.path.dirname(edi_fn) mt_obj.Z.z = z_ss new_edi_fn = os.path.join(edi_path, 'SS', '{0}_ss.edi'.format(mt_obj.station)) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 1acf1677..e10b8d1d 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -456,6 +456,13 @@ def _read_spectra(self, data_lines, t_err_arr[kk, 0, 1] = np.sqrt(scaling*s_arr[cc.hx, cc.hx].real) + # check for nans + z_err_arr = np.nan_to_num(z_err_arr) + t_err_arr = np.nan_to_num(t_err_arr) + + z_err_arr[np.where(z_err_arr==0.0)] = 1.0 + t_err_arr[np.where(t_err_arr==0.0)] = 1.0 + # be sure to fill attributes self.Z.z = z_arr self.Z.zerr = z_err_arr @@ -1628,11 +1635,10 @@ def write_data_sect(self, data_sect_list=None): if data_sect_list is not None: self.read_data_sect(data_sect_list) - if self.data_type == 'spectra': - data_sect_lines = ['\n>=spectrasect\n'.upper()] + self.data_type = 'z' + print 'Writing out data a impedances' - if self.data_type == 'z': - data_sect_lines = ['\n>=mtsect\n'.upper()] + data_sect_lines = ['\n>=mtsect\n'.upper()] for key in self._kw_list: data_sect_lines.append('{0}{1}={2}\n'.format(tab, key.upper(), diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 27b3f4b7..2455492b 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -22,6 +22,8 @@ import sys import os import mtpy.imaging.plotstrike2d as plotstrike2d +import mtpy.analysis.staticshift as staticshift +import matplotlib.widgets as mplwidgets #============================================================================== # UI @@ -131,6 +133,10 @@ def edit_plot_properties(self): def update_plot(self): + self.mask_kw = {'color' : self.plot_properties.mask_color, + 'marker' : self.plot_properties.mask_marker, + 'ms' : self.plot_properties.mask_ms, + 'mew' : self.plot_properties.mask_mew} self.plot_widget.redraw_plot() def edit_metadata(self): @@ -168,12 +174,20 @@ def __init__(self): self._edited_dist = False self._edited_rot = False self._edited_mask = False + self._ax = None self.dir_path = os.getcwd() + self.edits_mode = 'both' self.interp_period_min = .001 self.interp_period_max = 1000. self.interp_period_num = 24 self.num_freq = None + self.static_shift_med_rad = 2000. + self.static_shift_med_num_freq = 24 + self.mask_kw = {'color' : self.plot_properties.mask_color, + 'marker' : self.plot_properties.mask_marker, + 'ms' : self.plot_properties.mask_ms, + 'mew' : self.plot_properties.mask_mew} self.setup_ui() @@ -248,11 +262,11 @@ def setup_ui(self): self.static_shift_label = QtGui.QLabel("Static Shift") self.static_shift_label.setFont(header_font) - self.static_shift_x_label = QtGui.QLabel("X") + self.static_shift_x_label = QtGui.QLabel("Shift X") self.static_shift_x_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_x)) self.static_shift_x_edit.editingFinished.connect(self.static_shift_set_x) - self.static_shift_y_label = QtGui.QLabel("Y") + self.static_shift_y_label = QtGui.QLabel("Shift Y") self.static_shift_y_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_y)) self.static_shift_y_edit.editingFinished.connect(self.static_shift_set_y) @@ -260,6 +274,19 @@ def setup_ui(self): self.static_shift_apply_button.setText("Apply") self.static_shift_apply_button.pressed.connect(self.static_shift_apply) + self.static_shift_med_filt_button = QtGui.QPushButton() + self.static_shift_med_filt_button.setText("Estimate Spatial Median Static Shift") + self.static_shift_med_filt_button.pressed.connect(self.static_shift_med_filt_estimate) + + self.static_shift_med_rad_label = QtGui.QLabel("Spatial Radius (m)") + self.static_shift_med_rad_edit = QtGui.QLineEdit('{0:.2f}'.format(self.static_shift_med_rad)) + self.static_shift_med_rad_edit.editingFinished.connect(self.static_shift_med_rad_set) + + self.static_shift_med_num_freq_label = QtGui.QLabel("Number of Frequencies") + self.static_shift_med_num_freq_edit = QtGui.QLineEdit() + self.static_shift_med_num_freq_edit.setText('{0}'.format(self.static_shift_med_num_freq)) + self.static_shift_med_num_freq_edit.editingFinished.connect(self.static_shift_med_num_freq_set) + ## remove distortion self.remove_distortion_label = QtGui.QLabel("Remove Distortion") self.remove_distortion_label.setFont(header_font) @@ -314,8 +341,14 @@ def setup_ui(self): self.interp_num_edit.editingFinished.connect(self.interp_set_num) ## tools label - self.tools_label = QtGui.QLabel("Tools") + self.tools_label = QtGui.QLabel("Editing Tools") self.tools_label.setFont(header_font) + + ## edit x, y or both + self.edits_mode_label = QtGui.QLabel("Mode To Edit") + self.edits_combo = QtGui.QComboBox() + self.edits_combo.addItems(['Both', 'X', 'Y']) + self.edits_combo.currentIndexChanged.connect(self.edits_set) ## apply edits button self.edits_apply_button = QtGui.QPushButton() @@ -390,7 +423,12 @@ def setup_ui(self): ss_layout.addWidget(self.static_shift_x_label, 1, 0) ss_layout.addWidget(self.static_shift_x_edit, 1, 1) ss_layout.addWidget(self.static_shift_y_label, 1, 2) - ss_layout.addWidget(self.static_shift_y_edit, 1, 3) + ss_layout.addWidget(self.static_shift_y_edit, 1, 3) + ss_layout.addWidget(self.static_shift_med_rad_label, 2, 0) + ss_layout.addWidget(self.static_shift_med_rad_edit, 2, 1) + ss_layout.addWidget(self.static_shift_med_num_freq_label, 2, 2) + ss_layout.addWidget(self.static_shift_med_num_freq_edit, 2, 3) + ss_layout.addWidget(self.static_shift_med_filt_button, 3, 0, 1, 4) ## rotation rot_layout = QtGui.QGridLayout() @@ -418,6 +456,15 @@ def setup_ui(self): dis_hbox.addWidget(self.remove_distortion_num_freq_label) dis_hbox.addWidget(self.remove_distortion_num_freq_edit) + edit_layout = QtGui.QGridLayout() + edit_layout.addWidget(self.tools_label, 0, 0, 1, 2) + edit_layout.addWidget(self.edits_mode_label, 1, 0) + edit_layout.addWidget(self.edits_combo, 1, 1) + edit_layout.addWidget(self.edits_apply_button, 2, 0, 1, 2) + edit_layout.addWidget(self.revert_button, 3, 0, 1, 2) + edit_layout.addWidget(self.save_edits_button, 4, 0, 1, 2) + + ## left panel info_layout = QtGui.QVBoxLayout() info_layout.addLayout(meta_layout) @@ -433,10 +480,7 @@ def setup_ui(self): info_layout.addWidget(h_line_04) info_layout.addLayout(interp_layout) info_layout.addWidget(h_line_05) - info_layout.addWidget(self.tools_label) - info_layout.addWidget(self.edits_apply_button) - info_layout.addWidget(self.revert_button) - info_layout.addWidget(self.save_edits_button) + info_layout.addLayout(edit_layout) info_layout.addItem(v_space) info_layout.addWidget(self.output_label) info_layout.addWidget(self.output_box) @@ -485,6 +529,7 @@ def fill_metadata(self): self.meta_date_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.filedate)) self.meta_loc_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.loc)) self.meta_acq_edit.setText('{0}'.format(self.mt_obj.edi_object.Header.acqby)) + self.remove_distortion_num_freq_edit.setText('{0:.0f}'.format(self.mt_obj.Z.freq.size)) def static_shift_set_x(self): self.static_shift_x = float(str(self.static_shift_x_edit.text())) @@ -519,6 +564,26 @@ def static_shift_apply(self): self.mt_obj.Z = new_z_obj self.redraw_plot() + def static_shift_med_rad_set(self): + self.static_shift_med_rad = float(str(self.static_shift_med_rad_edit.text())) + self.static_shift_med_rad_edit.setText('{0:.2f}'.format(self.static_shift_med_rad)) + + def static_shift_med_num_freq_set(self): + self.static_shift_med_num_freq = float(str(self.static_shift_med_num_freq_edit.text())) + self.static_shift_med_num_freq_edit.setText('{0:.0f}'.format(self.static_shift_med_num_freq)) + + def static_shift_med_filt_estimate(self): + + ss_x, ss_y = staticshift.estimate_static_spatial_median(self.mt_obj.fn, + radius=self.static_shift_med_rad, + num_freq=self.static_shift_med_num_freq) + + self.static_shift_x = ss_x + self.static_shift_y = ss_y + + self.static_shift_x_edit.setText('{0:.2f}'.format(ss_x)) + self.static_shift_y_edit.setText('{0:.2f}'.format(ss_y)) + def remove_distortion_set_num_freq(self): """ set number of frequencies to remove distortion from @@ -535,7 +600,7 @@ def remove_distortion_apply(self): remove distortion from the mt repsonse """ if self._edited_dist == False and self._edited_rot == False and \ - self._edited_mask == False: + self._edited_mask == False and self._edited_ss == False: # remove distortion from original data distortion, new_z_object = self._mt_obj.remove_distortion(num_freq=self.num_freq) print '\n - Removed distortion from original data' @@ -666,6 +731,10 @@ def interp_apply(self): for ff in new_period: print ' {0:.6e}'.format(ff) + def edits_set(self, selected_item): + modes_list = ['Both', 'X', 'Y'] + self.edits_mode = modes_list[selected_item] + def edits_apply(self): """ @@ -826,6 +895,8 @@ def plot(self): self.ax_list = [self.ax_res_od, self.ax_res_d, self.ax_phase_od, self.ax_phase_d, self.ax_tip_x, self.ax_tip_y] + + self._ax = self.ax_res_od ## --> plot apparent resistivity, phase and tipper ## plot orginal apparent resistivity @@ -1067,7 +1138,33 @@ def plot(self): for ax in [self.ax_tip_x, self.ax_tip_y]: y_labels = ax.get_yticks().tolist() y_labels[-1] = '' - ax.set_yticklabels(y_labels) + ax.set_yticklabels(y_labels) + + ## --> make a rectangluar picker box + self.rs_od_res = mplwidgets.RectangleSelector(self.ax_res_od, + self.rect_onselect_od, + drawtype='box', + useblit=True) + self.rs_d_res = mplwidgets.RectangleSelector(self.ax_res_d, + self.rect_onselect_d, + drawtype='box', + useblit=True) + self.rs_od_phs = mplwidgets.RectangleSelector(self.ax_phase_od, + self.rect_onselect_od, + drawtype='box', + useblit=True) + self.rs_d_phs = mplwidgets.RectangleSelector(self.ax_phase_d, + self.rect_onselect_d, + drawtype='box', + useblit=True) + self.rs_tr = mplwidgets.RectangleSelector(self.ax_tip_x, + self.rect_onselect_tr, + drawtype='box', + useblit=True) + self.rs_ti = mplwidgets.RectangleSelector(self.ax_tip_y, + self.rect_onselect_ti, + drawtype='box', + useblit=True) ## --> need to be sure to draw the figure self.mpl_widget.draw() @@ -1083,11 +1180,6 @@ def on_pick(self, event): data_period = data_point.get_xdata()[event.ind] data_value = data_point.get_ydata()[event.ind] - mask_kw = {'color' : self.plot_properties.mask_color, - 'marker' : self.plot_properties.mask_marker, - 'ms' : self.plot_properties.mask_ms, - 'mew' : self.plot_properties.mask_mew} - # modify Z if event.mouseevent.button == 1: self._edited_mask = True @@ -1100,22 +1192,22 @@ def on_pick(self, event): self.mt_obj.Z.z[d_index] = 0.0+0.0*1j self.mt_obj.Z.zerr[d_index] = 0.0 - self._ax.plot(data_period, data_value, **mask_kw) + self._ax.plot(data_period, data_value, **self.mask_kw) # mask phase as well if self._ax_index == 0: if comp_jj == 1 and comp_kk == 0: self.ax_phase_od.plot(data_period, self.mt_obj.Z.phase[d_index]+180, - **mask_kw) + **self.mask_kw) else: self.ax_phase_od.plot(data_period, self.mt_obj.Z.phase[d_index], - **mask_kw) + **self.mask_kw) elif self._ax_index == 1: self.ax_phase_d.plot(data_period, self.mt_obj.Z.phase[d_index], - **mask_kw) + **self.mask_kw) # mask phase points elif self._ax_index == 2 or self._ax_index == 3: @@ -1129,17 +1221,17 @@ def on_pick(self, event): self.mt_obj.Z.zerr[d_index] = 0.0 # mask the point in the axis selected - self._ax.plot(data_period, data_value, **mask_kw) + self._ax.plot(data_period, data_value, **self.mask_kw) # mask resistivity as well if self._ax_index == 2: self.ax_res_od.plot(data_period, self.mt_obj.Z.resistivity[d_index], - **mask_kw) + **self.mask_kw) elif self._ax_index == 3: self.ax_res_d.plot(data_period, self.mt_obj.Z.resistivity[d_index], - **mask_kw) + **self.mask_kw) # mask tipper Tx elif self._ax_index == 4 or self._ax_index == 5: @@ -1149,7 +1241,7 @@ def on_pick(self, event): # mask point - self._ax.plot(data_period, data_value, **mask_kw) + self._ax.plot(data_period, data_value, **self.mask_kw) # set tipper data to 0 self.mt_obj.Tipper.tipper[d_index] = 0.0+0.0j @@ -1166,11 +1258,125 @@ def in_axes(self, event): self._ax = event.inaxes + # find the component index so that it can be masked for ax_index, ax in enumerate(self.ax_list): if ax == event.inaxes: self._ax_index = ax_index - + + def _get_frequency_range(self, period_01, period_02): + + fmin = min([1./period_01, 1./period_02]) + fmax = max([1./period_01, 1./period_02]) + prange = np.where((self.mt_obj.Z.freq >= fmin) & + (self.mt_obj.Z.freq <= fmax)) + + return prange + + def rect_onselect_od(self, eclick, erelease): + x1 = eclick.xdata + x2 = erelease.xdata + + f_idx = self._get_frequency_range(x1, x2) + + for ff in f_idx: + data_period = 1./self.mt_obj.Z.freq[ff] + if self.edits_mode == 'Both' or self.edits_mode == 'X': + self.ax_res_od.plot(data_period, + self.mt_obj.Z.resistivity[ff, 0, 1], + **self.mask_kw) + self.ax_phase_od.plot(data_period, + self.mt_obj.Z.phase[ff, 0, 1], + **self.mask_kw) + self.mt_obj.Z.z[ff, 0, 1] = 0.0+0.0*1j + self.mt_obj.Z.zerr[ff, 0, 1] = 0.0 + + if self.edits_mode == 'Both' or self.edits_mode == 'Y': + self.ax_res_od.plot(data_period, + self.mt_obj.Z.resistivity[ff, 1, 0], + **self.mask_kw) + + self.ax_phase_od.plot(data_period, + self.mt_obj.Z.phase[ff, 1, 0]+180, + **self.mask_kw) + + self.mt_obj.Z.z[ff, 1, 0] = 0.0+0.0*1j + self.mt_obj.Z.zerr[ff, 1, 0] = 0.0 + + self.ax_res_od.figure.canvas.draw() + self.ax_phase_od.figure.canvas.draw() + + def rect_onselect_d(self, eclick, erelease): + x1 = eclick.xdata + x2 = erelease.xdata + + f_idx = self._get_frequency_range(x1, x2) + + for ff in f_idx: + data_period = 1./self.mt_obj.Z.freq[ff] + if self.edits_mode == 'Both' or self.edits_mode == 'X': + self.ax_res_d.plot(data_period, + self.mt_obj.Z.resistivity[ff, 0, 0], + **self.mask_kw) + self.ax_phase_d.plot(data_period, + self.mt_obj.Z.phase[ff, 0, 0], + **self.mask_kw) + self.mt_obj.Z.z[ff, 0, 0] = 0.0+0.0*1j + self.mt_obj.Z.zerr[ff, 0, 0] = 0.0 + + if self.edits_mode == 'Both' or self.edits_mode == 'Y': + self.ax_res_d.plot(data_period, + self.mt_obj.Z.resistivity[ff, 1, 1], + **self.mask_kw) + + self.ax_phase_d.plot(data_period, + self.mt_obj.Z.phase[ff, 1, 1], + **self.mask_kw) + + self.mt_obj.Z.z[ff, 1, 1] = 0.0+0.0*1j + self.mt_obj.Z.zerr[ff, 1, 1] = 0.0 + + self.ax_res_od.figure.canvas.draw() + self.ax_phase_od.figure.canvas.draw() + + def rect_onselect_tr(self, eclick, erelease): + x1 = eclick.xdata + x2 = erelease.xdata + + f_idx = self._get_frequency_range(x1, x2) + + for ff in f_idx: + data_period = 1./self.mt_obj.Z.freq[ff] + self.ax_tip_x.plot(data_period, + self.mt_obj.Tipper.amplitude[ff, 0, 0], + **self.mask_kw) + + self.mt_obj.Tipper.tipper[ff, 0, 0] = 0.0+0.0*1j + self.mt_obj.Tipper.tippererr[ff, 0, 0] = 0.0 + + self.mt_obj.Tipper._compute_amp_phase() + + self.ax_tip_x.figure.canvas.draw() + + def rect_onselect_ti(self, eclick, erelease): + x1 = eclick.xdata + x2 = erelease.xdata + + f_idx = self._get_frequency_range(x1, x2) + + for ff in f_idx: + data_period = 1./self.mt_obj.Z.freq[ff] + self.ax_tip_y.plot(data_period, + self.mt_obj.Tipper.amplitude[ff, 0, 1], + **self.mask_kw) + + self.mt_obj.Tipper.tipper[ff, 0, 1] = 0.0+0.0*1j + self.mt_obj.Tipper.tippererr[ff, 0, 1] = 0.0 + + self.mt_obj.Tipper._compute_amp_phase() + + self.ax_tip_y.figure.canvas.draw() + #============================================================================== # Plot setting From ba1274c63dc0a6e957f9c05d5a5afccfe12bfeb7 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 18 May 2016 14:18:05 -0700 Subject: [PATCH 104/124] added ability to add and remove node lines --- mtpy/gui/modem_mesh_builder.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 5fb908cc..8430c4e6 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -496,18 +496,19 @@ def save_mesh(self): sv_path = os.path.dirname(save_fn) sv_basename = os.path.basename(save_fn) + print self.model_obj.nodes_east.shape + print self.model_obj.nodes_north.shape # be sure to change the grid into nodes - east_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) - north_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) - z_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) + self.model_obj.nodes_east = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) + self.model_obj.nodes_north = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) + self.model_obj.nodes_z = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) + print self.model_obj.nodes_east.shape + print self.model_obj.nodes_north.shape - print east_nodes + self.set_rho() self.model_obj.write_model_file(save_path=sv_path, - model_fn_basename=sv_basename, - nodes_east=east_nodes, - nodes_north=north_nodes, - nodes_z=z_nodes) + model_fn_basename=sv_basename) def set_rho(self): if self.model_obj.res_model is None: @@ -817,7 +818,6 @@ def on_pick(self, event): self.model_obj.grid_north = np.append(self.model_obj.grid_north, north) self.model_obj.grid_north.sort() - print self.model_obj.grid_north self.ax_map.plot([self.plot_grid_east.min(), self.plot_grid_east.max()], [north/1000., north/1000.], @@ -839,6 +839,20 @@ def on_pick(self, event): lw=self.line_width, color='r', picker=3) + + elif self.line_mode == 'del_h' and self._ax == self.ax_map: + data_point = event.artist + east = data_point.get_xdata()[event.ind]*1000. + north = data_point.get_ydata()[event.ind]*1000. + + new_ii = np.where(self.model_obj.grid_east != east) + self.model_obj.grid_east = self.model_obj.grid_east[new_ii] + self.ax_map.plot([self.plot_grid_east.min(), + self.plot_grid_east.max()], + [north/1000., north/1000.], + lw=self.line_width, + color='w', + picker=3) self._ax.figure.canvas.draw() From 2c65761b3a726fdbfb20190ea2b5ab8dfc51609a Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 18 May 2016 16:19:24 -0700 Subject: [PATCH 105/124] changed layout of edi_editor, added colors to buttons, adjusting static_shift to accound for uneven frequenceies --- mtpy/analysis/staticshift.py | 11 +++- mtpy/gui/edi_editor.py | 124 +++++++++++++++++++++++------------ 2 files changed, 91 insertions(+), 44 deletions(-) diff --git a/mtpy/analysis/staticshift.py b/mtpy/analysis/staticshift.py index bef8eeee..02b1fa66 100644 --- a/mtpy/analysis/staticshift.py +++ b/mtpy/analysis/staticshift.py @@ -81,6 +81,7 @@ def estimate_static_spatial_median(edi_fn, radius=1000., num_freq=20, # read the edi file mt_obj = mt.MT(edi_fn) mt_obj.Z._compute_res_phase() + interp_freq = mt_obj.Z.freq[freq_skip:num_freq+freq_skip] # Find stations near by and store them in a list mt_obj_list = [] @@ -101,10 +102,14 @@ def estimate_static_spatial_median(edi_fn, radius=1000., num_freq=20, print 'These stations are within the given {0} m radius:'.format(radius) for kk, mt_obj_kk in enumerate(mt_obj_list): print '\t{0} --> {1:.1f} m'.format(mt_obj_kk.station, mt_obj_kk.delta_d) - interp_freq = mt_obj.Z.freq[freq_skip:num_freq+freq_skip] - Z_interp, Tip_interp = mt_obj_kk.interpolate(interp_freq) + interp_idx = np.where((mt_obj_kk.Z.freq >= interp_freq.min()) & + mt_obj_kk.Z.freq <= interp_freq.max()) + min_idx = mt_obj_kk.Z.freq >= interp_freq.min() + + interp_freq_kk = interp_freq[interp_idx] + Z_interp, Tip_interp = mt_obj_kk.interpolate(interp_freq_kk) Z_interp._compute_res_phase() - res_array[kk, :, :, :] = Z_interp.resistivity[0:num_freq, :, :] + res_array[kk, interp_idx, :, :] = Z_interp.resistivity[min_idx:len(interp_freq_kk), :, :] #compute the static shift of x-components static_shift_x = mt_obj.Z.resistivity[freq_skip:num_freq+freq_skip, 0, 1]/\ diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 2455492b..307ee7c9 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -176,7 +176,7 @@ def __init__(self): self._edited_mask = False self._ax = None self.dir_path = os.getcwd() - self.edits_mode = 'both' + self.edits_mode = 'Both' self.interp_period_min = .001 self.interp_period_max = 1000. @@ -217,7 +217,11 @@ def setup_ui(self): # header label font header_font = QtGui.QFont() header_font.setBold = True - header_font.setPointSize (16) + header_font.setPointSize (14) + + button_font = QtGui.QFont() + button_font.setBold = True + button_font.setPointSize(11) # output box for all notes from the program self.output_label = QtGui.QLabel("Output") @@ -263,19 +267,22 @@ def setup_ui(self): self.static_shift_label.setFont(header_font) self.static_shift_x_label = QtGui.QLabel("Shift X") - self.static_shift_x_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_x)) + self.static_shift_x_edit = QtGui.QLineEdit("{0:.3f}".format(self.static_shift_x)) self.static_shift_x_edit.editingFinished.connect(self.static_shift_set_x) self.static_shift_y_label = QtGui.QLabel("Shift Y") - self.static_shift_y_edit = QtGui.QLineEdit("{0:.4g}".format(self.static_shift_y)) + self.static_shift_y_edit = QtGui.QLineEdit("{0:.3f}".format(self.static_shift_y)) self.static_shift_y_edit.editingFinished.connect(self.static_shift_set_y) self.static_shift_apply_button = QtGui.QPushButton() - self.static_shift_apply_button.setText("Apply") + self.static_shift_apply_button.setText("Apply Static Shift") + self.static_shift_apply_button.setFont(button_font) + self.static_shift_apply_button.setStyleSheet("background-color: #c75e4d") self.static_shift_apply_button.pressed.connect(self.static_shift_apply) self.static_shift_med_filt_button = QtGui.QPushButton() self.static_shift_med_filt_button.setText("Estimate Spatial Median Static Shift") + self.static_shift_med_filt_button.setFont(button_font) self.static_shift_med_filt_button.pressed.connect(self.static_shift_med_filt_estimate) self.static_shift_med_rad_label = QtGui.QLabel("Spatial Radius (m)") @@ -293,6 +300,7 @@ def setup_ui(self): self.remove_distortion_button = QtGui.QPushButton() self.remove_distortion_button.setText("Remove Distortion [Bibby et al., 2005]") + self.remove_distortion_button.setFont(button_font) self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) self.remove_distortion_num_freq_label = QtGui.QLabel("Number of Frequencies") @@ -313,7 +321,9 @@ def setup_ui(self): self.rotate_angle_t_edit = QtGui.QLineEdit("{0:.4g}".format(self.rotate_tip_angle)) self.rotate_angle_t_edit.editingFinished.connect(self.rotate_set_t_angle) - self.rotate_angle_button = QtGui.QPushButton("Apply") + self.rotate_angle_button = QtGui.QPushButton("Apply Rotation") + self.rotate_angle_button.setStyleSheet("background-color: #7dd4d0") + self.rotate_angle_button.setFont(button_font) self.rotate_angle_button.pressed.connect(self.rotate_data_apply) self.rotate_estimate_strike_button = QtGui.QPushButton("Estimate Strike") @@ -325,7 +335,9 @@ def setup_ui(self): self.interp_label.setFont(header_font) self.interp_apply_button = QtGui.QPushButton() - self.interp_apply_button.setText("Apply") + self.interp_apply_button.setText("Apply Interpolation") + self.interp_apply_button.setStyleSheet("background-color: #d39bd9") + self.interp_apply_button.setFont(button_font) self.interp_apply_button.pressed.connect(self.interp_apply) self.interp_min_label = QtGui.QLabel("Min") @@ -353,16 +365,22 @@ def setup_ui(self): ## apply edits button self.edits_apply_button = QtGui.QPushButton() self.edits_apply_button.setText("Apply Edits") + self.edits_apply_button.setStyleSheet("background-color: #d99ba3") + self.edits_apply_button.setFont(button_font) self.edits_apply_button.pressed.connect(self.edits_apply) ## revert back to original data self.revert_button = QtGui.QPushButton() self.revert_button.setText("Revert back to orginal data") + self.revert_button.setStyleSheet("background-color: #c2d99b") + self.revert_button.setFont(button_font) self.revert_button.pressed.connect(self.revert_back) ## save edits button self.save_edits_button = QtGui.QPushButton() self.save_edits_button.setText('Save Edits to new EDI file') + self.save_edits_button.setStyleSheet("background-color: #d9c59b") + self.save_edits_button.setFont(button_font) self.save_edits_button.pressed.connect(self.save_edi_file) ## horizontal line @@ -417,40 +435,62 @@ def setup_ui(self): meta_layout.addWidget(self.meta_acq_edit, 7, 1) ## static shift - ss_layout = QtGui.QGridLayout() - ss_layout.addWidget(self.static_shift_label, 0, 0, 1, 2) - ss_layout.addWidget(self.static_shift_apply_button, 0, 2, 1, 2) - ss_layout.addWidget(self.static_shift_x_label, 1, 0) - ss_layout.addWidget(self.static_shift_x_edit, 1, 1) - ss_layout.addWidget(self.static_shift_y_label, 1, 2) - ss_layout.addWidget(self.static_shift_y_edit, 1, 3) - ss_layout.addWidget(self.static_shift_med_rad_label, 2, 0) - ss_layout.addWidget(self.static_shift_med_rad_edit, 2, 1) - ss_layout.addWidget(self.static_shift_med_num_freq_label, 2, 2) - ss_layout.addWidget(self.static_shift_med_num_freq_edit, 2, 3) - ss_layout.addWidget(self.static_shift_med_filt_button, 3, 0, 1, 4) + ss_title = QtGui.QHBoxLayout() + ss_title.addWidget(self.static_shift_label) + ss_title.addWidget(self.static_shift_apply_button) + + ss_shift = QtGui.QHBoxLayout() + ss_shift.addWidget(self.static_shift_x_label) + ss_shift.addWidget(self.static_shift_x_edit) + ss_shift.addWidget(self.static_shift_y_label) + ss_shift.addWidget(self.static_shift_y_edit) + + ss_med = QtGui.QHBoxLayout() + ss_med.addWidget(self.static_shift_med_rad_label) + ss_med.addWidget(self.static_shift_med_rad_edit) + ss_med.addWidget(self.static_shift_med_num_freq_label) + ss_med.addWidget(self.static_shift_med_num_freq_edit) + + ss_layout = QtGui.QVBoxLayout() + ss_layout.addLayout(ss_title) + ss_layout.addLayout(ss_shift) + ss_layout.addLayout(ss_med) + ss_layout.addWidget(self.static_shift_med_filt_button) ## rotation - rot_layout = QtGui.QGridLayout() - rot_layout.addWidget(self.rotate_data_label, 0, 0) - rot_layout.addWidget(self.rotate_angle_button, 0, 1) - rot_layout.addWidget(self.rotate_explanation, 1, 0, 1, 2) - rot_layout.addWidget(self.rotate_angle_z_label, 2, 0) - rot_layout.addWidget(self.rotate_angle_z_edit, 2, 1) - rot_layout.addWidget(self.rotate_angle_t_label, 3, 0) - rot_layout.addWidget(self.rotate_angle_t_edit, 3, 1) - rot_layout.addWidget(self.rotate_estimate_strike_button, 4, 0, 1, 2) + rot_title = QtGui.QHBoxLayout() + rot_title.addWidget(self.rotate_data_label) + rot_title.addWidget(self.rotate_angle_button) + + rot_ang = QtGui.QHBoxLayout() + rot_ang.addWidget(self.rotate_angle_z_label) + rot_ang.addWidget(self.rotate_angle_z_edit) + rot_ang.addWidget(self.rotate_angle_t_label) + rot_ang.addWidget(self.rotate_angle_t_edit) + + rot_layout = QtGui.QVBoxLayout() + rot_layout.addLayout(rot_title) + rot_layout.addWidget(self.rotate_explanation) + rot_layout.addLayout(rot_ang) ## interpolate - interp_layout = QtGui.QGridLayout() - interp_layout.addWidget(self.interp_label, 0, 0) - interp_layout.addWidget(self.interp_apply_button, 0, 1) - interp_layout.addWidget(self.interp_min_label, 1, 0) - interp_layout.addWidget(self.interp_min_edit, 1, 1) - interp_layout.addWidget(self.interp_max_label, 2, 0) - interp_layout.addWidget(self.interp_max_edit, 2, 1) - interp_layout.addWidget(self.interp_num_label, 3, 0) - interp_layout.addWidget(self.interp_num_edit, 3, 1) + interp_title = QtGui.QHBoxLayout() + interp_title.addWidget(self.interp_label) + interp_title.addWidget(self.interp_apply_button) + + interp_num = QtGui.QGridLayout() + interp_num.addWidget(self.interp_min_label, 0, 0) + interp_num.addWidget(self.interp_min_edit, 0, 1) + interp_num.addWidget(self.interp_max_label, 0, 2) + interp_num.addWidget(self.interp_max_edit, 0, 3) + + + interp_num.addWidget(self.interp_num_label, 1, 0) + interp_num.addWidget(self.interp_num_edit, 1, 1) + + interp_layout = QtGui.QVBoxLayout() + interp_layout.addLayout(interp_title) + interp_layout.addLayout(interp_num) dis_hbox = QtGui.QHBoxLayout() dis_hbox.addWidget(self.remove_distortion_num_freq_label) @@ -533,11 +573,11 @@ def fill_metadata(self): def static_shift_set_x(self): self.static_shift_x = float(str(self.static_shift_x_edit.text())) - self.static_shift_x_edit.setText('{0:.4f}'.format(self.static_shift_x)) + self.static_shift_x_edit.setText('{0:.3f}'.format(self.static_shift_x)) def static_shift_set_y(self): self.static_shift_y = float(str(self.static_shift_y_edit.text())) - self.static_shift_y_edit.setText('{0:.4f}'.format(self.static_shift_y)) + self.static_shift_y_edit.setText('{0:.3f}'.format(self.static_shift_y)) def static_shift_apply(self): """ @@ -1138,7 +1178,9 @@ def plot(self): for ax in [self.ax_tip_x, self.ax_tip_y]: y_labels = ax.get_yticks().tolist() y_labels[-1] = '' - ax.set_yticklabels(y_labels) + ax.set_yticklabels(y_labels) + + #gs.tight_layout(self.figure, h_pad=0) ## --> make a rectangluar picker box self.rs_od_res = mplwidgets.RectangleSelector(self.ax_res_od, @@ -1428,7 +1470,7 @@ def __init__(self, parent, **kwargs): self.subplot_wspace = kwargs.pop('subplot_wspace', .15) self.subplot_hspace = kwargs.pop('subplot_hspace', .00) - self.subplot_right = kwargs.pop('subplot_right', .98) + self.subplot_right = kwargs.pop('subplot_right', .97) self.subplot_left = kwargs.pop('subplot_left', .08) self.subplot_top = kwargs.pop('subplot_top', .93) self.subplot_bottom = kwargs.pop('subplot_bottom', .08) From dd184a9efe9fb1b92c5c44c138f5369477fccc32 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 19 May 2016 12:38:01 -0700 Subject: [PATCH 106/124] fixed estimate_static_shift_med_filt to interpolate the correct frequencies --- mtpy/analysis/staticshift.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mtpy/analysis/staticshift.py b/mtpy/analysis/staticshift.py index 02b1fa66..da0ae3ac 100644 --- a/mtpy/analysis/staticshift.py +++ b/mtpy/analysis/staticshift.py @@ -102,14 +102,13 @@ def estimate_static_spatial_median(edi_fn, radius=1000., num_freq=20, print 'These stations are within the given {0} m radius:'.format(radius) for kk, mt_obj_kk in enumerate(mt_obj_list): print '\t{0} --> {1:.1f} m'.format(mt_obj_kk.station, mt_obj_kk.delta_d) - interp_idx = np.where((mt_obj_kk.Z.freq >= interp_freq.min()) & - mt_obj_kk.Z.freq <= interp_freq.max()) - min_idx = mt_obj_kk.Z.freq >= interp_freq.min() + interp_idx = np.where((interp_freq >= mt_obj_kk.Z.freq.min()) & + (interp_freq <= mt_obj_kk.Z.freq.max())) interp_freq_kk = interp_freq[interp_idx] Z_interp, Tip_interp = mt_obj_kk.interpolate(interp_freq_kk) Z_interp._compute_res_phase() - res_array[kk, interp_idx, :, :] = Z_interp.resistivity[min_idx:len(interp_freq_kk), :, :] + res_array[kk, interp_idx, :, :] = Z_interp.resistivity[0:len(interp_freq_kk), :, :] #compute the static shift of x-components static_shift_x = mt_obj.Z.resistivity[freq_skip:num_freq+freq_skip, 0, 1]/\ From 697eff1324558a01d386648b0834350fe1c032a2 Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 19 May 2016 15:04:27 -0700 Subject: [PATCH 107/124] added popup message for interpolation bounds, also changed the labels on the plot when zooming in --- mtpy/gui/edi_editor.py | 43 ++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 307ee7c9..7e516730 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -283,6 +283,7 @@ def setup_ui(self): self.static_shift_med_filt_button = QtGui.QPushButton() self.static_shift_med_filt_button.setText("Estimate Spatial Median Static Shift") self.static_shift_med_filt_button.setFont(button_font) + self.static_shift_med_filt_button.setStyleSheet("background-color: #f9d7db") self.static_shift_med_filt_button.pressed.connect(self.static_shift_med_filt_estimate) self.static_shift_med_rad_label = QtGui.QLabel("Spatial Radius (m)") @@ -300,6 +301,7 @@ def setup_ui(self): self.remove_distortion_button = QtGui.QPushButton() self.remove_distortion_button.setText("Remove Distortion [Bibby et al., 2005]") + self.remove_distortion_button.setStyleSheet("background-color: #b8c3f5") self.remove_distortion_button.setFont(button_font) self.remove_distortion_button.pressed.connect(self.remove_distortion_apply) @@ -360,6 +362,7 @@ def setup_ui(self): self.edits_mode_label = QtGui.QLabel("Mode To Edit") self.edits_combo = QtGui.QComboBox() self.edits_combo.addItems(['Both', 'X', 'Y']) + self.edits_combo.setFont(button_font) self.edits_combo.currentIndexChanged.connect(self.edits_set) ## apply edits button @@ -753,23 +756,45 @@ def interp_apply(self): new_period = np.logspace(np.log10(self.interp_period_min), np.log10(self.interp_period_max), num=self.interp_period_num) + interp_freq = 1./new_period + interp_idx = np.where((interp_freq >= self.mt_obj.Z.freq.min()) & + (interp_freq <= self.mt_obj.Z.freq.max())) + + interp_freq = interp_freq[interp_idx] + if len(interp_idx) != len(new_period): + + info =['Cannot interpolate over periods not represented in the data.', + 'Data min = {0:<8.3e} s'.format(1./self.mt_obj.Z.freq.max()), + 'Data max = {0:<8.3e} s'.format(1./self.mt_obj.Z.freq.min()), + '', + 'Given period range:', + ' min = {0:<8.3e} s'.format(new_period.min()), + ' max = {0:<8.3e} s'.format(new_period.max()), + '', + 'Setting interpolation frequency bounds to:', + ' min = {0:<8.3e} s'.format(1./interp_freq.max()), + ' max = {0:<8.3e} s'.format(1./interp_freq.min())] + msg_box = QtGui.QMessageBox() + msg_box.setText('\n'.join(info)) + msg_box.setWindowTitle('Interpolation Bounds') + msg_box.exec_() if self._edited_dist == True or self._edited_mask == True or \ self._edited_rot == True or self._edited_ss == True: - new_z, new_tip = self.mt_obj.interpolate(1./new_period) + new_z, new_tip = self.mt_obj.interpolate(interp_freq) self.mt_obj.Z = new_z self.mt_obj.Tipper = new_tip else: - new_z, new_tip = self._mt_obj.interpolate(1./new_period) + new_z, new_tip = self._mt_obj.interpolate(interp_freq) self.mt_obj.Z = new_z self.mt_obj.Tipper = new_tip self.redraw_plot() print 'Interpolated data onto periods:' - for ff in new_period: - print ' {0:.6e}'.format(ff) + for ff in interp_freq: + print ' {0:.6e}'.format(1./ff) def edits_set(self, selected_item): modes_list = ['Both', 'X', 'Y'] @@ -1093,9 +1118,8 @@ def plot(self): # set the last label to be an empty string for easier reading for ax in [self.ax_phase_od, self.ax_phase_d]: - y_labels = ax.get_yticks().tolist() - y_labels[0] = '' - ax.set_yticklabels(y_labels) + for label in [ax.get_yticklabels()[0], ax.get_yticklabels()[-1]]: + label.set_visible(False) ## --> plot tipper #set th xaxis tick labels to invisible @@ -1176,9 +1200,8 @@ def plot(self): # set the last label to be an empty string for easier reading for ax in [self.ax_tip_x, self.ax_tip_y]: - y_labels = ax.get_yticks().tolist() - y_labels[-1] = '' - ax.set_yticklabels(y_labels) + for label in [ax.get_yticklabels()[-1]]: + label.set_visible(False) #gs.tight_layout(self.figure, h_pad=0) From a65f314ed6229bdb38d4bf11107ce866190506db Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 19 May 2016 16:50:10 -0700 Subject: [PATCH 108/124] working on documentation --- doc/Makefile | 26 +++++++- doc/conf.py | 153 +++++++++++++++++++++++++++++++++++++++-------- doc/core.rst | 25 +++++--- doc/make.bat | 52 ++++++++++++++++ mtpy/core/edi.py | 9 +++ 5 files changed, 232 insertions(+), 33 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index d0836895..39f60a95 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -7,6 +7,11 @@ SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter @@ -29,17 +34,20 @@ help: @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: - -rm -rf $(BUILDDIR)/* + rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @@ -108,6 +116,12 @@ latexpdf: $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @@ -151,3 +165,13 @@ doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/doc/conf.py b/doc/conf.py index 62b6867a..36e901f7 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- # # MTpy documentation build configuration file, created by -# sphinx-quickstart on Tue Dec 17 11:03:33 2013. +# sphinx-quickstart on Thu May 19 15:22:56 2016. # -# This file is execfile()d with the current directory set to its containing dir. +# This file is execfile()d with the current directory set to its +# containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. @@ -11,21 +12,42 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys, os +import sys +import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('.')) +#sys.path.insert(0, os.path.abspath('.')) -# -- General configuration ----------------------------------------------------- +# -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', + 'sphinx.ext.napoleon' +] + +# Napoleon settings +napoleon_google_docstring = True +napoleon_numpy_docstring = True +napoleon_include_private_with_doc = False +napoleon_include_special_with_doc = True +napoleon_use_admonition_for_examples = False +napoleon_use_admonition_for_notes = False +napoleon_use_admonition_for_references = False +napoleon_use_ivar = False +napoleon_use_param = True +napoleon_use_rtype = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -37,20 +59,20 @@ #source_encoding = 'utf-8-sig' # The master toctree document. -master_doc = 'index' +master_doc = 'master_index' # General information about the project. project = u'MTpy' -copyright = u'2013, Jared Peacock, Lars Krieger, Stephan Thiel, Kent Inverarity' +copyright = u'2016, J. Peacock, L. Krieger' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '0.1' +version = '0.2' # The full version, including alpha/beta/rc tags. -release = '0.1' +release = '0.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -66,7 +88,8 @@ # directories to ignore when looking for source files. exclude_patterns = ['_build'] -# The reST default role (used for this markup: `text`) to use for all documents. +# The reST default role (used for this markup: `text`) to use for all +# documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. @@ -86,8 +109,11 @@ # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False -# -- Options for HTML output --------------------------------------------------- + +# -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. @@ -122,6 +148,11 @@ # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' @@ -167,7 +198,7 @@ htmlhelp_basename = 'MTpydoc' -# -- Options for LaTeX output -------------------------------------------------- +# -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). @@ -181,10 +212,11 @@ } # Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). latex_documents = [ - ('index', 'MTpy.tex', u'MTpy Documentation', - u'Jared Peacock, Lars Krieger, Stephan Thiel, Kent Inverarity', 'manual'), + ('master_index', 'MTpy.tex', u'MTpy Documentation', + u'J. Peacock, L. Krieger', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -208,27 +240,27 @@ #latex_domain_indices = True -# -- Options for manual page output -------------------------------------------- +# -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('index', 'mtpy', u'MTpy Documentation', - [u'Jared Peacock, Lars Krieger, Stephan Thiel, Kent Inverarity'], 1) + ('master_index', 'mtpy', u'MTpy Documentation', + [u'J. Peacock, L. Krieger'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False -# -- Options for Texinfo output ------------------------------------------------ +# -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - ('index', 'MTpy', u'MTpy Documentation', - u'Jared Peacock, Lars Krieger, Stephan Thiel, Kent Inverarity', 'MTpy', 'One line description of project.', + ('master_index', 'MTpy', u'MTpy Documentation', + u'J. Peacock, L. Krieger', 'MTpy', 'One line description of project.', 'Miscellaneous'), ] @@ -240,3 +272,76 @@ # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = u'MTpy' +epub_author = u'J. Peacock, L. Krieger' +epub_publisher = u'J. Peacock, L. Krieger' +epub_copyright = u'2016, J. Peacock, L. Krieger' + +# The basename for the epub file. It defaults to the project name. +#epub_basename = u'MTpy' + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or en if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +#epub_tocscope = 'default' + +# Fix unsupported image types using the PIL. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True diff --git a/doc/core.rst b/doc/core.rst index bd98e005..6669ec25 100644 --- a/doc/core.rst +++ b/doc/core.rst @@ -2,18 +2,18 @@ Core: ********* -.. **Module z** -.. ============= +**Module z** +============= .. automodule:: mtpy.core.z -.. **Class Z** -.. ------------ -.. .. autoclass:: mtpy.core.z.Z +**Class Z** +------------ +.. autoclass:: mtpy.core.z.Z :members: -.. **Class Tipper** -.. ----------------- -.. .. autoclass:: mtpy.core.z.Tipper +**Class Tipper** +----------------- +.. autoclass:: mtpy.core.z.Tipper :members: **Module edi** @@ -22,6 +22,15 @@ Core: **Class Edi** -------------- .. automodule:: mtpy.core.edi + :members: + +**Module MT** +=============== + +**Class MT** +------------- +.. automodule:: mtpy.core.mt + :members: diff --git a/doc/make.bat b/doc/make.bat index 7fa1c53e..def52265 100644 --- a/doc/make.bat +++ b/doc/make.bat @@ -33,6 +33,8 @@ if "%1" == "help" ( echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end @@ -44,6 +46,20 @@ if "%1" == "clean" ( goto end ) + +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 @@ -129,6 +145,26 @@ if "%1" == "latex" ( goto end ) +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %BUILDDIR%/.. + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 @@ -187,4 +223,20 @@ results in %BUILDDIR%/doctest/output.txt. goto end ) +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + :end diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index e10b8d1d..96e3efe6 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -1,5 +1,14 @@ # -*- coding: utf-8 -*- """ +=========== +EDI Class +=========== + +The Edi class can read and write an .edi file, the 'standard format' of +magnetotellurics. Each section of the .edi file is given its own class, +so the elements of each section are attributes for easy access. + + Created on Tue Dec 22 16:03:31 2015 @author: jpeacock From 335c87600e62b464d4dc8c92592c5ae6af7b48ec Mon Sep 17 00:00:00 2001 From: JP Date: Thu, 19 May 2016 16:50:18 -0700 Subject: [PATCH 109/124] working on documentation --- doc/master_index.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 doc/master_index.rst diff --git a/doc/master_index.rst b/doc/master_index.rst new file mode 100644 index 00000000..e535066a --- /dev/null +++ b/doc/master_index.rst @@ -0,0 +1,24 @@ +.. MTpy documentation master file, created by + sphinx-quickstart on Thu May 19 15:22:56 2016. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to MTpy's documentation! +================================ + +Contents: + +.. toctree:: + :maxdepth: 2 + + core + + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + From b603368e5263c8567260e93f3d481c970889fd74 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 20 May 2016 07:31:07 -0700 Subject: [PATCH 110/124] adding ability to write out adjusted mesh --- mtpy/gui/modem_mesh_builder.py | 46 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index 8430c4e6..df84f25b 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -376,18 +376,18 @@ def save_model_fn(self): sv_path = os.path.dirname(save_fn) sv_basename = os.path.basename(save_fn) + setattr(self, 'model_obj', self.mpl_widget.model_obj) # be sure to change the grid into nodes - east_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) - north_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) - z_nodes = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) + self.model_obj.nodes_east = self._grid_to_nodes(self.model_obj.grid_east) + self.model_obj.nodes_north = self._grid_to_nodes(self.model_obj.grid_north) + self.model_obj.nodes_z = self._grid_to_nodes(self.model_obj.grid_z) - print east_nodes + # need to reset the and reshape the resistivity model + self.model_obj.res_model = None + self.set_rho() self.model_obj.write_model_file(save_path=sv_path, - model_fn_basename=sv_basename, - nodes_east=east_nodes, - nodes_north=north_nodes, - nodes_z=z_nodes) + model_fn_basename=sv_basename) def _grid_to_nodes(self, grid_array): nodes_array = grid_array.copy() @@ -496,28 +496,39 @@ def save_mesh(self): sv_path = os.path.dirname(save_fn) sv_basename = os.path.basename(save_fn) - print self.model_obj.nodes_east.shape - print self.model_obj.nodes_north.shape # be sure to change the grid into nodes self.model_obj.nodes_east = self._grid_to_nodes(self.mpl_widget.model_obj.grid_east) self.model_obj.nodes_north = self._grid_to_nodes(self.mpl_widget.model_obj.grid_north) self.model_obj.nodes_z = self._grid_to_nodes(self.mpl_widget.model_obj.grid_z) - print self.model_obj.nodes_east.shape - print self.model_obj.nodes_north.shape self.set_rho() self.model_obj.write_model_file(save_path=sv_path, model_fn_basename=sv_basename) + #--> print out useful information + print '-'*15 + print ' Number of stations = {0}'.format(len(self.model_obj.station_locations)) + print ' Dimensions: ' + print ' e-w = {0}'.format(self.model_obj.grid_east.shape[0]) + print ' n-s = {0}'.format(self.model_obj.grid_north.shape[0]) + print ' z = {0} (without 7 air layers)'.format(self.model_obj.grid_z.shape[0]) + print ' Extensions: ' + print ' e-w = {0:.1f} (m)'.format(self.model_obj.nodes_east.__abs__().sum()) + print ' n-s = {0:.1f} (m)'.format(self.model_obj.nodes_north.__abs__().sum()) + print ' 0-z = {0:.1f} (m)'.format(self.model_obj.nodes_z.__abs__().sum()) + + print ' Stations rotated by: {0:.1f} deg clockwise positive from N'.format(self.model_obj.mesh_rotation_angle) + print '' + def set_rho(self): if self.model_obj.res_model is None: - self.model_obj.res_model = np.zeros(self.model_obj.grid_north.shape[0], + self.model_obj.res_model = np.zeros((self.model_obj.grid_north.shape[0], self.model_obj.grid_east.shape[0], - self.model_obj.grid_z.shape[0]) + self.model_obj.grid_z.shape[0])) self.model_obj.res_model[:, :, :] = float(str(self.rho_start_edit.text())) - self.rho_start_edit.setText('{0:.2f}'.format(self.rho_start_edit.text())) + self.rho_start_edit.setText('{0:.2f}'.format(float(str(self.rho_start_edit.text())))) @QtCore.pyqtSlot(str) def normal_output(self, message): @@ -644,7 +655,7 @@ def line_set_del_v(self): def plot_mesh(self, model_obj, east_limits=None, north_limits=None, z_limits=None): - self.model_obj = copy.deepcopy(model_obj) + self.model_obj = model_obj try: self.model_obj.make_mesh() @@ -652,8 +663,7 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, QtGui.QMessageBox.warning(self, 'Cannot Make Mesh -- Need EDI Files', "Please press the 'Get EDI Files' button to get files", - QtGui.QMessageBox.Cancel, - ) + QtGui.QMessageBox.Cancel) return From 9b82946fb5e21d50b7a8e54d32074956280eb2cf Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 20 May 2016 14:17:48 -0700 Subject: [PATCH 111/124] changed zerr and tippererr to z_err and tipper_err in all files --- mtpy/analysis/distortion.py | 14 +- mtpy/analysis/pt.py | 132 ++++++------- mtpy/analysis/zinvariants.py | 4 +- mtpy/core/edi.py | 24 +-- mtpy/core/mt.py | 28 +-- mtpy/core/z.py | 260 ++++++++++++------------- mtpy/gui/edi_editor.py | 18 +- mtpy/gui/modem_mesh_builder.py | 55 +++++- mtpy/gui/modem_plot_response.py | 38 ++-- mtpy/gui/modem_plot_response_fast.py | 26 +-- mtpy/gui/modem_plot_response_faster.py | 26 +-- mtpy/imaging/mtplottools.py | 40 ++-- mtpy/imaging/plotpt.py | 4 +- mtpy/imaging/plotresidualptmaps.py | 4 +- mtpy/imaging/plotresidualptps.py | 4 +- mtpy/imaging/plotresponse.py | 6 +- mtpy/imaging/plotstrike.py | 4 +- mtpy/imaging/plotstrike2d.py | 4 +- mtpy/modeling/modem_new.py | 100 +++++----- mtpy/modeling/occam1d.py | 14 +- mtpy/modeling/occam2d.py | 10 +- mtpy/modeling/occam2d_rewrite.py | 2 +- mtpy/modeling/occamtools.py | 52 ++--- mtpy/modeling/pek1dclasses.py | 42 ++-- mtpy/modeling/pek2d.py | 14 +- mtpy/modeling/ws3dinv.py | 56 +++--- mtpy/uofa/bayesian1d.py | 8 +- mtpy/usgs/zonge.py | 28 +-- mtpy/utils/calculator.py | 10 +- mtpy/utils/edi2columnsonly.py | 2 +- mtpy/utils/edi2ptcrossdata.py | 20 +- mtpy/utils/modemMakeData.py | 8 +- 32 files changed, 551 insertions(+), 506 deletions(-) diff --git a/mtpy/analysis/distortion.py b/mtpy/analysis/distortion.py index c6ac653a..d485dc3e 100644 --- a/mtpy/analysis/distortion.py +++ b/mtpy/analysis/distortion.py @@ -81,7 +81,7 @@ def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): num_freq = z_obj.freq.size z_obj.z = z_obj.z[0:num_freq] - z_obj.zerr = z_obj.zerr[0:num_freq] + z_obj.z_err = z_obj.z_err[0:num_freq] z_obj.freq = z_obj.freq[0:num_freq] @@ -119,13 +119,13 @@ def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): rot_mat))]), axis=0) - if z_obj.zerr is not None: + if z_obj.z_err is not None: #find errors of entries for calculating weights - gr_err = 1./gr*np.abs(z_obj.zerr[idx]) + gr_err = 1./gr*np.abs(z_obj.z_err[idx]) gr_err[np.where(gr_err == 0.0)] = 1.0 - gi_err = 1./gi*np.abs(z_obj.zerr[idx]) + gi_err = 1./gi*np.abs(z_obj.z_err[idx]) gi_err[np.where(gi_err == 0.0)] = 1.0 dis_err[idx] = np.mean(np.array([gi_err, gr_err]), @@ -137,8 +137,8 @@ def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): if np.isnan(strike_ang): strike_ang = 0.0 - if z_obj.zerr is not None: - err_arr = z_obj.zerr[idx] + if z_obj.z_err is not None: + err_arr = z_obj.z_err[idx] err_arr[np.where(err_arr == 0.0)] = 1.0 else: err_arr = None @@ -330,7 +330,7 @@ def remove_distortion(z_array=None, z_object=None, num_freq=None): distortion_z_obj = z_obj distortion_z_obj.z = zd distortion_z_obj.z[zero_idx] = 0.0+0.0j - distortion_z_obj.zerr = zd_err + distortion_z_obj.z_err = zd_err return distortion_tensor, distortion_z_obj diff --git a/mtpy/analysis/pt.py b/mtpy/analysis/pt.py index db202d39..0230ae5d 100644 --- a/mtpy/analysis/pt.py +++ b/mtpy/analysis/pt.py @@ -92,7 +92,7 @@ class PhaseTensor(object): """ def __init__(self, pt_array = None, pterr_array = None, z_array = None, - zerr_array = None, z_object = None, freq=None, pt_rot=0.0): + z_err_array = None, z_object = None, freq=None, pt_rot=0.0): """ Initialise an instance of the PhaseTensor class. @@ -100,7 +100,7 @@ def __init__(self, pt_array = None, pterr_array = None, z_array = None, pt_array : Numpy array containing Phase-Tensor values pterr_array : Numpy array containing Phase-Tensor-error values z_array : Numpy array containing Z values - zerr_array : Numpy array containing Z-error values (NOT variance, but stddev!) + z_err_array : Numpy array containing Z-error values (NOT variance, but stddev!) z_object: MTpy core.z Z class instance freq : numpy array containing freq values @@ -110,7 +110,7 @@ def __init__(self, pt_array = None, pterr_array = None, z_array = None, self._pt = pt_array self._pterr = pterr_array self._z = z_array - self._z_err = zerr_array + self._z_err = z_err_array self._freq = freq self.rotation_angle = pt_rot @@ -133,11 +133,11 @@ def __init__(self, pt_array = None, pterr_array = None, z_array = None, self._z_err = None print 'Can not calculate pt from z==None' - if zerr_array is not None: + if z_err_array is not None: try: - self._set_z_err(zerr_array) - if z_array.shape != zerr_array.shape: + self._set_z_err(z_err_array) + if z_array.shape != z_err_array.shape: self._set_z_err(None) except: pass @@ -313,7 +313,7 @@ def set_z_object(self, z_object): """ self._z = z_object.z - self._z_err = z_object.zerr + self._z_err = z_object.z_err self._freq = z_object.freq self._pt = np.zeros_like(self._z, dtype=np.float) self._pterr = np.zeros_like(self._z, dtype=np.float) @@ -347,7 +347,7 @@ def set_z_object(self, z_object): self.rotation_angle = z_object.rotation_angle # def _get_z_object(self): - # z_object = MTz.Z(z_array=self._z, zerr_array=self._z_err) + # z_object = MTz.Z(z_array=self._z, z_err_array=self._z_err) # z_object.freq = self._freq # z_object.rotation_angle = self.rotation_angle @@ -1183,7 +1183,7 @@ def set_rpterr(self, rpterr_array): #======================================================================= -def z2pt(z_array, zerr_array = None): +def z2pt(z_array, z_err_array = None): """ Calculate Phase Tensor from Z array (incl. uncertainties) @@ -1210,19 +1210,19 @@ def z2pt(z_array, zerr_array = None): raise MTex.MTpyError_PT('Error - incorrect z array: %s;%s instead of (N,2,2);complex'%(str(z_array.shape), str(z_array.dtype))) - if zerr_array is not None: + if z_err_array is not None: try: - if not len(zerr_array.shape) in [2,3]: + if not len(z_err_array.shape) in [2,3]: raise - if not zerr_array.shape[-2:] == (2,2): + if not z_err_array.shape[-2:] == (2,2): raise - if not zerr_array.dtype in ['float']: + if not z_err_array.dtype in ['float']: raise except: - raise MTex.MTpyError_PT('Error - incorrect z-err-array: %s;%s instead of (N,2,2);real'%(str(zerr_array.shape), str(zerr_array.dtype))) + raise MTex.MTpyError_PT('Error - incorrect z-err-array: %s;%s instead of (N,2,2);real'%(str(z_err_array.shape), str(z_err_array.dtype))) - if not z_array.shape == zerr_array.shape: - raise MTex.MTpyError_PT('Error - z-array and z-err-array have different shape: %s;%s'%(str(z_array.shape), str(zerr_array.shape))) + if not z_array.shape == z_err_array.shape: + raise MTex.MTpyError_PT('Error - z-array and z-err-array have different shape: %s;%s'%(str(z_array.shape), str(z_err_array.shape))) #for a single matrix as input: if len(z_array.shape) == 2: @@ -1236,7 +1236,7 @@ def z2pt(z_array, zerr_array = None): if detreal == 0 : if np.linalg.norm(realz) == 0 and np.linalg.norm(imagz) == 0: pterr_array = np.zeros_like(pt_array) - if zerr_array is None: + if z_err_array is None: pterr_array = None return pt_array, pterr_array @@ -1252,41 +1252,41 @@ def z2pt(z_array, zerr_array = None): pt_array /= detreal - if zerr_array is None: + if z_err_array is None: return pt_array, None pterr_array = np.zeros_like(pt_array) #Z entries are independent -> use Gaussian error propagation (squared sums/2-norm) - pterr_array[0,0] = 1/np.abs(detreal) * np.sqrt(np.sum([np.abs(-pt_array[0,0] * realz[1,1] * zerr_array[0,0])**2, - np.abs( pt_array[0,0] * realz[0,1] * zerr_array[1,0])**2, - np.abs(((imagz[0,0] * realz[1,0] - realz[0,0] * imagz[1,0]) / np.abs(detreal) * realz[0,0] ) * zerr_array[0,1])**2, - np.abs(((imagz[1,0] * realz[0,0] - realz[1,0] * imagz[1,1]) / np.abs(detreal) * realz[0,1] ) * zerr_array[1,1])**2, - np.abs(realz[1,1] * zerr_array[0,0])**2, - np.abs(realz[0,1] * zerr_array[1,0])**2 ])) + pterr_array[0,0] = 1/np.abs(detreal) * np.sqrt(np.sum([np.abs(-pt_array[0,0] * realz[1,1] * z_err_array[0,0])**2, + np.abs( pt_array[0,0] * realz[0,1] * z_err_array[1,0])**2, + np.abs(((imagz[0,0] * realz[1,0] - realz[0,0] * imagz[1,0]) / np.abs(detreal) * realz[0,0] ) * z_err_array[0,1])**2, + np.abs(((imagz[1,0] * realz[0,0] - realz[1,0] * imagz[1,1]) / np.abs(detreal) * realz[0,1] ) * z_err_array[1,1])**2, + np.abs(realz[1,1] * z_err_array[0,0])**2, + np.abs(realz[0,1] * z_err_array[1,0])**2 ])) - pterr_array[0,1] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( -pt_array[0,1] * realz[1,1] * zerr_array[0,0])**2, - np.abs( pt_array[0,1] * realz[0,1] * zerr_array[1,0])**2, - np.abs( ( (imagz[0,1] * realz[1,0] - realz[0,0] * imagz[1,1]) / np.abs(detreal) * realz[1,1] ) * zerr_array[0,1])**2, - np.abs( ( (imagz[1,1] * realz[0,0] - realz[0,1] * imagz[1,0]) / np.abs(detreal) * realz[0,1] ) * zerr_array[1,1])**2, - np.abs( realz[1,1] * zerr_array[0,1])**2, - np.abs( realz[0,1] * zerr_array[1,1])**2 ])) + pterr_array[0,1] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( -pt_array[0,1] * realz[1,1] * z_err_array[0,0])**2, + np.abs( pt_array[0,1] * realz[0,1] * z_err_array[1,0])**2, + np.abs( ( (imagz[0,1] * realz[1,0] - realz[0,0] * imagz[1,1]) / np.abs(detreal) * realz[1,1] ) * z_err_array[0,1])**2, + np.abs( ( (imagz[1,1] * realz[0,0] - realz[0,1] * imagz[1,0]) / np.abs(detreal) * realz[0,1] ) * z_err_array[1,1])**2, + np.abs( realz[1,1] * z_err_array[0,1])**2, + np.abs( realz[0,1] * z_err_array[1,1])**2 ])) - pterr_array[1,0] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( pt_array[1,0] * realz[1,0] * zerr_array[0,1])**2, - np.abs( -pt_array[1,0] * realz[0,0] * zerr_array[1,1])**2, - np.abs( ( (imagz[0,0] * realz[1,1] - realz[0,1] * imagz[1,1]) / np.abs(detreal) * realz[1,0] ) * zerr_array[0,0])**2, - np.abs( ( (imagz[1,0] * realz[0,1] - realz[1,1] * imagz[0,0]) / np.abs(detreal) * realz[0,0] ) * zerr_array[0,1])**2, - np.abs( realz[1,0] * zerr_array[0,0])**2, - np.abs( realz[0,0] * zerr_array[1,0])**2 ])) + pterr_array[1,0] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( pt_array[1,0] * realz[1,0] * z_err_array[0,1])**2, + np.abs( -pt_array[1,0] * realz[0,0] * z_err_array[1,1])**2, + np.abs( ( (imagz[0,0] * realz[1,1] - realz[0,1] * imagz[1,1]) / np.abs(detreal) * realz[1,0] ) * z_err_array[0,0])**2, + np.abs( ( (imagz[1,0] * realz[0,1] - realz[1,1] * imagz[0,0]) / np.abs(detreal) * realz[0,0] ) * z_err_array[0,1])**2, + np.abs( realz[1,0] * z_err_array[0,0])**2, + np.abs( realz[0,0] * z_err_array[1,0])**2 ])) - pterr_array[1,1] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( pt_array[1,1] * realz[1,0] * zerr_array[0,1])**2, - np.abs( -pt_array[1,1] * realz[0,0] * zerr_array[1,1])**2, - np.abs( ( (imagz[0,1] * realz[1,1] - realz[0,1] * imagz[1,1]) / np.abs(detreal) * realz[1,0] ) * zerr_array[0,0])**2, - np.abs( ( (imagz[1,1] * realz[0,1] - realz[1,1] * imagz[0,1]) / np.abs(detreal) * realz[0,0] ) * zerr_array[0,1])**2, - np.abs( - realz[1,0] * zerr_array[0,1])**2, - np.abs( realz[0,0] * zerr_array[1,1])**2 ])) + pterr_array[1,1] = 1/np.abs(detreal) * np.sqrt( np.sum([np.abs( pt_array[1,1] * realz[1,0] * z_err_array[0,1])**2, + np.abs( -pt_array[1,1] * realz[0,0] * z_err_array[1,1])**2, + np.abs( ( (imagz[0,1] * realz[1,1] - realz[0,1] * imagz[1,1]) / np.abs(detreal) * realz[1,0] ) * z_err_array[0,0])**2, + np.abs( ( (imagz[1,1] * realz[0,1] - realz[1,1] * imagz[0,1]) / np.abs(detreal) * realz[0,0] ) * z_err_array[0,1])**2, + np.abs( - realz[1,0] * z_err_array[0,1])**2, + np.abs( realz[0,0] * z_err_array[1,1])**2 ])) return pt_array, pterr_array @@ -1311,33 +1311,33 @@ def z2pt(z_array, zerr_array = None): pt_array /= detreal - if zerr_array is None: + if z_err_array is None: return pt_array, pterr_array pterr_array = np.zeros_like(pt_array) - pterr_array[idx_f,0,0] = 1/detreal * (np.abs( -pt_array[idx_f,0,0] * realz[1,1] * zerr_array[0,0]) + \ - np.abs( pt_array[idx_f,0,0] * realz[0,1] * zerr_array[1,0]) + \ - np.abs( (imagz[0,0] - pt_array[idx_f,0,0] * realz[0,0] ) * zerr_array[1,1]) +\ - np.abs( (-imagz[1,0]+ pt_array[idx_f,0,0] * realz[1,0] ) * zerr_array[0,1]) + \ - np.abs( realz[1,1] * zerr_array[0,0]) + np.abs( realz[0,1] * zerr_array[1,0]) ) - - pterr_array[idx_f,0,1] = 1/detreal * (np.abs( -pt_array[idx_f,0,1] * realz[1,1] * zerr_array[0,0]) + \ - np.abs( pt_array[idx_f,0,1] * realz[0,1] * zerr_array[1,0]) + \ - np.abs( (imagz[0,1] - pt_array[idx_f,0,1] * realz[0,0] ) * zerr_array[1,1]) +\ - np.abs( (-imagz[1,1]+ pt_array[idx_f,0,1] * realz[1,0] ) * zerr_array[0,1]) + \ - np.abs( realz[1,1] * zerr_array[0,1]) + np.abs( realz[0,1] * zerr_array[1,1]) ) - - pterr_array[idx_f,1,0] = 1/detreal * (np.abs( (imagz[1,0] - pt_array[idx_f,1,0] * realz[1,1] ) * zerr_array[0,0]) +\ - np.abs( pt_array[idx_f,1,0] * realz[1,0] * zerr_array[0,1]) + \ - np.abs( (-imagz[0,0] + pt_array[idx_f,1,0] * realz[0,1] ) * zerr_array[1,0]) + \ - np.abs( -pt_array[idx_f,1,0] * realz[0,0] * zerr_array[1,1]) + \ - np.abs( realz[0,0] * zerr_array[1,0]) + np.abs( -realz[1,0] * zerr_array[0,0]) ) - - pterr_array[idx_f,1,1] = 1/detreal * (np.abs( (imagz[1,1] - pt_array[idx_f,1,1] * realz[1,1] ) * zerr_array[0,0]) +\ - np.abs( pt_array[idx_f,1,1] * realz[1,0] * zerr_array[0,1]) + \ - np.abs( (-imagz[0,1] + pt_array[idx_f,1,1] * realz[0,1] ) * zerr_array[1,0]) + \ - np.abs( -pt_array[idx_f,1,1] * realz[0,0] * zerr_array[1,1]) + \ - np.abs( realz[0,0] * zerr_array[1,1]) + np.abs( -realz[1,0] * zerr_array[0,1]) ) + pterr_array[idx_f,0,0] = 1/detreal * (np.abs( -pt_array[idx_f,0,0] * realz[1,1] * z_err_array[0,0]) + \ + np.abs( pt_array[idx_f,0,0] * realz[0,1] * z_err_array[1,0]) + \ + np.abs( (imagz[0,0] - pt_array[idx_f,0,0] * realz[0,0] ) * z_err_array[1,1]) +\ + np.abs( (-imagz[1,0]+ pt_array[idx_f,0,0] * realz[1,0] ) * z_err_array[0,1]) + \ + np.abs( realz[1,1] * z_err_array[0,0]) + np.abs( realz[0,1] * z_err_array[1,0]) ) + + pterr_array[idx_f,0,1] = 1/detreal * (np.abs( -pt_array[idx_f,0,1] * realz[1,1] * z_err_array[0,0]) + \ + np.abs( pt_array[idx_f,0,1] * realz[0,1] * z_err_array[1,0]) + \ + np.abs( (imagz[0,1] - pt_array[idx_f,0,1] * realz[0,0] ) * z_err_array[1,1]) +\ + np.abs( (-imagz[1,1]+ pt_array[idx_f,0,1] * realz[1,0] ) * z_err_array[0,1]) + \ + np.abs( realz[1,1] * z_err_array[0,1]) + np.abs( realz[0,1] * z_err_array[1,1]) ) + + pterr_array[idx_f,1,0] = 1/detreal * (np.abs( (imagz[1,0] - pt_array[idx_f,1,0] * realz[1,1] ) * z_err_array[0,0]) +\ + np.abs( pt_array[idx_f,1,0] * realz[1,0] * z_err_array[0,1]) + \ + np.abs( (-imagz[0,0] + pt_array[idx_f,1,0] * realz[0,1] ) * z_err_array[1,0]) + \ + np.abs( -pt_array[idx_f,1,0] * realz[0,0] * z_err_array[1,1]) + \ + np.abs( realz[0,0] * z_err_array[1,0]) + np.abs( -realz[1,0] * z_err_array[0,0]) ) + + pterr_array[idx_f,1,1] = 1/detreal * (np.abs( (imagz[1,1] - pt_array[idx_f,1,1] * realz[1,1] ) * z_err_array[0,0]) +\ + np.abs( pt_array[idx_f,1,1] * realz[1,0] * z_err_array[0,1]) + \ + np.abs( (-imagz[0,1] + pt_array[idx_f,1,1] * realz[0,1] ) * z_err_array[1,0]) + \ + np.abs( -pt_array[idx_f,1,1] * realz[0,0] * z_err_array[1,1]) + \ + np.abs( realz[0,0] * z_err_array[1,1]) + np.abs( -realz[1,0] * z_err_array[0,1]) ) return pt_array, pterr_array diff --git a/mtpy/analysis/zinvariants.py b/mtpy/analysis/zinvariants.py index b9c1d83d..e73964e6 100644 --- a/mtpy/analysis/zinvariants.py +++ b/mtpy/analysis/zinvariants.py @@ -21,7 +21,7 @@ class Zinvariants: needs to have attributes: *z --> np.array((nf, 2, 2), dtype='complex') - *zerr --> np.array((nf, 2, 2), dtype='real') + *z_err --> np.array((nf, 2, 2), dtype='real') *freq --> np.array(nf) @@ -261,7 +261,7 @@ def set_z_err(self, z_err_array): those as well. """ - self._Z.zerr = z_err_array + self._Z.z_err = z_err_array # --> update the invariants self.compute_invariants() diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 96e3efe6..0438ca23 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -259,7 +259,7 @@ def _read_mt(self, data_lines): ## fill impedance tensor self.Z.freq = freq_arr.copy() self.Z.z = np.zeros((freq_arr.size, 2, 2), dtype=np.complex) - self.Z.zerr = np.zeros((freq_arr.size, 2, 2), dtype=np.float) + self.Z.z_err = np.zeros((freq_arr.size, 2, 2), dtype=np.float) try: self.Z.rotation_angle = data_dict['zrot'] except KeyError: @@ -274,10 +274,10 @@ def _read_mt(self, data_lines): self.Z.z[:, 1, 1] = np.array(data_dict['zyyr'])+\ np.array(data_dict['zyyi'])*1j - self.Z.zerr[:, 0, 0] = np.array(data_dict['zxx.var']) - self.Z.zerr[:, 0, 1] = np.array(data_dict['zxy.var']) - self.Z.zerr[:, 1, 0] = np.array(data_dict['zyx.var']) - self.Z.zerr[:, 1, 1] = np.array(data_dict['zyy.var']) + self.Z.z_err[:, 0, 0] = np.array(data_dict['zxx.var']) + self.Z.z_err[:, 0, 1] = np.array(data_dict['zxy.var']) + self.Z.z_err[:, 1, 0] = np.array(data_dict['zyx.var']) + self.Z.z_err[:, 1, 1] = np.array(data_dict['zyy.var']) # compute resistivity and phase self.Z._compute_res_phase() @@ -286,7 +286,7 @@ def _read_mt(self, data_lines): ## fill tipper data if there it exists self.Tipper.tipper = np.zeros((freq_arr.size, 1, 2), dtype=np.complex) - self.Tipper.tippererr = np.zeros((freq_arr.size, 1, 2), + self.Tipper.tipper_err = np.zeros((freq_arr.size, 1, 2), dtype=np.float) self.Tipper.freq = freq_arr.copy() try: @@ -303,8 +303,8 @@ def _read_mt(self, data_lines): self.Tipper.tipper[:, 0, 1] = np.array(data_dict['tyr.exp'])+\ np.array(data_dict['tyi.exp'])*1j - self.Tipper.tippererr[:, 0, 0] = np.array(data_dict['txvar.exp']) - self.Tipper.tippererr[:, 0, 1] = np.array(data_dict['tyvar.exp']) + self.Tipper.tipper_err[:, 0, 0] = np.array(data_dict['txvar.exp']) + self.Tipper.tipper_err[:, 0, 1] = np.array(data_dict['tyvar.exp']) self.Tipper._compute_amp_phase() self.Tipper._compute_mag_direction() @@ -474,13 +474,13 @@ def _read_spectra(self, data_lines, # be sure to fill attributes self.Z.z = z_arr - self.Z.zerr = z_err_arr + self.Z.z_err = z_err_arr self.Z.freq = freq_arr self.Z.rotation_angle = np.zeros_like(freq_arr) self.Z._compute_res_phase() self.Tipper.tipper = t_arr - self.Tipper.tippererr = t_err_arr + self.Tipper.tipper_err = t_err_arr self.Tipper.freq = freq_arr self.Tipper.rotation_angle = np.zeros_like(freq_arr) self.Tipper._compute_amp_phase() @@ -544,7 +544,7 @@ def write_edi_file(self, new_edi_fn=None): self._z_labels[2*ii+jj][0]) z_lines_imag = self._write_data_block(self.Z.z[:, ii, jj].imag, self._z_labels[2*ii+jj][1]) - z_lines_var = self._write_data_block(self.Z.zerr[:, ii, jj], + z_lines_var = self._write_data_block(self.Z.z_err[:, ii, jj], self._z_labels[2*ii+jj][2]) z_data_lines += z_lines_real @@ -566,7 +566,7 @@ def write_edi_file(self, new_edi_fn=None): self._t_labels[jj][0]) t_lines_imag = self._write_data_block(self.Tipper.tipper[:, 0, jj].imag, self._t_labels[jj][1]) - t_lines_var = self._write_data_block(self.Tipper.tippererr[:, 0, jj], + t_lines_var = self._write_data_block(self.Tipper.tipper_err[:, 0, jj], self._t_labels[jj][2]) t_data_lines += t_lines_real diff --git a/mtpy/core/mt.py b/mtpy/core/mt.py index cd9c2995..6a8bb4b2 100644 --- a/mtpy/core/mt.py +++ b/mtpy/core/mt.py @@ -79,7 +79,7 @@ class MT(object): * can input the following key words to fill values in Z and Tipper: - z_object --> mtpy.core.z.Z object - z_array --> np.ndarray(n_freq, 2, 2, dtype='complex') - - zerr_array --> np.ndarray(n_freq, 2, 2) + - z_err_array --> np.ndarray(n_freq, 2, 2) - freq --> np.ndarray(n_freq) - resistivity --> np.ndarray(n_freq, 2, 2) (linear scale) - resistivity_err --> np.ndarray(n_freq, 2, 2) @@ -87,7 +87,7 @@ class MT(object): - phase_err --> np.ndarray(n_freq, 2, 2) - tipper_object --> mtpy.core.z.Tipper object - tipper --> np.ndarray(n_freq, 1, 2, dtype='complex') - - tippererr --> np.ndarray(n_freq, 1, 2) + - tipper_err --> np.ndarray(n_freq, 1, 2) Methods ------------ @@ -166,8 +166,8 @@ def __init__(self, fn=None, **kwargs): if 'z_array' in kwargs: self._Z.z = kwargs['z_array'] - if 'zerr_array' in kwargs: - self._Z.zerr = kwargs['zerr_array'] + if 'z_err_array' in kwargs: + self._Z.z_err = kwargs['z_err_array'] if 'freq' in kwargs: self._Z.freq = kwargs['freq'] @@ -179,8 +179,8 @@ def __init__(self, fn=None, **kwargs): if 'tipper' in kwargs: self._Tipper.tipper = kwargs['tipper'] - if 'tippererr' in kwargs: - self._Tipper.tippererr = kwargs['tippererr'] + if 'tipper_err' in kwargs: + self._Tipper.tipper_err = kwargs['tipper_err'] if 'resisitivity' in kwargs: self._Z.resistivity = kwargs['resistivity'] @@ -491,13 +491,13 @@ def _check_freq_order(self): if self.Z.freq[0] < self.Z.freq[1]: print 'Flipping arrays to be ordered from short period to long' self.Z.z = self.Z.z.copy()[::-1] - self.Z.zerr = self.Z.zerr.copy()[::-1] + self.Z.z_err = self.Z.z_err.copy()[::-1] self.Z.freq = self.Z.freq.copy()[::-1] if self.Tipper.tipper is not None: if self.Tipper.freq[0] < self.Tipper.freq[1]: self.Tipper.tipper = self.Tipper.tipper.copy()[::-1] - self.Tipper.tippererr = self.Tipper.tippererr.copy()[::-1] + self.Tipper.tipper_err = self.Tipper.tipper_err.copy()[::-1] self.Tipper.freq = self.Tipper.freq.copy()[::-1] def remove_distortion(self, num_freq=None): @@ -639,12 +639,12 @@ def interpolate(self, new_freq_array): # make a new Z object new_Z = MTz.Z(z_array=np.zeros((new_freq_array.shape[0], 2, 2), dtype='complex'), - zerr_array=np.zeros((new_freq_array.shape[0], 2, 2)), + z_err_array=np.zeros((new_freq_array.shape[0], 2, 2)), freq=new_freq_array) new_Tipper = MTz.Tipper(tipper_array=np.zeros((new_freq_array.shape[0], 1, 2), dtype='complex'), - tippererr_array=np.zeros((new_freq_array.shape[0], 1, 2)), + tipper_err_array=np.zeros((new_freq_array.shape[0], 1, 2)), freq=new_freq_array) # interpolate the impedance tensor @@ -657,9 +657,9 @@ def interpolate(self, new_freq_array): new_Z.z[:, ii, jj] = z_func_real(new_freq_array)+\ 1j*z_func_imag(new_freq_array) - z_func_err = spi.interp1d(self.Z.freq, self.Z.zerr[:, ii, jj], + z_func_err = spi.interp1d(self.Z.freq, self.Z.z_err[:, ii, jj], kind='slinear') - new_Z.zerr[:, ii, jj] = z_func_err(new_freq_array) + new_Z.z_err[:, ii, jj] = z_func_err(new_freq_array) # if there is not tipper than skip if self.Tipper.tipper is None: @@ -677,9 +677,9 @@ def interpolate(self, new_freq_array): 1j*t_func_imag(new_freq_array) t_func_err = spi.interp1d(self.Z.freq, - self.Tipper.tippererr[:, 0, jj], + self.Tipper.tipper_err[:, 0, jj], kind='slinear') - new_Tipper.tippererr[:, 0, jj] = t_func_err(new_freq_array) + new_Tipper.tipper_err[:, 0, jj] = t_func_err(new_freq_array) return new_Z, new_Tipper diff --git a/mtpy/core/z.py b/mtpy/core/z.py index 928c6dd6..2979f6cf 100644 --- a/mtpy/core/z.py +++ b/mtpy/core/z.py @@ -52,7 +52,7 @@ class Z(object): **z_array** : numpy.ndarray(n_freq, 2, 2) array containing complex impedance values - **zerr_array** : numpy.ndarray(n_freq, 2, 2) + **z_err_array** : numpy.ndarray(n_freq, 2, 2) array containing error values (standard deviation) of impedance tensor elements **freq** : np.ndarray(n_freq) @@ -65,7 +65,7 @@ class Z(object): freq array of frequencies corresponding to elements of z rotation_angle angle of which data is rotated by z impedance tensor - zerr estimated errors of impedance tensor + z_err estimated errors of impedance tensor resistivity apparent resisitivity estimated from z in Ohm-m resistivity_err apparent resisitivity error phase impedance phase (deg) @@ -89,7 +89,7 @@ class Z(object): res_phase computes resistivity and phase rotate rotates z positive clockwise, angle assumes North is 0. - set_res_phase recalculates z and zerr, needs attribute freq + set_res_phase recalculates z and z_err, needs attribute freq skew calculates the invariant skew (off diagonal trace) trace calculates the trace of z =================== ======================================================= @@ -107,7 +107,7 @@ class Z(object): """ - def __init__(self, z_array=None, zerr_array=None, freq=None): + def __init__(self, z_array=None, z_err_array=None, freq=None): """ Initialise an instance of the Z class. @@ -116,7 +116,7 @@ def __init__(self, z_array=None, zerr_array=None, freq=None): **z_array** : numpy.ndarray(n_freq, 2, 2) array containing complex impedance values - **zerr_array** : numpy.ndarray(n_freq, 2, 2) + **z_err_array** : numpy.ndarray(n_freq, 2, 2) array containing error values (standard deviation) of impedance tensor elements @@ -128,7 +128,7 @@ def __init__(self, z_array=None, zerr_array=None, freq=None): """ self._z = z_array - self._zerr = zerr_array + self._z_err = z_err_array self._freq = freq if z_array is not None: @@ -137,11 +137,11 @@ def __init__(self, z_array=None, zerr_array=None, freq=None): self._z = np.zeros((1, 2, 2), 'complex') self._z[0] = z_array - if zerr_array is not None: - if len(zerr_array.shape) == 2 and zerr_array.shape == (2,2): - if zerr_array.dtype in ['complex', 'float','int']: - self._zerr = np.zeros((1, 2, 2), 'complex') - self._zerr[0] = zerr_array + if z_err_array is not None: + if len(z_err_array.shape) == 2 and z_err_array.shape == (2,2): + if z_err_array.dtype in ['complex', 'float','int']: + self._z_err = np.zeros((1, 2, 2), 'complex') + self._z_err[0] = z_err_array self.rotation_angle = 0. if self._z is not None: @@ -248,36 +248,36 @@ def _get_z(self): z = property(_get_z, _set_z, doc="impedance tensor") #----impedance error----------------------------------------------------- - def _set_zerr(self, zerr_array): + def _set_z_err(self, z_err_array): """ - Set the attribute zerr + Set the attribute z_err Arguments ------------ - **zerr_array** : np.ndarray(nfreq, 2, 2) + **z_err_array** : np.ndarray(nfreq, 2, 2) error of impedance tensor array as standard deviation Test for shape, but no test for consistency! """ - if zerr_array.shape!=self.z.shape: - print 'zerr_array shape {0} is not same shape as z {1}'.format( - zerr_array.shape, + if z_err_array.shape!=self.z.shape: + print 'z_err_array shape {0} is not same shape as z {1}'.format( + z_err_array.shape, self.z.shape) - self._zerr = zerr_array + self._z_err = z_err_array #for consistency recalculate resistivity and phase - if self._zerr is not None and self._z is not None: + if self._z_err is not None and self._z is not None: try: self._compute_res_phase() except IndexError: print 'Need to input frequency array' - def _get_zerr(self): - return self._zerr + def _get_z_err(self): + return self._z_err - zerr = property(_get_zerr, _set_zerr, doc='impedance tensor error') + z_err = property(_get_z_err, _set_z_err, doc='impedance tensor error') #---real part of impedance tensor----------------------------------------- @@ -409,9 +409,9 @@ def _compute_res_phase(self): self._resistivity_err = None self._phase_err = None - if self.zerr is not None: - self._resistivity_err = np.zeros_like(self.zerr) - self._phase_err = np.zeros_like(self.zerr) + if self.z_err is not None: + self._resistivity_err = np.zeros_like(self.z_err) + self._phase_err = np.zeros_like(self.z_err) self._resistivity = np.zeros_like(self.z, dtype='float') self._phase = np.zeros_like(self.z, dtype='float') @@ -425,13 +425,13 @@ def _compute_res_phase(self): self._phase[idx_f,i,j] = math.degrees(cmath.phase( self.z[idx_f,i,j])) - if self.zerr is not None: + if self.z_err is not None: - r_err, phi_err = MTcc.zerror2r_phi_error( + r_err, phi_err = MTcc.z_error2r_phi_error( np.real(self.z[idx_f,i,j]), - self.zerr[idx_f,i,j], + self.z_err[idx_f,i,j], np.imag(self.z[idx_f,i,j]), - self.zerr[idx_f,i,j]) + self.z_err[idx_f,i,j]) @@ -466,7 +466,7 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, Updates the attributes * z - * zerr + * z_err """ if self.z is not None: @@ -523,18 +523,18 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, if reserr_array is None or phaseerr_array is None: return - if self.zerr is not None: - zerr_new = copy.copy(self.zerr) + if self.z_err is not None: + z_err_new = copy.copy(self.z_err) try: - if self.zerr.shape != reserr_array.shape: + if self.z_err.shape != reserr_array.shape: print 'Error - shape of "reserr" array does not match'+\ 'shape of Zerr array: {0} ; {1}'.format( reserr_array.shape, - self.zerr.shape) + self.z_err.shape) return - if self.zerr.shape != phaseerr_array.shape: + if self.z_err.shape != phaseerr_array.shape: print 'Error - shape of "phase" array does not match'+\ 'shape of Zerr array: {0} ; {1}'.format( phase_array.shape, @@ -543,24 +543,24 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, except: print 'Error - "phaseerr" or "reserr" is/are not array(s)'+\ '- Zerr not set' - self.zerr = None + self.z_err = None return else: - zerr_new = np.zeros(reserr_array.shape,'float') + z_err_new = np.zeros(reserr_array.shape,'float') try: if reserr_array.shape != phaseerr_array.shape: print 'Error - shape of "phase" array does not match'+\ 'shape of Zerr array: {0} ; {1}'.format( reserr_array.shape, - self.zerr.shape) + self.z_err.shape) return except: print 'Error - "phaseerr" or "reserr" is/are not array(s) -'+\ ' Zerr not set' return - for idx_f in range(len(zerr_new)): + for idx_f in range(len(z_err_new)): for i in range(2): for j in range(2): abs_z = np.sqrt(5 * self.freq[idx_f] * \ @@ -571,13 +571,13 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, #exponent in the relation between them: abs_z_error = 0.5 * abs_z * rel_error_res - zerr_new[idx_f,i,j] = max(MTcc.propagate_error_polar2rect( + z_err_new[idx_f,i,j] = max(MTcc.propagate_error_polar2rect( abs_z, abs_z_error, phase_array[idx_f,i,j], phaseerr_array[idx_f,i,j])) - self.zerr = zerr_new + self.z_err = z_err_new #for consistency recalculate resistivity and phase self._compute_res_phase() @@ -621,7 +621,7 @@ def rotate(self, alpha): Updates the attributes - *z* - - *zerr* + - *z_err* - *zrot* - *resistivity* - *phase* @@ -670,7 +670,7 @@ def rotate(self, alpha): return z_rot = copy.copy(self.z) - zerr_rot = copy.copy(self.zerr) + z_err_rot = copy.copy(self.z_err) for idx_freq in range(len(self.z)): @@ -678,20 +678,20 @@ def rotate(self, alpha): if np.isnan(angle): angle = 0. - if self.zerr is not None: - z_rot[idx_freq], zerr_rot[idx_freq] = \ + if self.z_err is not None: + z_rot[idx_freq], z_err_rot[idx_freq] = \ MTcc.rotatematrix_incl_errors(self.z[idx_freq,:,:], angle, - self.zerr[idx_freq,:,:]) + self.z_err[idx_freq,:,:]) else: - z_rot[idx_freq], zerr_rot = \ + z_rot[idx_freq], z_err_rot = \ MTcc.rotatematrix_incl_errors(self.z[idx_freq,:,:], angle) self.z = z_rot - if self.zerr is not None: - self.zerr = zerr_rot + if self.z_err is not None: + self.z_err = z_err_rot #for consistency recalculate resistivity and phase self._compute_res_phase() @@ -895,7 +895,7 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): #propagation of errors - step 2 - product of D.inverse and Z; #D.I * Z, making it 4 summands for each component: z_corrected = np.zeros_like(self.z) - z_corrected_err = np.zeros_like(self.zerr) + z_corrected_err = np.zeros_like(self.z_err) for idx_f in range(len(self.z)): z_corrected[idx_f] = np.array(np.dot(DI, np.matrix(self.z[idx_f]))) @@ -905,11 +905,11 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): np.array([DI_err[i,0]*\ self.z[idx_f,0,j],\ DI[i,0]*\ - self.zerr[idx_f,0,j],\ + self.z_err[idx_f,0,j],\ DI_err[i,1]*\ self.z[idx_f,1,j],\ DI[i,1]*\ - self.zerr[idx_f,1,j]]))) + self.z_err[idx_f,1,j]]))) return distortion_tensor , z_corrected, z_corrected_err @@ -988,9 +988,9 @@ def _get_trace(self): tr = np.array( [np.trace(i) for i in self.z]) tr_err = None - if self.zerr is not None: + if self.z_err is not None: tr_err = np.zeros_like(tr) - tr_err[:] = self.zerr[:,0,0] + self.zerr[:,1,1] + tr_err[:] = self.z_err[:,0,0] + self.z_err[:,1,1] return tr, tr_err @@ -1013,9 +1013,9 @@ def _get_skew(self): skew = np.array( [ i[0,1] - i[1,0] for i in self.z ] ) skewerr = None - if self.zerr is not None: + if self.z_err is not None: skewerr = np.zeros_like(skew) - skewerr[:] = self.zerr[:,0,1] + self.zerr[:,1,0] + skewerr[:] = self.z_err[:,0,1] + self.z_err[:,1,0] return skew, skewerr skew = property(_get_skew, doc='Skew of Z, incl. error') @@ -1036,12 +1036,12 @@ def _get_det(self): det_Z = np.array( [np.linalg.det(i) for i in self.z]) det_Z_err = None - if self.zerr is not None: + if self.z_err is not None: det_Z_err = np.zeros_like(det_Z) - det_Z_err[:] = np.abs(self.z[:,1,1] * self.zerr[:,0,0]) +\ - np.abs(self.z[:,0,0] * self.zerr[:,1,1]) +\ - np.abs(self.z[:,0,1] * self.zerr[:,1,0]) +\ - np.abs(self.z[:,1,0] * self.zerr[:,0,1]) + det_Z_err[:] = np.abs(self.z[:,1,1] * self.z_err[:,0,0]) +\ + np.abs(self.z[:,0,0] * self.z_err[:,1,1]) +\ + np.abs(self.z[:,0,1] * self.z_err[:,1,0]) +\ + np.abs(self.z[:,1,0] * self.z_err[:,0,1]) return det_Z, det_Z_err det = property(_get_det, doc='Determinant of Z, incl. error') @@ -1063,11 +1063,11 @@ def _get_norm(self): znorm = np.array( [np.linalg.norm(i) for i in self.z ]) znormerr = None - if self.zerr is not None: + if self.z_err is not None: znormerr = np.zeros_like(znorm) for idx,z_tmp in enumerate(self.z): value = znorm[idx] - error_matrix = self.zerr[idx] + error_matrix = self.z_err[idx] radicand = 0. for i in range(2): for j in range(2): @@ -1164,7 +1164,7 @@ class Tipper(object): tipper array in the shape of [Tx, Ty] *default* is None - **tippererr_array** : np.ndarray((nf, 1, 2)) + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of estimated tipper errors in the shape of [Tx, Ty]. Must be the same shape as tipper_array. @@ -1182,7 +1182,7 @@ class Tipper(object): rotation_angle angle of which data is rotated by tipper tipper array - tippererr tipper error array + tipper_err tipper error array =============== =========================================================== =============== =========================================================== @@ -1198,7 +1198,7 @@ class Tipper(object): """ - def __init__(self, tipper_array=None, tippererr_array=None, + def __init__(self, tipper_array=None, tipper_err_array=None, freq=None): """ Initialise an instance of the Tipper class. @@ -1210,7 +1210,7 @@ def __init__(self, tipper_array=None, tippererr_array=None, tipper array in the shape of [Tx, Ty] *default* is None - **tippererr_array** : np.ndarray((nf, 1, 2)) + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of estimated tipper errors in the shape of [Tx, Ty]. Must be the same shape as tipper_array. @@ -1225,7 +1225,7 @@ def __init__(self, tipper_array=None, tippererr_array=None, """ self._tipper = tipper_array - self._tippererr = tippererr_array + self._tipper_err = tipper_err_array self._freq = freq self.rotation_angle = 0. @@ -1326,13 +1326,13 @@ def _get_tipper(self): tipper = property(_get_tipper, _set_tipper, doc="Tipper array") #----tipper error--------------------------------------------------------- - def _set_tippererr(self, tippererr_array): + def _set_tipper_err(self, tipper_err_array): """ - Set the attribute *tippererr*. + Set the attribute *tipper_err*. Arguments -------------- - **tippererr_array** : np.ndarray((nf, 1, 2)) + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of estimated tipper errors in the shape of [Tx, Ty]. Must be the same shape as tipper_array. @@ -1344,29 +1344,29 @@ def _set_tippererr(self, tippererr_array): #make sure the input array is of required shape try: - if len(tippererr_array.shape)==3 and \ - tippererr_array.shape[1:3]==(1,2): - if tippererr_array.dtype in ['float','int']: - self._tippererr = tippererr_array + if len(tipper_err_array.shape)==3 and \ + tipper_err_array.shape[1:3]==(1,2): + if tipper_err_array.dtype in ['float','int']: + self._tipper_err = tipper_err_array except: pass #make sure the error array is the same shape as tipper try: - if len(self.tipper) != len(self._tippererr): - self._tippererr = None + if len(self.tipper) != len(self._tipper_err): + self._tipper_err = None except: pass - if (self.tippererr!=None) and \ - (self._tippererr.shape!=tippererr_array.shape): - print 'Error - shape of "tippererr" array does not match shape '+\ - 'of tippererr array: %s ; %s'%(str(tippererr_array.shape), - str(self._tippererr.shape)) + if (self.tipper_err!=None) and \ + (self._tipper_err.shape!=tipper_err_array.shape): + print 'Error - shape of "tipper_err" array does not match shape '+\ + 'of tipper_err array: %s ; %s'%(str(tipper_err_array.shape), + str(self._tipper_err.shape)) return - self._tippererr = tippererr_array + self._tipper_err = tipper_err_array #for consistency recalculate mag and angle self._compute_mag_direction() @@ -1374,10 +1374,10 @@ def _set_tippererr(self, tippererr_array): #for consistency recalculate amplitude and phase self._compute_amp_phase() - def _get_tippererr(self): - return self._tippererr + def _get_tipper_err(self): + return self._tipper_err - tippererr = property(_get_tippererr, _set_tippererr, + tipper_err = property(_get_tipper_err, _set_tipper_err, doc="Estimated Tipper errors") #----real part--------------------------------------------------------- @@ -1509,9 +1509,9 @@ def _compute_amp_phase(self): self.amplitude_err = None self._phase_err = None - if self.tippererr is not None: - self.amplitude_err = np.zeros(self.tippererr.shape) - self._phase_err = np.zeros(self.tippererr.shape) + if self.tipper_err is not None: + self.amplitude_err = np.zeros(self.tipper_err.shape) + self._phase_err = np.zeros(self.tipper_err.shape) self.amplitude = np.zeros(self.tipper.shape) self._phase = np.zeros(self.tipper.shape) @@ -1523,12 +1523,12 @@ def _compute_amp_phase(self): self._phase[idx_f,0,j] = math.degrees(cmath.phase( self.tipper[idx_f,0,j])) - if self.tippererr is not None: + if self.tipper_err is not None: r_err, phi_err = MTcc.propagate_error_rect2polar( np.real(self.tipper[idx_f,0,j]), - self.tippererr[idx_f,0,j], + self.tipper_err[idx_f,0,j], np.imag(self.tipper[idx_f,0,j]), - self.tippererr[idx_f,0,j]) + self.tipper_err[idx_f,0,j]) self.amplitude_err[idx_f,0,j] = r_err self._phase_err[idx_f,0,j] = phi_err @@ -1539,7 +1539,7 @@ def set_amp_phase(self, r_array, phi_array): Updates the attributes * tipper - * tippererr + * tipper_err """ @@ -1630,11 +1630,11 @@ def _compute_mag_direction(self): -self.tipper[:,0,0].imag)) ## estimate error: THIS MAYBE A HACK - if self.tippererr is not None: - self.mag_err = np.sqrt(self.tippererr[:, 0, 0]**2+ \ - self.tippererr[:, 0, 1]**2) - self.angle_err = np.rad2deg(np.arctan2(self.tippererr[:, 0, 0], - self.tippererr[:, 0, 1]))%45 + if self.tipper_err is not None: + self.mag_err = np.sqrt(self.tipper_err[:, 0, 0]**2+ \ + self.tipper_err[:, 0, 1]**2) + self.angle_err = np.rad2deg(np.arctan2(self.tipper_err[:, 0, 0], + self.tipper_err[:, 0, 1]))%45 else: self.mag_err = None self.angle_err = None @@ -1676,7 +1676,7 @@ def rotate(self, alpha): Updates the attributes * *tipper* - * *tippererr* + * *tipper_err* * *rotation_angle* """ @@ -1721,25 +1721,25 @@ def rotate(self, alpha): return tipper_rot = copy.copy(self.tipper) - tippererr_rot = copy.copy(self.tippererr) + tipper_err_rot = copy.copy(self.tipper_err) for idx_freq in range(len(tipper_rot)): angle = lo_angles[idx_freq] - if self.tippererr is not None: - tipper_rot[idx_freq], tippererr_rot[idx_freq] = \ + if self.tipper_err is not None: + tipper_rot[idx_freq], tipper_err_rot[idx_freq] = \ MTcc.rotatevector_incl_errors(self.tipper[idx_freq,:,:], angle, - self.tippererr[idx_freq,:,:] ) + self.tipper_err[idx_freq,:,:] ) else: - tipper_rot[idx_freq], tippererr_rot = \ + tipper_rot[idx_freq], tipper_err_rot = \ MTcc.rotatevector_incl_errors(self.tipper[idx_freq,:,:], angle) self.tipper = tipper_rot - self.tippererr = tippererr_rot + self.tipper_err = tipper_err_rot #for consistency recalculate mag and angle self._compute_mag_direction() @@ -1751,7 +1751,7 @@ def rotate(self, alpha): #------------------------ -def rotate_z(z_array, alpha, zerr_array = None): +def rotate_z(z_array, alpha, z_err_array = None): """ Rotate a Z array assuming N==0 and E==90 @@ -1780,16 +1780,16 @@ def rotate_z(z_array, alpha, zerr_array = None): >>> rot_z = mtz.rotate_z(z_array, 45) """ - z_object = _read_z_array(z_array, zerr_array) + z_object = _read_z_array(z_array, z_err_array) z_object.rotate(alpha) - return z_object.z, z_object.zerr + return z_object.z, z_object.z_err def remove_distortion(z_array, distortion_tensor, - distortion_err_tensor = None, zerr_array = None): + distortion_err_tensor = None, z_err_array = None): """ Remove the distortion from a given Z array. @@ -1801,7 +1801,7 @@ def remove_distortion(z_array, distortion_tensor, real distorion tensor **distortion_err_tensor : np.ndarray(2, 2) error in distortion tensor - **zerr_array** : np.ndarray(z_array.shape) + **z_err_array** : np.ndarray(z_array.shape) error in impedance tensor, same shape as z_array @@ -1818,7 +1818,7 @@ def remove_distortion(z_array, distortion_tensor, """ - z_object = _read_z_array(z_array, zerr_array) + z_object = _read_z_array(z_array, z_err_array) distortion, z_corrected, z_corrected_err = \ z_object.no_distortion(distortion_tensor, distortion_err_tensor) @@ -1826,7 +1826,7 @@ def remove_distortion(z_array, distortion_tensor, return z_corrected, z_corrected_err, z_array -def remove_ss(z_array, zerr_array = None, res_x = 1., res_y = 1.): +def remove_ss(z_array, z_err_array = None, res_x = 1., res_y = 1.): """ Remove the static shift from a given Z array. @@ -1835,7 +1835,7 @@ def remove_ss(z_array, zerr_array = None, res_x = 1., res_y = 1.): **z_array** : np.ndarray(num_freq, 2, 2) impedance tensor - **zerr_array** : np.ndarray(z_array.shape) + **z_err_array** : np.ndarray(z_array.shape) error in impedance tensor, same shape as z_array **res_x** : float @@ -1858,14 +1858,14 @@ def remove_ss(z_array, zerr_array = None, res_x = 1., res_y = 1.): """ - z_object = _read_z_array(z_array, zerr_array) + z_object = _read_z_array(z_array, z_err_array) z_corrected, static_shift = z_object.no_ss() return z_corrected, static_shift, z_array -def remove_ss_and_distortion(z_array, zerr_array = None, res_x = 1., +def remove_ss_and_distortion(z_array, z_err_array = None, res_x = 1., res_y = 1.): """ Not implemented yet !! @@ -1875,7 +1875,7 @@ def remove_ss_and_distortion(z_array, zerr_array = None, res_x = 1., -def z2resphi(z_array, periods, zerr_array = None): +def z2resphi(z_array, periods, z_err_array = None): """ Return the resistivity/phase information for Z (Z must be given in units "km/s" = "mu m / nT"!!). @@ -1888,7 +1888,7 @@ def z2resphi(z_array, periods, zerr_array = None): array of periods corresponding to the elements in z_array - **zerr_array** : np.ndarray(z_array.shape) + **z_err_array** : np.ndarray(z_array.shape) error in impedance tensor, same shape as z_array @@ -1909,14 +1909,14 @@ def z2resphi(z_array, periods, zerr_array = None): periods) """ - z_object = _read_z_array(z_array,zerr_array) + z_object = _read_z_array(z_array,z_err_array) z_object.freq= np.array(1./periods) return (z_object.resistivity, z_object.resistivity_err, z_object.phase, z_object.phase_err) -def rotate_tipper(tipper_array, alpha, tippererr_array = None): +def rotate_tipper(tipper_array, alpha, tipper_err_array = None): """ Rotate a Tipper array @@ -1926,7 +1926,7 @@ def rotate_tipper(tipper_array, alpha, tippererr_array = None): tipper array **alpha** : float rotation angle in degrees clockwise - **tippererr_array** : np.ndarray(tipper_array.shape) + **tipper_err_array** : np.ndarray(tipper_array.shape) tipper error needs to be the same shape as tipper_array @@ -1945,14 +1945,14 @@ def rotate_tipper(tipper_array, alpha, tippererr_array = None): """ - tipper_object = _read_tipper_array(tipper_array, tippererr_array) + tipper_object = _read_tipper_array(tipper_array, tipper_err_array) tipper_object.rotate(alpha) - return tipper_object.tipper, tipper_object.tippererr + return tipper_object.tipper, tipper_object.tipper_err -def tipper2rhophi(tipper_array, tippererr_array = None): +def tipper2rhophi(tipper_array, tipper_err_array = None): """ Return values for amplitude (rho) and argument (phi - in degrees). @@ -1960,12 +1960,12 @@ def tipper2rhophi(tipper_array, tippererr_array = None): (Rho, Phi, RhoError, PhiError) """ - tipper_object = _read_tipper_array(tipper_array, tippererr_array ) + tipper_object = _read_tipper_array(tipper_array, tipper_err_array ) return tipper_object.rho_phi() -def _read_z_array(z_array, zerr_array = None): +def _read_z_array(z_array, z_err_array = None): """ Read a Z array and return an instance of the Z class. @@ -1974,7 +1974,7 @@ def _read_z_array(z_array, zerr_array = None): ------------ **z_array** : np.ndarray (num_freq, 2, 2, dtype='complex') impedance tensor - **zerr_array** : np.ndarray(z_array.shape) + **z_err_array** : np.ndarray(z_array.shape) impedance tensor error, same shape as z_array @@ -1987,7 +1987,7 @@ def _read_z_array(z_array, zerr_array = None): try: - z_object = Z(z_array=z_array, zerr_array=zerr_array) + z_object = Z(z_array=z_array, z_err_array=z_err_array) except: raise MTex.MTpyError_Z('Cannot generate Z instance - check z-array'+\ 'dimensions/type: (N,2,2)/complex ; '+\ @@ -1996,7 +1996,7 @@ def _read_z_array(z_array, zerr_array = None): return z_object -def _read_tipper_array(tipper_array, tippererr_array = None): +def _read_tipper_array(tipper_array, tipper_err_array = None): """ Read a Tipper array and return an instance of the Tipper class. @@ -2005,7 +2005,7 @@ def _read_tipper_array(tipper_array, tippererr_array = None): ------------ **tipper_array** : np.ndarray (num_freq, 2, 2, dtype='complex') tipper tensor - **tippererr_array** : np.ndarray(z_array.shape) + **tipper_err_array** : np.ndarray(z_array.shape) tipper error, same shape as tipper_array @@ -2017,7 +2017,7 @@ def _read_tipper_array(tipper_array, tippererr_array = None): try: tipper_object = Tipper( tipper_array=tipper_array, - tippererr_array=tippererr_array ) + tipper_err_array=tipper_err_array ) except: raise MTex.MTpyError_tipper('Cannot generate Tipper instance -'+\ 'check dimensions/type: (N,1,2)/complex'+ diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 7e516730..711140e1 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1255,7 +1255,7 @@ def on_pick(self, event): # mask point in impedance object self.mt_obj.Z.z[d_index] = 0.0+0.0*1j - self.mt_obj.Z.zerr[d_index] = 0.0 + self.mt_obj.Z.z_err[d_index] = 0.0 self._ax.plot(data_period, data_value, **self.mask_kw) @@ -1283,7 +1283,7 @@ def on_pick(self, event): # mask point in impedance object self.mt_obj.Z.z[d_index] = 0.0+0.0*1j - self.mt_obj.Z.zerr[d_index] = 0.0 + self.mt_obj.Z.z_err[d_index] = 0.0 # mask the point in the axis selected self._ax.plot(data_period, data_value, **self.mask_kw) @@ -1310,7 +1310,7 @@ def on_pick(self, event): # set tipper data to 0 self.mt_obj.Tipper.tipper[d_index] = 0.0+0.0j - self.mt_obj.Tipper.tippererr[d_index] = 0.0 + self.mt_obj.Tipper.tipper_err[d_index] = 0.0 self.mt_obj.Tipper._compute_amp_phase() @@ -1354,7 +1354,7 @@ def rect_onselect_od(self, eclick, erelease): self.mt_obj.Z.phase[ff, 0, 1], **self.mask_kw) self.mt_obj.Z.z[ff, 0, 1] = 0.0+0.0*1j - self.mt_obj.Z.zerr[ff, 0, 1] = 0.0 + self.mt_obj.Z.z_err[ff, 0, 1] = 0.0 if self.edits_mode == 'Both' or self.edits_mode == 'Y': self.ax_res_od.plot(data_period, @@ -1366,7 +1366,7 @@ def rect_onselect_od(self, eclick, erelease): **self.mask_kw) self.mt_obj.Z.z[ff, 1, 0] = 0.0+0.0*1j - self.mt_obj.Z.zerr[ff, 1, 0] = 0.0 + self.mt_obj.Z.z_err[ff, 1, 0] = 0.0 self.ax_res_od.figure.canvas.draw() self.ax_phase_od.figure.canvas.draw() @@ -1387,7 +1387,7 @@ def rect_onselect_d(self, eclick, erelease): self.mt_obj.Z.phase[ff, 0, 0], **self.mask_kw) self.mt_obj.Z.z[ff, 0, 0] = 0.0+0.0*1j - self.mt_obj.Z.zerr[ff, 0, 0] = 0.0 + self.mt_obj.Z.z_err[ff, 0, 0] = 0.0 if self.edits_mode == 'Both' or self.edits_mode == 'Y': self.ax_res_d.plot(data_period, @@ -1399,7 +1399,7 @@ def rect_onselect_d(self, eclick, erelease): **self.mask_kw) self.mt_obj.Z.z[ff, 1, 1] = 0.0+0.0*1j - self.mt_obj.Z.zerr[ff, 1, 1] = 0.0 + self.mt_obj.Z.z_err[ff, 1, 1] = 0.0 self.ax_res_od.figure.canvas.draw() self.ax_phase_od.figure.canvas.draw() @@ -1417,7 +1417,7 @@ def rect_onselect_tr(self, eclick, erelease): **self.mask_kw) self.mt_obj.Tipper.tipper[ff, 0, 0] = 0.0+0.0*1j - self.mt_obj.Tipper.tippererr[ff, 0, 0] = 0.0 + self.mt_obj.Tipper.tipper_err[ff, 0, 0] = 0.0 self.mt_obj.Tipper._compute_amp_phase() @@ -1436,7 +1436,7 @@ def rect_onselect_ti(self, eclick, erelease): **self.mask_kw) self.mt_obj.Tipper.tipper[ff, 0, 1] = 0.0+0.0*1j - self.mt_obj.Tipper.tippererr[ff, 0, 1] = 0.0 + self.mt_obj.Tipper.tipper_err[ff, 0, 1] = 0.0 self.mt_obj.Tipper._compute_amp_phase() diff --git a/mtpy/gui/modem_mesh_builder.py b/mtpy/gui/modem_mesh_builder.py index df84f25b..77be6069 100644 --- a/mtpy/gui/modem_mesh_builder.py +++ b/mtpy/gui/modem_mesh_builder.py @@ -767,10 +767,12 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, east_line_ylist.extend([0, self.plot_grid_z.max()]) east_line_ylist.append(None) + self.ax_depth.plot(east_line_xlist, - east_line_ylist, - lw=self.line_width, - color=self.line_color) + east_line_ylist, + lw=self.line_width, + color=self.line_color, + picker=5) z_line_xlist = [] z_line_ylist = [] @@ -780,6 +782,7 @@ def plot_mesh(self, model_obj, east_limits=None, north_limits=None, z_line_xlist.append(None) z_line_ylist.extend([zz, zz]) z_line_ylist.append(None) + self.ax_depth.plot(z_line_xlist, z_line_ylist, lw=self.line_width, @@ -823,8 +826,7 @@ def on_pick(self, event): data_point = event.mouseevent north = np.round(float(data_point.ydata)*1000., -2) - - print north + self.model_obj.grid_north = np.append(self.model_obj.grid_north, north) self.model_obj.grid_north.sort() @@ -835,6 +837,21 @@ def on_pick(self, event): color='r', picker=3) + elif self.line_mode == 'add_h' and self._ax == self.ax_depth: + data_point = event.mouseevent + + depth = np.round(float(data_point.ydata)*1000., -2) + + self.model_obj.grid_z = np.append(self.model_obj.grid_z, + depth) + self.model_obj.grid_z.sort() + self.ax_depth.plot([self.plot_grid_east.min(), + self.plot_grid_east.max()], + [depth/1000., depth/1000.], + lw=self.line_width, + color='r', + picker=3) + elif self.line_mode == 'add_v' and self._ax == self.ax_map: data_point = event.mouseevent @@ -863,6 +880,34 @@ def on_pick(self, event): lw=self.line_width, color='w', picker=3) + + elif self.line_mode == 'del_v' and self._ax == self.ax_depth: + data_point = event.artist + east = data_point.get_xdata()[event.ind]*1000. + depth = data_point.get_ydata()[event.ind]*1000. + + new_ii = np.where(self.model_obj.grid_z != depth) + self.model_obj.grid_z = self.model_obj.grid_z[new_ii] + self.ax_map.plot([self.plot_grid_east.min(), + self.plot_grid_east.max()], + [depth/1000., depth/1000.], + lw=self.line_width, + color='w', + picker=3) + + elif self.line_mode == 'del_v' and self._ax == self.ax_map: + data_point = event.artist + east = data_point.get_xdata()[event.ind]*1000. + north = data_point.get_ydata()[event.ind]*1000. + + new_ii = np.where(self.model_obj.grid_north != north) + self.model_obj.grid_north = self.model_obj.grid_north[new_ii] + self.ax_map.plot([east/1000., east/1000.], + [self.plot_grid_north.min(), + self.plot_grid_north.max()], + lw=self.line_width, + color='w', + picker=3) self._ax.figure.canvas.draw() diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index 100314ae..ecaca2eb 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -535,43 +535,43 @@ def plot(self): erxx = mtplottools.plot_errorbar(axrxx, period[nzxx], z_obj.z[nzxx,0,0].real, - z_obj.zerr[nzxx,0,0].real, + z_obj.z_err[nzxx,0,0].real, **kw_xx) erxy = mtplottools.plot_errorbar(axrxy, period[nzxy], z_obj.z[nzxy,0,1].real, - z_obj.zerr[nzxy,0,1].real, + z_obj.z_err[nzxy,0,1].real, **kw_xx) eryx = mtplottools.plot_errorbar(axryx, period[nzyx], z_obj.z[nzyx,1,0].real, - z_obj.zerr[nzyx,1,0].real, + z_obj.z_err[nzyx,1,0].real, **kw_yy) eryy = mtplottools.plot_errorbar(axryy, period[nzyy], z_obj.z[nzyy,1,1].real, - z_obj.zerr[nzyy,1,1].real, + z_obj.z_err[nzyy,1,1].real, **kw_yy) #plot phase epxx = mtplottools.plot_errorbar(axpxx, period[nzxx], z_obj.z[nzxx,0,0].imag, - z_obj.zerr[nzxx,0,0].imag, + z_obj.z_err[nzxx,0,0].imag, **kw_xx) epxy = mtplottools.plot_errorbar(axpxy, period[nzxy], z_obj.z[nzxy,0,1].imag, - z_obj.zerr[nzxy,0,1].imag, + z_obj.z_err[nzxy,0,1].imag, **kw_xx) epyx = mtplottools.plot_errorbar(axpyx, period[nzyx], z_obj.z[nzyx,1,0].imag, - z_obj.zerr[nzyx,1,0].imag, + z_obj.z_err[nzyx,1,0].imag, **kw_yy) epyy = mtplottools.plot_errorbar(axpyy, period[nzyy], z_obj.z[nzyy,1,1].imag, - z_obj.zerr[nzyy,1,1].imag, + z_obj.z_err[nzyy,1,1].imag, **kw_yy) #plot tipper @@ -579,23 +579,23 @@ def plot(self): ertx = mtplottools.plot_errorbar(axtxr, period[ntx], t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtyr, period[nty], t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 0], + t_obj.tipper_err[nty, 0, 0], **kw_yy) eptx = mtplottools.plot_errorbar(axtxi, period[ntx], t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 1], + t_obj.tipper_err[ntx, 0, 1], **kw_xx) epty = mtplottools.plot_errorbar(axtyi, period[nty], t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) if self.plot_tipper == False: line_list = [[erxx[0]], [erxy[0]], [eryx[0]], [eryy[0]]] @@ -716,7 +716,7 @@ def plot(self): #plot model response if self.modem_resp is not None: resp_z_obj = self.modem_resp.mt_dict[self.station].Z - resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.zerr) + resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.z_err) resp_t_obj = self.modem_resp.mt_dict[self.station].Tipper @@ -922,28 +922,28 @@ def on_pick(self, event): #put the new error into the error array if len(self.ax_list) == 8: - err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, + err = self.modem_data.mt_dict[self.station].Z.z_err[p_index, self._comp_index_x, self._comp_index_y] err = err+abs(err)*self.z_err_increase self.modem_data.data_array[s_index]['z_err'][p_index, self._comp_index_x, self._comp_index_y] = err - self.modem_data.mt_dict[self.station].Z.zerr[p_index, + self.modem_data.mt_dict[self.station].Z.z_err[p_index, self._comp_index_x, self._comp_index_y] = err elif len(self.ax_list) == 12: if self._ax_index == 4 or self._ax_index == 5 or \ self._ax_index == 10 or self._ax_index == 11: - err = self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, + err = self.modem_data.mt_dict[self.station].Tipper.tipper_err[p_index, self._comp_index_x, self._comp_index_y] self.modem_data.data_array[s_index]['tip_err'][p_index, self._comp_index_x, self._comp_index_y] += abs(err)*self.t_err_increase - self.modem_data.mt_dict[self.station].Tipper.tippererr[p_index, + self.modem_data.mt_dict[self.station].Tipper.tipper_err[p_index, self._comp_index_x, self._comp_index_y] += abs(err)*self.t_err_increase else: - err = self.modem_data.mt_dict[self.station].Z.zerr[p_index, + err = self.modem_data.mt_dict[self.station].Z.z_err[p_index, self._comp_index_x, self._comp_index_y] self.modem_data.data_array[s_index]['z_err'][p_index, self._comp_index_x, self._comp_index_y] += abs(err)*self.z_err_increase - self.modem_data.mt_dict[self.station].Z.zerr[p_index, + self.modem_data.mt_dict[self.station].Z.z_err[p_index, self._comp_index_x, self._comp_index_y] += abs(err)*self.z_err_increase # make error bar array diff --git a/mtpy/gui/modem_plot_response_fast.py b/mtpy/gui/modem_plot_response_fast.py index a090b098..31a29049 100644 --- a/mtpy/gui/modem_plot_response_fast.py +++ b/mtpy/gui/modem_plot_response_fast.py @@ -768,43 +768,43 @@ def plot(self): # erxx = mtplottools.plot_errorbar(axrxx, # period[nzxx], # z_obj.z[nzxx,0,0].real, -# z_obj.zerr[nzxx,0,0].real, +# z_obj.z_err[nzxx,0,0].real, # **kw_xx) # erxy = mtplottools.plot_errorbar(axrxy, # period[nzxy], # z_obj.z[nzxy,0,1].real, -# z_obj.zerr[nzxy,0,1].real, +# z_obj.z_err[nzxy,0,1].real, # **kw_xx) # eryx = mtplottools.plot_errorbar(axryx, # period[nzyx], # z_obj.z[nzyx,1,0].real, -# z_obj.zerr[nzyx,1,0].real, +# z_obj.z_err[nzyx,1,0].real, # **kw_yy) # eryy = mtplottools.plot_errorbar(axryy, # period[nzyy], # z_obj.z[nzyy,1,1].real, -# z_obj.zerr[nzyy,1,1].real, +# z_obj.z_err[nzyy,1,1].real, # **kw_yy) # #plot phase # erxx = mtplottools.plot_errorbar(axpxx, # period[nzxx], # z_obj.z[nzxx,0,0].imag, -# z_obj.zerr[nzxx,0,0].imag, +# z_obj.z_err[nzxx,0,0].imag, # **kw_xx) # erxy = mtplottools.plot_errorbar(axpxy, # period[nzxy], # z_obj.z[nzxy,0,1].imag, -# z_obj.zerr[nzxy,0,1].imag, +# z_obj.z_err[nzxy,0,1].imag, # **kw_xx) # eryx = mtplottools.plot_errorbar(axpyx, # period[nzyx], # z_obj.z[nzyx,1,0].imag, -# z_obj.zerr[nzyx,1,0].imag, +# z_obj.z_err[nzyx,1,0].imag, # **kw_yy) # eryy = mtplottools.plot_errorbar(axpyy, # period[nzyy], # z_obj.z[nzyy,1,1].imag, -# z_obj.zerr[nzyy,1,1].imag, +# z_obj.z_err[nzyy,1,1].imag, # **kw_yy) # # #plot tipper @@ -812,23 +812,23 @@ def plot(self): # ertx = mtplottools.plot_errorbar(axtxr, # period, # t_obj.tipper[ntx, 0, 0].real, -# t_obj.tippererr[ntx, 0, 0], +# t_obj.tipper_err[ntx, 0, 0], # **kw_xx) # erty = mtplottools.plot_errorbar(axtyr, # period, # t_obj.tipper[nty, 0, 1].real, -# t_obj.tippererr[nty, 0, 0], +# t_obj.tipper_err[nty, 0, 0], # **kw_yy) # # ertx = mtplottools.plot_errorbar(axtxi, # period, # t_obj.tipper[ntx, 0, 0].imag, -# t_obj.tippererr[ntx, 0, 1], +# t_obj.tipper_err[ntx, 0, 1], # **kw_xx) # erty = mtplottools.plot_errorbar(axtyi, # period, # t_obj.tipper[nty, 0, 1].imag, -# t_obj.tippererr[nty, 0, 1], +# t_obj.tipper_err[nty, 0, 1], # **kw_yy) # if self.plot_tipper == False: # ax_list = [axrxx, axrxy, axryx, axryy, @@ -945,7 +945,7 @@ def plot(self): # cxy = (0, .7, 0) # cyx = (.7, .4, 0) # resp_z_obj = self.modem_resp.mt_dict[self.station].Z -# resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.zerr) +# resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.z_err) # # resp_t_obj = self.modem_resp.mt_dict[self.station].Tipper # diff --git a/mtpy/gui/modem_plot_response_faster.py b/mtpy/gui/modem_plot_response_faster.py index ec5b04bf..47e90a71 100644 --- a/mtpy/gui/modem_plot_response_faster.py +++ b/mtpy/gui/modem_plot_response_faster.py @@ -459,67 +459,67 @@ def plot(self): erxx = mtplottools.plot_errorbar(axrd, period[nzxx], z_obj.z[nzxx,0,0].real, - z_obj.zerr[nzxx,0,0].real, + z_obj.z_err[nzxx,0,0].real, **kw_xx) erxy = mtplottools.plot_errorbar(axrod, period[nzxy], z_obj.z[nzxy,0,1].real, - z_obj.zerr[nzxy,0,1].real, + z_obj.z_err[nzxy,0,1].real, **kw_xx) eryx = mtplottools.plot_errorbar(axrod, period[nzyx], z_obj.z[nzyx,1,0].real, - z_obj.zerr[nzyx,1,0].real, + z_obj.z_err[nzyx,1,0].real, **kw_yy) eryy = mtplottools.plot_errorbar(axrd, period[nzyy], z_obj.z[nzyy,1,1].real, - z_obj.zerr[nzyy,1,1].real, + z_obj.z_err[nzyy,1,1].real, **kw_yy) #plot phase erxx = mtplottools.plot_errorbar(axpd, period[nzxx], z_obj.z[nzxx,0,0].imag, - z_obj.zerr[nzxx,0,0].real, + z_obj.z_err[nzxx,0,0].real, **kw_xx) erxy = mtplottools.plot_errorbar(axpod, period[nzxy], z_obj.z[nzxy,0,1].imag, - z_obj.zerr[nzxy,0,1].real, + z_obj.z_err[nzxy,0,1].real, **kw_xx) eryx = mtplottools.plot_errorbar(axpod, period[nzyx], z_obj.z[nzyx,1,0].imag, - z_obj.zerr[nzyx,1,0].real, + z_obj.z_err[nzyx,1,0].real, **kw_yy) eryy = mtplottools.plot_errorbar(axpd, period[nzyy], z_obj.z[nzyy,1,1].imag, - z_obj.zerr[nzyy,1,1].real, + z_obj.z_err[nzyy,1,1].real, **kw_yy) #plot tipper ertxr = mtplottools.plot_errorbar(axtx, period[ntx], t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_tr) ertxi = mtplottools.plot_errorbar(axtx, period[ntx], t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 1], + t_obj.tipper_err[ntx, 0, 1], **kw_ti) ertyr = mtplottools.plot_errorbar(axty, period[nty], t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 0], + t_obj.tipper_err[nty, 0, 0], **kw_tr) ertyi = mtplottools.plot_errorbar(axty, period[nty], t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_ti) ax_list = [axrod, axrd, axpod, axpd, @@ -619,7 +619,7 @@ def plot(self): #plot model response if self.modem_resp is not None: resp_z_obj = self.modem_resp.mt_dict[self.station].Z - resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.zerr) + resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.z_err) resp_t_obj = self.modem_resp.mt_dict[self.station].Tipper diff --git a/mtpy/imaging/mtplottools.py b/mtpy/imaging/mtplottools.py index ff44fb28..dab68076 100644 --- a/mtpy/imaging/mtplottools.py +++ b/mtpy/imaging/mtplottools.py @@ -467,8 +467,8 @@ def compute_res_phase(self): #calculate determinant values zdet = np.array([np.linalg.det(zz)**.5 for zz in self._Z.z]) - if self._Z.zerr is not None: - zdetvar = np.array([np.linalg.det(zzv)**.5 for zzv in self._Z.zerr]) + if self._Z.z_err is not None: + zdetvar = np.array([np.linalg.det(zzv)**.5 for zzv in self._Z.z_err]) else: zdetvar = np.ones_like(zdet) @@ -518,7 +518,7 @@ class Tipper(object): **tipper_array** : np.ndarray((nf, 1, 2)) array of the complex tipper as [tx, ty] - **tippererr_array** : np.ndarray((nf, 1, 2)) + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of the tipper error as [tx, ty] Attributes: @@ -540,13 +540,13 @@ class Tipper(object): """ def __init__(self, tipper_object=None, tipper_array=None, - tippererr_array=None, rot_t=0, freq=None): + tipper_err_array=None, rot_t=0, freq=None): if tipper_object is not None: self._Tipper = tipper_object else: self._Tipper = mtz.Tipper(tipper_array=tipper_array, - tippererr_array=tippererr_array, + tipper_err_array=tipper_err_array, freq=freq) self.freq = freq @@ -631,7 +631,7 @@ class MTplot(object): **tipper_array** : np.array((nf, 1, 2), dtype='complex') array of tipper values for tx, ty. *default* is None - **tippererr_array** : np.array((nf, 1, 2)) + **tipper_err_array** : np.array((nf, 1, 2)) array of tipper error estimates, same shape as tipper_array. *default* is None @@ -676,7 +676,7 @@ class MTplot(object): -tipper tipper elements in an np.array((nf, 1, 2)) - -tippererr estimates of tipper error, same shape as tipper + -tipper_err estimates of tipper error, same shape as tipper -station station name @@ -736,7 +736,7 @@ class MTplot(object): def __init__(self, fn=None, z=None, z_err=None, res_array=None, phase_array=None, res_err_array=None, phase_err_array=None, - tipper=None, tippererr=None, station=None, period=None, + tipper=None, tipper_err=None, station=None, period=None, lat=None, lon=None, elev=None, rot_z=0, z_object=None, tipper_object=None, freq=None): @@ -764,7 +764,7 @@ def __init__(self, fn=None, z=None, z_err=None, res_array=None, raise mtex.MTpyError_Z('Need to input period array to '+\ 'compute Resistivity') - self._Z = mtz.Z(z_array=z, zerr_array=z_err) + self._Z = mtz.Z(z_array=z, z_err_array=z_err) self._Z.freq = 1./period #if a tipper object is input set it to _Tipper @@ -773,7 +773,7 @@ def __init__(self, fn=None, z=None, z_err=None, res_array=None, else: self._Tipper = mtz.Tipper(tipper_array=tipper, - tippererr_array=tippererr, + tipper_err_array=tipper_err, freq=freq) #--> read in the edi file if its given @@ -824,7 +824,7 @@ def _read_edi(self): if edi_obj.Tipper.tipper == None: self._set_tipper(np.zeros((self._Z.z.shape[0], 1, 2), dtype='complex')) - self._set_tippererr(np.zeros((self._Z.z.shape[0], 1, 2))) + self._set_tipper_err(np.zeros((self._Z.z.shape[0], 1, 2))) self._Tipper.rotation_angle = np.zeros(self._Z.z.shape[0]) self._Tipper.freq = edi_obj.Z.freq @@ -855,14 +855,14 @@ def _set_z(self, z): self._Z.z = z def _set_z_err(self, z_err): - self._Z.zerr = z_err + self._Z.z_err = z_err def _set_tipper(self, tipper): self._Tipper.tipper = tipper self._plot_tipper = 'y' - def _set_tippererr(self, tippererr): - self._Tipper.tippererr = tippererr + def _set_tipper_err(self, tipper_err): + self._Tipper.tipper_err = tipper_err def _set_station(self, station): self._station = station @@ -917,13 +917,13 @@ def _check_freq_order(self): self._freq = self._freq.copy()[::-1] self._Z.z = self._Z.z.copy()[::-1] - self._Z.zerr = self._Z.zerr.copy()[::-1] + self._Z.z_err = self._Z.z_err.copy()[::-1] self._Z.freq = self._freq.copy() try: if self._Tipper.tipper is not None: self._Tipper.tipper = self._Tipper.tipper.copy()[::-1] - self._Tipper.tippererr = self._Tipper.tippererr.copy()[::-1] + self._Tipper.tipper_err = self._Tipper.tipper_err.copy()[::-1] self._Tipper.freq = self._freq.copy() except AttributeError: pass @@ -936,13 +936,13 @@ def _get_z(self): return self._Z.z def _get_z_err(self): - return self._Z.zerr + return self._Z.z_err def _get_tipper(self): return self._Tipper.tipper - def _get_tippererr(self): - return self._Tipper.tippererr + def _get_tipper_err(self): + return self._Tipper.tipper_err def _get_station(self): return self._station @@ -983,7 +983,7 @@ def _get_freq(self): doc="Tipper array in the shape (nz, 2) complex "+\ "numpy.array") - tippererr = property(_get_tippererr, _set_tippererr, + tipper_err = property(_get_tipper_err, _set_tipper_err, doc="Tipper error array same shape as MT.tipper"+\ "real numpy.array") diff --git a/mtpy/imaging/plotpt.py b/mtpy/imaging/plotpt.py index 45f0685e..aeaba198 100755 --- a/mtpy/imaging/plotpt.py +++ b/mtpy/imaging/plotpt.py @@ -421,7 +421,7 @@ def plot(self): #---------------plotStrikeAngle----------------------------------- self.ax2 = self.fig.add_subplot(3, 2, 3) az = self.pt.azimuth[0] - azerr = self.pt.azimuth[1] + az_err = self.pt.azimuth[1] #put the strike into a coordinate system that goes from -90 to 90 az[np.where(az > 90)] -= 180 @@ -439,7 +439,7 @@ def plot(self): mec=self.strike_pt_color, mew=self.marker_lw, ls='none', - yerr=azerr, + yerr=az_err, ecolor=self.strike_pt_color, capsize=self.marker_size, elinewidth=self.marker_lw) diff --git a/mtpy/imaging/plotresidualptmaps.py b/mtpy/imaging/plotresidualptmaps.py index 4830c189..01a476f0 100644 --- a/mtpy/imaging/plotresidualptmaps.py +++ b/mtpy/imaging/plotresidualptmaps.py @@ -601,10 +601,10 @@ def _compute_residual_pt(self): #create new Z objects that have similar frequencies new_z1 = mtpl.mtz.Z(z_array=mt1.z[index_1], - zerr_array=mt1.z_err[index_1], + z_err_array=mt1.z_err[index_1], freq=mt1.freq[index_1]) new_z2 = mtpl.mtz.Z(z_array=mt2.z[index_2], - zerr_array=mt2.z_err[index_2], + z_err_array=mt2.z_err[index_2], freq=mt2.freq[index_2]) #make new phase tensor objects diff --git a/mtpy/imaging/plotresidualptps.py b/mtpy/imaging/plotresidualptps.py index b92ec1fd..d893ac7f 100644 --- a/mtpy/imaging/plotresidualptps.py +++ b/mtpy/imaging/plotresidualptps.py @@ -522,10 +522,10 @@ def _compute_residual_pt(self): #create new Z objects that have similar frequencies new_z1 = mtpl.mtz.Z(z_array=mt1.z[index_1], - zerr_array=mt1.z_err[index_1], + z_err_array=mt1.z_err[index_1], freq=mt1.freq[index_1]) new_z2 = mtpl.mtz.Z(z_array=mt2.z[index_2], - zerr_array=mt2.z_err[index_2], + z_err_array=mt2.z_err[index_2], freq=mt2.freq[index_2]) #make new phase tensor objects diff --git a/mtpy/imaging/plotresponse.py b/mtpy/imaging/plotresponse.py index 32fcd3b1..3219f3d1 100644 --- a/mtpy/imaging/plotresponse.py +++ b/mtpy/imaging/plotresponse.py @@ -97,7 +97,7 @@ class PlotResponse(mtpl.MTArrows, mtpl.MTEllipse): **tipper_array**: np.ndarray((nf, 1, 2), dtype='complex') array of tipper values for tx, ty. *default* is None - **tippererr_array**: np.ndarray((nf, 1, 2)) + **tipper_err_array**: np.ndarray((nf, 1, 2)) array of tipper error estimates, same shape as tipper_array. *default* is None @@ -355,7 +355,7 @@ def __init__(self, **kwargs): res_array = kwargs.pop('res_array', None) res_err_array = kwargs.pop('res__err_array', None) tipper_array = kwargs.pop('tipper_array', None) - tippererr_array = kwargs.pop('tippererr_array', None) + tipper_err_array = kwargs.pop('tipper_err_array', None) tipper_object = kwargs.pop('tipper_object', None) mt_object = kwargs.pop('mt_object', None) period = kwargs.pop('period', None) @@ -373,7 +373,7 @@ def __init__(self, **kwargs): phase_err_array=phase_err_array, res_err_array=res_err_array, tipper=tipper_array, - tippererr=tippererr_array, + tipper_err=tipper_err_array, tipper_object=tipper_object, period=period) diff --git a/mtpy/imaging/plotstrike.py b/mtpy/imaging/plotstrike.py index 01bd8400..12cbda92 100644 --- a/mtpy/imaging/plotstrike.py +++ b/mtpy/imaging/plotstrike.py @@ -331,14 +331,14 @@ def plot(self): #------------get strike from phase tensor strike angle--------------- pt = mt.get_PhaseTensor() az = 90-pt.azimuth[0] - azerr = pt.azimuth[1] + az_err = pt.azimuth[1] #need to add 90 because pt assumes 0 is north and #negative because measures clockwise. #put an error max on the estimation of strike angle if self.pt_error_floor: - az[np.where(azerr>self.pt_error_floor)] = 0.0 + az[np.where(az_err>self.pt_error_floor)] = 0.0 #fold so the angle goes from 0 to 180 if self.fold == True: diff --git a/mtpy/imaging/plotstrike2d.py b/mtpy/imaging/plotstrike2d.py index 8981bae4..a2090466 100644 --- a/mtpy/imaging/plotstrike2d.py +++ b/mtpy/imaging/plotstrike2d.py @@ -307,14 +307,14 @@ def plot(self): #------------get strike from phase tensor strike angle--------------- pt = mt.get_PhaseTensor() az = (90-pt.azimuth[0][index_2d])%360 - azerr = pt.azimuth[1][index_2d] + az_err = pt.azimuth[1][index_2d] #need to add 90 because pt assumes 0 is north and #negative because measures clockwise. #put an error max on the estimation of strike angle if self.pt_error_floor: - az[np.where(azerr>self.pt_error_floor)] = 0.0 + az[np.where(az_err>self.pt_error_floor)] = 0.0 #make a dictionary of strikes with keys as period diff --git a/mtpy/modeling/modem_new.py b/mtpy/modeling/modem_new.py index e5809940..bd554e04 100644 --- a/mtpy/modeling/modem_new.py +++ b/mtpy/modeling/modem_new.py @@ -696,12 +696,12 @@ def _fill_data_array(self): for kk, ff in enumerate(interp_periods): jj = np.where(self.period_list == ff)[0][0] self.data_array[ii]['z'][jj] = interp_z.z[kk, :, :] - self.data_array[ii]['z_err'][jj] = interp_z.zerr[kk, :, :] + self.data_array[ii]['z_err'][jj] = interp_z.z_err[kk, :, :] if mt_obj.Tipper.tipper is not None: self.data_array[ii]['tip'][jj] = interp_t.tipper[kk, :, :] self.data_array[ii]['tip_err'][jj] = \ - interp_t.tippererr[kk, :, :] + interp_t.tipper_err[kk, :, :] if rel_distance is False: self.get_relative_station_locations() @@ -1122,10 +1122,10 @@ def read_data_file(self, data_fn=None): for station in station_list: data_dict[station] = mt.MT() data_dict[station].Z = mtz.Z(z_array=z_dummy.copy(), - zerr_array=z_dummy.copy().real, + z_err_array=z_dummy.copy().real, freq=1./self.period_list) data_dict[station].Tipper = mtz.Tipper(tipper_array=t_dummy.copy(), - tippererr_array=t_dummy.copy().real, + tipper_err_array=t_dummy.copy().real, freq=1./self.period_list) #make sure that the station data starts out with false to fill #the data later @@ -1160,14 +1160,14 @@ def read_data_file(self, data_fn=None): z_err *= 796. data_dict[dd[1]].Z.z[p_index, ii, jj] = z_value - data_dict[dd[1]].Z.zerr[p_index, ii, jj] = z_err + data_dict[dd[1]].Z.z_err[p_index, ii, jj] = z_err #fill in tipper with appropriate values elif dd[7].find('T') == 0: if self.wave_sign_tipper == '+': data_dict[dd[1]].Tipper.tipper[p_index, ii, jj] = dd[8]+1j*dd[9] elif self.wave_sign_tipper == '-': data_dict[dd[1]].Tipper.tipper[p_index, ii, jj] = dd[8]-1j*dd[9] - data_dict[dd[1]].Tipper.tippererr[p_index, ii, jj] = dd[10] + data_dict[dd[1]].Tipper.tipper_err[p_index, ii, jj] = dd[10] #make mt_dict an attribute for easier manipulation later self.mt_dict = data_dict @@ -1197,10 +1197,10 @@ def read_data_file(self, data_fn=None): self.data_array[ii]['rel_north'] = mt_obj.grid_north self.data_array[ii]['z'][:] = mt_obj.Z.z - self.data_array[ii]['z_err'][:] = mt_obj.Z.zerr + self.data_array[ii]['z_err'][:] = mt_obj.Z.z_err self.data_array[ii]['tip'][:] = mt_obj.Tipper.tipper - self.data_array[ii]['tip_err'][:] = mt_obj.Tipper.tippererr + self.data_array[ii]['tip_err'][:] = mt_obj.Tipper.tipper_err def write_vtk_station_file(self, vtk_save_path=None, vtk_fn_basename='ModEM_stations'): @@ -4072,46 +4072,46 @@ def plot(self): erxy = mtplottools.plot_errorbar(axrxy, period[nzxy], abs(z_obj.z[nzxy,0,1].real), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axryx, period[nzyx], abs(z_obj.z[nzyx,1,0].real), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) #plot phase erxy = mtplottools.plot_errorbar(axpxy, period[nzxy], abs(z_obj.z[nzxy,0,1].imag), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axpyx, period[nzyx], abs(z_obj.z[nzyx,1,0].imag), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) #plot tipper if plot_tipper == True: ertx = mtplottools.plot_errorbar(axtr, period[ntx], t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtr, period[nty], t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) ertx = mtplottools.plot_errorbar(axti, period[ntx], t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axti, period[nty], t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) if plot_tipper == False: @@ -4205,43 +4205,43 @@ def plot(self): erxx = mtplottools.plot_errorbar(axrxx, period[nzxx], abs(z_obj.z[nzxx,0,0].real), - abs(z_obj.zerr[nzxx,0,0].real), + abs(z_obj.z_err[nzxx,0,0].real), **kw_xx) erxy = mtplottools.plot_errorbar(axrxy, period[nzxy], abs(z_obj.z[nzxy,0,1].real), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axryx, period[nzyx], abs(z_obj.z[nzyx,1,0].real), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) eryy = mtplottools.plot_errorbar(axryy, period[nzyy], abs(z_obj.z[nzyy,1,1].real), - abs(z_obj.zerr[nzyy,1,1].real), + abs(z_obj.z_err[nzyy,1,1].real), **kw_yy) #plot phase erxx = mtplottools.plot_errorbar(axpxx, period[nzxx], abs(z_obj.z[nzxx,0,0].imag), - abs(z_obj.zerr[nzxx,0,0].real), + abs(z_obj.z_err[nzxx,0,0].real), **kw_xx) erxy = mtplottools.plot_errorbar(axpxy, period[nzxy], abs(z_obj.z[nzxy,0,1].imag), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axpyx, period[nzyx], abs(z_obj.z[nzyx,1,0].imag), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) eryy = mtplottools.plot_errorbar(axpyy, period[nzyy], abs(z_obj.z[nzyy,1,1].imag), - abs(z_obj.zerr[nzyy,1,1].real), + abs(z_obj.z_err[nzyy,1,1].real), **kw_yy) #plot tipper @@ -4249,23 +4249,23 @@ def plot(self): ertx = mtplottools.plot_errorbar(axtxr, period[ntx], t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtyr, period[nty], t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 0], + t_obj.tipper_err[nty, 0, 0], **kw_yy) ertx = mtplottools.plot_errorbar(axtxi, period[ntx], t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 1], + t_obj.tipper_err[ntx, 0, 1], **kw_xx) erty = mtplottools.plot_errorbar(axtyi, period[nty], t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) if plot_tipper == False: ax_list = [axrxx, axrxy, axryx, axryy, @@ -4472,46 +4472,46 @@ def plot(self): erxy = mtplottools.plot_errorbar(axrxy, period[nzxy], abs(z_obj.z[nzxy,0,1].real), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axrxy, period[nzxy], abs(z_obj.z[nzxy,1,0].real), - abs(z_obj.zerr[nzxy,1,0].real), + abs(z_obj.z_err[nzxy,1,0].real), **kw_yy) #plot phase erxy = mtplottools.plot_errorbar(axpxy, period[nzxy], abs(z_obj.z[nzxy,0,1].imag), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axpxy, period[nzyx], abs(z_obj.z[nzyx,1,0].imag), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) #plot tipper if plot_tipper == True: ertx = mtplottools.plot_errorbar(axtr, period, t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtr, period, t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) ertx = mtplottools.plot_errorbar(axti, period, t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axti, period, t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) if plot_tipper == False: @@ -4590,66 +4590,66 @@ def plot(self): erxx = mtplottools.plot_errorbar(axrxx, period[nzxx], abs(z_obj.z[nzxx,0,0].real), - abs(z_obj.zerr[nzxx,0,0].real), + abs(z_obj.z_err[nzxx,0,0].real), **kw_xx) erxy = mtplottools.plot_errorbar(axrxy, period[nzxy], abs(z_obj.z[nzxy,0,1].real), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axrxy, period[nzyx], abs(z_obj.z[nzyx,1,0].real), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) eryy = mtplottools.plot_errorbar(axrxx, period[nzyy], abs(z_obj.z[nzyy,1,1].real), - abs(z_obj.zerr[nzyy,1,1].real), + abs(z_obj.z_err[nzyy,1,1].real), **kw_yy) #plot phase erxx = mtplottools.plot_errorbar(axpxx, period[nzxx], abs(z_obj.z[nzxx,0,0].imag), - abs(z_obj.zerr[nzxx,0,0].real), + abs(z_obj.z_err[nzxx,0,0].real), **kw_xx) erxy = mtplottools.plot_errorbar(axpxy, period[nzxy], abs(z_obj.z[nzxy,0,1].imag), - abs(z_obj.zerr[nzxy,0,1].real), + abs(z_obj.z_err[nzxy,0,1].real), **kw_xx) eryx = mtplottools.plot_errorbar(axpxy, period[nzyx], abs(z_obj.z[nzyx,1,0].imag), - abs(z_obj.zerr[nzyx,1,0].real), + abs(z_obj.z_err[nzyx,1,0].real), **kw_yy) eryy = mtplottools.plot_errorbar(axpxx, period[nzyy], abs(z_obj.z[nzyy,1,1].imag), - abs(z_obj.zerr[nzyy,1,1].real), + abs(z_obj.z_err[nzyy,1,1].real), **kw_yy) #plot tipper if plot_tipper == True: ertx = mtplottools.plot_errorbar(axtr, period[ntx], t_obj.tipper[ntx, 0, 0].real, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axtr, period[nty], t_obj.tipper[nty, 0, 1].real, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) ertx = mtplottools.plot_errorbar(axti, period[ntx], t_obj.tipper[ntx, 0, 0].imag, - t_obj.tippererr[ntx, 0, 0], + t_obj.tipper_err[ntx, 0, 0], **kw_xx) erty = mtplottools.plot_errorbar(axti, period[nty], t_obj.tipper[nty, 0, 1].imag, - t_obj.tippererr[nty, 0, 1], + t_obj.tipper_err[nty, 0, 1], **kw_yy) if plot_tipper == False: @@ -4779,11 +4779,11 @@ def plot(self): cyx = tuple(3*[1-.5/(rr+1)]) resp_z_obj = self.resp_object[rr].mt_dict[station].Z - resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.zerr) + resp_z_err = np.nan_to_num((z_obj.z-resp_z_obj.z)/z_obj.z_err) resp_t_obj = self.resp_object[rr].mt_dict[station].Tipper resp_t_err = np.nan_to_num((t_obj.tipper-resp_t_obj.tipper)/ - t_obj.tippererr) + t_obj.tipper_err) rrp = mtplottools.ResPhase(resp_z_obj) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 2fe5a026..09068147 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -281,7 +281,7 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, data_1_err = np.zeros_like(data_1, dtype=np.float) data_2_err = np.zeros_like(data_2, dtype=np.float) for zd, ze, ii in zip(zdet, zdet_err, range(len(zdet))): - de1, de2 = mtcc.zerror2r_phi_error(zd.real, + de1, de2 = mtcc.z_error2r_phi_error(zd.real, ze, zd.imag, ze) @@ -297,17 +297,17 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, elif self.mode == 'tez': data_1 = z_obj.z[:, 0, 1].real*np.pi*4e-4 - data_1_err = z_obj.zerr[:, 0, 1]*np.pi*4e-4 + data_1_err = z_obj.z_err[:, 0, 1]*np.pi*4e-4 data_2 = z_obj.z[:, 0, 1].imag*np.pi*4e-4 - data_2_err = z_obj.zerr[:, 0, 1]*np.pi*4e-4 + data_2_err = z_obj.z_err[:, 0, 1]*np.pi*4e-4 elif self.mode == 'tmz': data_1 = z_obj.z[:, 1, 0].real*np.pi*4e-4 - data_1_err = z_obj.zerr[:, 1, 0]*np.pi*4e-4 + data_1_err = z_obj.z_err[:, 1, 0]*np.pi*4e-4 data_2 = z_obj.z[:, 1, 0].imag*np.pi*4e-4 - data_2_err = z_obj.zerr[:, 1, 0]*np.pi*4e-4 + data_2_err = z_obj.z_err[:, 1, 0]*np.pi*4e-4 else: raise IOError('Mode {0} is not supported.'.format(self.mode)) @@ -614,7 +614,7 @@ def read_data_file(self, data_fn=None): self.data['phase'+pol][0] = np.rad2deg(np.arctan(self.data['res'+pol][0].imag/self.data['res'+pol][0].real)) for jjj in range(len(freq)): self.data['res'+pol][1,jjj],self.data['phase'+pol][1,jjj] =\ - mtcc.zerror2r_phi_error(self.data['z'+pol][0,jjj].real,self.data['z'+pol][1,jjj], + mtcc.z_error2r_phi_error(self.data['z'+pol][0,jjj].real,self.data['z'+pol][1,jjj], self.data['z'+pol][0,jjj].imag,self.data['z'+pol][1,jjj]) @@ -759,7 +759,7 @@ def read_resp_file(self, resp_fn=None, data_fn=None): for jjj in range(len(self.freq)): self.data['phase'+pol][1+ii,jjj] =\ - mtcc.zerror2r_phi_error(self.data['z'+pol][0+ii,jjj].real,self.data['z'+pol][1+ii,jjj].real, + mtcc.z_error2r_phi_error(self.data['z'+pol][0+ii,jjj].real,self.data['z'+pol][1+ii,jjj].real, self.data['z'+pol][0+ii,jjj].imag,self.data['z'+pol][1+ii,jjj].real)[1] if pol == 'xy': self.res_te = self.data['resxy'] diff --git a/mtpy/modeling/occam2d.py b/mtpy/modeling/occam2d.py index 4c7e34d1..903fbf1e 100644 --- a/mtpy/modeling/occam2d.py +++ b/mtpy/modeling/occam2d.py @@ -1913,7 +1913,7 @@ def build_data(self): rho_err = Z.resistivity_err phi_err = Z.phase_err z_array = Z.z - zerr_array = Z.zerr + z_err_array = Z.z_err for freq_num,freq in enumerate(self.frequencies): @@ -2038,10 +2038,10 @@ def build_data(self): tipper = T.tipper[idx_f] try: - tippererr = T.tippererr[idx_f] + tipper_err = T.tipper_err[idx_f] except: #print 'no Tipper error for station {0}/frequency {1}'.format(station_number,frequency_number) - tippererr = None + tipper_err = None if mode == 3 : @@ -2051,12 +2051,12 @@ def build_data(self): value = np.imag(tipper[0,1]) # get tipper error if it exists - if tippererr is None: + if tipper_err is None: raw_error = 0 if self.tipper_errorfloor is not None: raw_error = np.abs((self.tipper_errorfloor/100.)*value) else: - raw_error = tippererr[0,1] + raw_error = tipper_err[0,1] error = raw_error diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 19fd8dae..48f9d63c 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2387,7 +2387,7 @@ def _fill_data(self): rho_err = z_interp.resistivity_err if t_interp is not None: tipper = t_interp.tipper - tipper_err = t_interp.tippererr + tipper_err = t_interp.tipper_err else: tipper = None tipper_err = None diff --git a/mtpy/modeling/occamtools.py b/mtpy/modeling/occamtools.py index 6ed3a5e5..9ae6cca5 100644 --- a/mtpy/modeling/occamtools.py +++ b/mtpy/modeling/occamtools.py @@ -2575,7 +2575,7 @@ def make2DdataFile(self,edipath, mmode='both', savepath=None, stationlst=None, title=None, thetar=0, resxyerr=10, resyxerr=10, phasexyerr=5, phaseyxerr=5, ss=3*' ', string_fmt='%+2.6f', freqstep=1, plotyn='y', - lineori='ew', proj_strike='yes', tippererr=None, + lineori='ew', proj_strike='yes', tipper_err=None, ftol=.05): """ Make a data file that Occam can read. At the moment the inversion line @@ -2670,7 +2670,7 @@ def make2DdataFile(self,edipath, mmode='both', savepath=None, 'no' to project the line on the best fitting line through the stations. - **tippererr** : error for tipper in percent. If this value is + **tipper_err** : error for tipper in percent. If this value is entered than the tipper will be included in the inversion, if the value is None than the tipper will not be included. @@ -2747,7 +2747,7 @@ def make2DdataFile(self,edipath, mmode='both', savepath=None, if freq[0] Date: Fri, 20 May 2016 15:49:20 -0700 Subject: [PATCH 112/124] adding documentation --- mtpy/analysis/distortion.py | 80 +++++++++++++++++++++++++++++-- mtpy/analysis/geometry.py | 95 ++++++++++++++++++++++++------------- 2 files changed, 139 insertions(+), 36 deletions(-) diff --git a/mtpy/analysis/distortion.py b/mtpy/analysis/distortion.py index d485dc3e..6c1889b9 100644 --- a/mtpy/analysis/distortion.py +++ b/mtpy/analysis/distortion.py @@ -62,12 +62,47 @@ -def find_distortion(z_object, g = 'det', num_freq=None, lo_dims = None): +def find_distortion(z_object, g = 'det', num_freq=None, lo_dims=None): """ find optimal distortion tensor from z object automatically determine the dimensionality over all frequencies, then find the appropriate distortion tensor D + + Arguments + ------------- + + **z_object** : mtpy.core.z object + + **g** : [ 'det' | '01' | '10 ] + type of distortion correction + *default* is 'det' + + **num_freq** : int + number of frequencies to look for distortion from + the index 0 + *default* is None, meaning all frequencies are used + + **lo_dims** : list + list of dimensions for each frequency + *default* is None, meaning calculated from data + + Returns + --------- + + **distortion** : np.ndarray(2, 2) + distortion array all real values + + **distortion_err** : np.ndarray(2, 2) + distortion error array + + Example: + --------- + :Estimate Distortion: :: + + >>> import mtpy.analysis.distortion as distortion + >>> dis, dis_err = distortion.find_distortion(z_obj, num_freq=12) + """ z_obj = copy.deepcopy(z_object) @@ -305,7 +340,46 @@ def find_2d_distortion(z_object, include_non2d=False): return find_distortion(z_obj, lo_dims = lo_dims) -def remove_distortion(z_array=None, z_object=None, num_freq=None): +def remove_distortion(z_array=None, z_object=None, num_freq=None, g='det'): + """ + remove distortion from an impedance tensor using the method outlined by + Bibby et al., [2005]. + + Arguments + ----------- + + **z_array** : np.ndarray((nf, 2, 2)) + numpy array of impedance tensor + *default* is None + + **z_object** : mtpy.core.z object + *default* is None + + **num_freq** : int + number of frequecies to look for distortion + *default* is None, meaning look over all frequencies + + **g** : [ 'det' | '01' | '10 ] + type of distortion to look for + *default* is 'det' + + Returns + ------------ + + **distortion** : np.ndarray (2, 2) + distortion array + + **new_z_obj** : mtpy.core.z + z object with distortion removed and error calculated + + Examples + ------------- + + :Remove Distortion: :: + + >>> import mtpy.analysis.distortion as distortion + >>> d, new_z = distortion.remove_distortion(z_object=z_obj) + """ if z_array is not None: z_obj = MTz.Z(z_array=z_array) @@ -319,7 +393,7 @@ def remove_distortion(z_array=None, z_object=None, num_freq=None): #1. find distortion via function above, #2. remove distortion via method of z object - dis, dis_err = find_distortion(z_obj, num_freq=num_freq) + dis, dis_err = find_distortion(z_obj, num_freq=num_freq, g=g) try: distortion_tensor, zd, zd_err = z_obj.no_distortion(dis, diff --git a/mtpy/analysis/geometry.py b/mtpy/analysis/geometry.py index 5dafcf8f..c0860888 100644 --- a/mtpy/analysis/geometry.py +++ b/mtpy/analysis/geometry.py @@ -5,22 +5,17 @@ Contains classes and functions for handling geometry analysis of impedance tensors: -dimensionality, strike directions, alphas/betas/... +dimensionality, strike directions, alphas/skews/... - - - Class: - - Methods: - - - - Functions: - + * 1d - 2d : excentricity of ellipses + * 2d - 3d : skew < threshold (to be given as argument) + * strike: frequency - depending angle (incl. 90degree ambiguity) @UofA, 2013 (LK) +Edited by JP, 2016 + """ #================================================================= @@ -30,29 +25,63 @@ import mtpy.analysis.pt as MTpt import mtpy.utils.exceptions as MTex -# reload(MTex) -# reload(MTz) -reload(MTpt) - - #================================================================= - -# 1d - 2d : excentricity of ellipses -# 2d - 3d : beta < threshold (to be given as argument) -# strike: frequency - depending angle (incl. 90degree ambiguity) -# input: PT object, Z object (,edi object) - - - def dimensionality(z_array = None, z_object = None, pt_array= None, - pt_object = None, beta_threshold = 5, + pt_object = None, skew_threshold = 5, eccentricity_threshold = 0.1): """ - beta_threshold: angle in degrees - if beta is smaller than this, it's 2d + Esitmate dimensionality of an impedance tensor, frequency by frequency. + + Dimensionality is estimated from the phase tensor given the threshold + criteria on the skew angle and eccentricity following Bibby et al., 2005 + and Booker, 2014. + + Arguments + ------------ + + **z_array** : np.ndarray(nf, 2, 2) + numpy array of impedance elements + *default* is None + + **z_object** : mtpy.core.z.Z + z_object + *default* is None + + **pt_array** : np.ndarray(nf, 2, 2) + numpy array of phase tensor elements + *default* is None + + **pt_object** : mtpy.analysis.pt.PT + phase tensor object + *default* is None + + **skew_threshold** : float + threshold on the skew angle in degrees, anything + above this value is 3-D or azimuthally anisotropic + *default* is 5 degrees + + **eccentricity_threshold** : float + threshold on eccentricty in dimensionaless + units, anything below this value is 1-D + *default* is 0.1 + + Returns + ---------- + + **dimensions** : np.ndarray(nf, dtype=int) + an array of dimesions for each frequency + the values are [ 1 | 2 | 3 ] + + + Examples + ---------- + :Estimate Dimesions: :: + + >>> import mtpy.analysis.geometry as geometry + >>> dim = geometry.dimensionality(z_object=z_obj, + >>> skew_threshold=3) - eccentricity_threshold: fraction of eccentricity (0: circle - 1: line) - - if eccentricity (ellipticity) is small than this, it's a 1D geometry. """ @@ -74,10 +103,10 @@ def dimensionality(z_array = None, z_object = None, pt_array= None, #use criteria from Bibby et al. 2005 for determining the dimensionality for each frequency of the pt/z array: for idx_f in range(len(pt_obj.pt)): - #1. determine beta value... - beta = pt_obj.beta[0][idx_f] + #1. determine skew value... + skew = pt_obj.beta[0][idx_f] #compare with threshold for 3D - if beta > beta_threshold: + if skew > skew_threshold: lo_dimensionality.append(3) else: #2.check for eccentricity: @@ -92,7 +121,7 @@ def dimensionality(z_array = None, z_object = None, pt_array= None, def strike_angle(z_array = None, z_object = None, pt_array= None, - pt_object = None, beta_threshold = 5, + pt_object = None, skew_threshold = 5, eccentricity_threshold = 0.1): if z_array is not None: @@ -109,7 +138,7 @@ def strike_angle(z_array = None, z_object = None, pt_array= None, raise MTex.MTpyError_PT('Input argument is not an instance of the PhaseTensor class') pt_obj = pt_object - lo_dims = dimensionality(pt_object = pt_obj, beta_threshold =beta_threshold , eccentricity_threshold = eccentricity_threshold ) + lo_dims = dimensionality(pt_object = pt_obj, skew_threshold =skew_threshold , eccentricity_threshold = eccentricity_threshold ) lo_strikes = [] From 5b1df0779784e00b9949a76aaf9670bdda893b2f Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 20 May 2016 16:02:00 -0700 Subject: [PATCH 113/124] adding documentation --- mtpy/analysis/geometry.py | 102 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 99 insertions(+), 3 deletions(-) diff --git a/mtpy/analysis/geometry.py b/mtpy/analysis/geometry.py index c0860888..966241ef 100644 --- a/mtpy/analysis/geometry.py +++ b/mtpy/analysis/geometry.py @@ -101,7 +101,8 @@ def dimensionality(z_array = None, z_object = None, pt_array= None, pt_obj = pt_object - #use criteria from Bibby et al. 2005 for determining the dimensionality for each frequency of the pt/z array: + # use criteria from Bibby et al. 2005 for determining the dimensionality + # for each frequency of the pt/z array: for idx_f in range(len(pt_obj.pt)): #1. determine skew value... skew = pt_obj.beta[0][idx_f] @@ -123,6 +124,58 @@ def dimensionality(z_array = None, z_object = None, pt_array= None, def strike_angle(z_array = None, z_object = None, pt_array= None, pt_object = None, skew_threshold = 5, eccentricity_threshold = 0.1): + + """ + Estimate strike angle from 2D parts of the impedance tensor given the + skew and eccentricity thresholds + + Arguments + ------------ + + **z_array** : np.ndarray(nf, 2, 2) + numpy array of impedance elements + *default* is None + + **z_object** : mtpy.core.z.Z + z_object + *default* is None + + **pt_array** : np.ndarray(nf, 2, 2) + numpy array of phase tensor elements + *default* is None + + **pt_object** : mtpy.analysis.pt.PT + phase tensor object + *default* is None + + **skew_threshold** : float + threshold on the skew angle in degrees, anything + above this value is 3-D or azimuthally anisotropic + *default* is 5 degrees + + **eccentricity_threshold** : float + threshold on eccentricty in dimensionaless + units, anything below this value is 1-D + *default* is 0.1 + + Returns + ---------- + + **strike** : np.ndarray(nf) + an array of strike angles in degrees for each frequency + assuming 0 is north, and e is 90. There is a 90 + degree ambiguity in the angle. + + + Examples + ---------- + :Estimate Dimesions: :: + + >>> import mtpy.analysis.geometry as geometry + >>> strike = geometry.strike_angle(z_object=z_obj, + >>> skew_threshold=3) + + """ if z_array is not None: pt_obj = MTpt.PhaseTensor(z_array = z_array) @@ -138,7 +191,9 @@ def strike_angle(z_array = None, z_object = None, pt_array= None, raise MTex.MTpyError_PT('Input argument is not an instance of the PhaseTensor class') pt_obj = pt_object - lo_dims = dimensionality(pt_object = pt_obj, skew_threshold =skew_threshold , eccentricity_threshold = eccentricity_threshold ) + lo_dims = dimensionality(pt_object = pt_obj, + skew_threshold=skew_threshold, + eccentricity_threshold=eccentricity_threshold ) lo_strikes = [] @@ -167,7 +222,48 @@ def strike_angle(z_array = None, z_object = None, pt_array= None, -def eccentricity(z_array = None, z_object = None, pt_array= None, pt_object = None): +def eccentricity(z_array=None, z_object=None, pt_array=None, pt_object=None): + """ + Estimate eccentricy of a given impedance or phase tensor object + + + Arguments + ------------ + + **z_array** : np.ndarray(nf, 2, 2) + numpy array of impedance elements + *default* is None + + **z_object** : mtpy.core.z.Z + z_object + *default* is None + + **pt_array** : np.ndarray(nf, 2, 2) + numpy array of phase tensor elements + *default* is None + + **pt_object** : mtpy.analysis.pt.PT + phase tensor object + *default* is None + + + Returns + ---------- + + **eccentricity** : np.ndarray(nf) + + + **eccentricity_err** : np.ndarray(nf) + + + + Examples + ---------- + :Estimate Dimesions: :: + + >>> import mtpy.analysis.geometry as geometry + >>> ec, ec_err= geometry.eccentricity(z_object=z_obj) + """ if z_array is not None: From bfb3415e22e6052799dd58d087307eefe63eba1c Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 20 May 2016 18:16:52 -0700 Subject: [PATCH 114/124] adding documentation --- doc/master_index.rst | 2 + mtpy/analysis/distortion.py | 8 +-- mtpy/analysis/pt.py | 113 +++++++++++------------------------ mtpy/analysis/zinvariants.py | 6 +- mtpy/imaging/plotstrike.py | 21 ++++--- 5 files changed, 56 insertions(+), 94 deletions(-) diff --git a/doc/master_index.rst b/doc/master_index.rst index e535066a..fc5ebd22 100644 --- a/doc/master_index.rst +++ b/doc/master_index.rst @@ -12,6 +12,8 @@ Contents: :maxdepth: 2 core + analysis + modeling diff --git a/mtpy/analysis/distortion.py b/mtpy/analysis/distortion.py index 6c1889b9..2246d4b1 100644 --- a/mtpy/analysis/distortion.py +++ b/mtpy/analysis/distortion.py @@ -17,13 +17,11 @@ is in an independent, personalised module. - - Functions: - - @UofA, 2013 (LK) +Edited by JP, 2016 + """ #================================================================= @@ -62,7 +60,7 @@ -def find_distortion(z_object, g = 'det', num_freq=None, lo_dims=None): +def find_distortion(z_object, g ='det', num_freq=None, lo_dims=None): """ find optimal distortion tensor from z object diff --git a/mtpy/analysis/pt.py b/mtpy/analysis/pt.py index 0230ae5d..ef507123 100644 --- a/mtpy/analysis/pt.py +++ b/mtpy/analysis/pt.py @@ -1,54 +1,13 @@ #!/usr/bin/env python """ -mtpy/mtpy/analysis/pt.py +====================== +Phase Tensor +====================== -Contains classes and functions for handling Phase Tensor analysis of given impedance tensors (Z). - - Class: - "PhaseTensor" contains information about a Phase tensor PT. - - Methods: - - - set_pt - - set_pterr - - set_freq - - read_edi_file - - read_edi - - read_z - - read_z_array - - invariants - - trace - - alpha - - beta - - skew - - det - - _pi1 - - _pi2 - - phimin - - phimax - - rotate - - only1d - - only2d - - Class: - "ResidualPhaseTensor" contains information about a REsidual Phase tensor ResPT. - - Methods: - - - read_pt_objects - - read_pts - - set_rpt - - set_rpterr - - - Functions: - - - z2pt - - z_object2pt - - edi_object2pt - - edi_file2pt +Following Caldwell et al, 2004 +Residual Phase Tensor following Heise et al., [2008] @UofA, 2013 (LK) @@ -68,44 +27,44 @@ class PhaseTensor(object): """ - PhaseTensor class - generates a Phase Tensor (PT) object. + PhaseTensor class - generates a Phase Tensor (PT) object. - Methods include reading and writing from and to edi-objects, rotations - combinations of Z instances, as well as - calculation of invariants, inverse, amplitude/phase,... + Methods include reading and writing from and to edi-objects, rotations + combinations of Z instances, as well as + calculation of invariants, inverse, amplitude/phase,... - - PT is a complex array of the form (n_freq, 2, 2), - with indices in the following order: - PTxx: (0,0) - PTxy: (0,1) - PTyx: (1,0) - PTyy: (1,1) - - All internal methods are based on (Caldwell et al.,2004) and - (Bibby et al.,2005), in which they use the canonical cartesian 2D - reference (x1, x2). However, all components, coordinates, - and angles for in- and outputs are given in the geographical - reference frame: + + PT is a complex array of the form (n_freq, 2, 2), + with indices in the following order: + PTxx: (0,0) - PTxy: (0,1) - PTyx: (1,0) - PTyy: (1,1) + + All internal methods are based on (Caldwell et al.,2004) and + (Bibby et al.,2005), in which they use the canonical cartesian 2D + reference (x1, x2). However, all components, coordinates, + and angles for in- and outputs are given in the geographical + reference frame: x-axis = North ; y-axis = East (; z-axis = Down) - - Therefore, all results from using those methods are consistent - (angles are referenced from North rather than x1). + + Therefore, all results from using those methods are consistent + (angles are referenced from North rather than x1). + + ====================== ==================================================== + Attributes Description + ====================== ==================================================== + freq array of frequencies associated with elements of + impedance tensor. + pt phase tensor array + pterr phase tensor error + z impedance tensor + z_err impedance error + rotation_angle rotation angle in degrees + ====================== ==================================================== """ - def __init__(self, pt_array = None, pterr_array = None, z_array = None, - z_err_array = None, z_object = None, freq=None, pt_rot=0.0): - """ - Initialise an instance of the PhaseTensor class. + def __init__(self, pt_array=None, pterr_array=None, z_array=None, + z_err_array=None, z_object=None, freq=None, pt_rot=0.0): - Optional input: - pt_array : Numpy array containing Phase-Tensor values - pterr_array : Numpy array containing Phase-Tensor-error values - z_array : Numpy array containing Z values - z_err_array : Numpy array containing Z-error values (NOT variance, but stddev!) - z_object: MTpy core.z Z class instance - freq : numpy array containing freq values - - (Initialise attributes with None) - """ self._pt = pt_array self._pterr = pterr_array diff --git a/mtpy/analysis/zinvariants.py b/mtpy/analysis/zinvariants.py index e73964e6..86770de1 100644 --- a/mtpy/analysis/zinvariants.py +++ b/mtpy/analysis/zinvariants.py @@ -15,7 +15,7 @@ class Zinvariants: calculates invariants from Weaver et al. [2000, 2003]. At the moment it does not calculate the error for each invariant, only the strike. - Arguments: + Arguments ---------- **z_object** : type mtpy.core.z needs to have attributes: @@ -35,7 +35,7 @@ class Zinvariants: array of freq cooresponding to the impedance tensor elements. - Attributes: + Attributes ----------- **inv1** : real off diaganol part normalizing factor @@ -58,7 +58,7 @@ class Zinvariants: **q** : dependent variable suggesting dimensionality - Further reading: + Further reading ---------------- Weaver, J. T., Agarwal, A. K., Lilley, F. E. M., 2000, Characterization of the magnetotelluric tensor in terms of its diff --git a/mtpy/imaging/plotstrike.py b/mtpy/imaging/plotstrike.py index 12cbda92..ff11b0df 100644 --- a/mtpy/imaging/plotstrike.py +++ b/mtpy/imaging/plotstrike.py @@ -34,7 +34,7 @@ class PlotStrike(object): strike determined from the tipper, which is orthogonal to the induction arrow direction. - Arguments: + Arguments ---------- **fn_list** : list of strings full paths to .edi files to plot @@ -115,7 +115,7 @@ class PlotStrike(object): >>> strike.save_plot(r"/home/Figures") 'Figure saved to /home/Figures/StrikeAnalysis_.pdf' - Attributes: + Attributes ----------- -axhinv matplotlib.axes instance for invariant strike @@ -151,7 +151,7 @@ class PlotStrike(object): -text_size font size of text labeling the mode of the histogram -title_dict title dictionary - Methods: + Methods -------- -plot plots the pseudo section @@ -890,16 +890,16 @@ def save_plot(self, save_fn, file_format='pdf', """ save_plot will save the figure to save_fn. - Arguments: + Arguments ----------- **save_fn** : string full path to save figure to, can be input as - * directory path -> the directory path to save to + - directory path -> the directory path to save to in which the file will be saved as save_fn/station_name_ResPhase.file_format - * full path -> file will be save to the given + - full path -> file will be save to the given path. If you use this option then the format will be assumed to be provided by the path @@ -917,9 +917,12 @@ def save_plot(self, save_fn, file_format='pdf', it can be larger than dpi of the figure. **close_plot** : [ y | n ] - * 'y' will close the plot after saving. - * 'n' will leave plot open - + -'y' will close the plot after saving. + -'n' will leave plot open + + Examples + --------- + :Example: :: >>> # to save plot as jpg From 2df0704fbe1ca716b1cf9352e8d4470d9bd9b1c5 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 20 May 2016 18:17:04 -0700 Subject: [PATCH 115/124] adding documentation --- doc/analysis.rst | 31 +++++++++++++++++++++++++++++++ doc/imaging.rst | 18 ++++++++++++++++++ doc/modeling.rst | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 doc/analysis.rst create mode 100644 doc/imaging.rst create mode 100644 doc/modeling.rst diff --git a/doc/analysis.rst b/doc/analysis.rst new file mode 100644 index 00000000..a3acb341 --- /dev/null +++ b/doc/analysis.rst @@ -0,0 +1,31 @@ +*********** +Analysis +*********** + +**Module Distortion** +======================== +.. automodule:: mtpy.analysis.distortion + :members: + +**Module Geometry** +======================== +.. automodule:: mtpy.analysis.geometry + :members: + +**Module Phase Tensor** +======================== +.. automodule:: mtpy.analysis.pt + :members: + +**Module Static Shift** +======================== +.. automodule:: mtpy.analysis.staticshift + :members: + +**Module Z Invariants** +======================== +.. automodule:: mtpy.analysis.zinvariants + :members: + + + diff --git a/doc/imaging.rst b/doc/imaging.rst new file mode 100644 index 00000000..e5a3e671 --- /dev/null +++ b/doc/imaging.rst @@ -0,0 +1,18 @@ +================== +Imaging +================== + +**Module MTPlot** +======================== +.. automodule:: mtpy.imaging.mtplot + +.. automodule:: mtpy.imaging.plotresponse + :members: + +.. automodule:: mtpy.imaging.plotnresponses + :members: + +.. automodule:: mtpy.imaging.plotstrike + :members: + + diff --git a/doc/modeling.rst b/doc/modeling.rst new file mode 100644 index 00000000..30b92506 --- /dev/null +++ b/doc/modeling.rst @@ -0,0 +1,34 @@ +================= +Modeling +================= + +**Module ModEM** +================== + +.. automodule:: mtpy.modeling.modem_new + :members: + +**Module Occam 1D** +================== + +.. automodule:: mtpy.modeling.occam1d + :members: + +**Module Occam 2D** +================== + +.. automodule:: mtpy.modeling.occam2d_rewrite + :members: + +**Module Winglink** +================== + +.. automodule:: mtpy.modeling.winglink + :members: + +**Module WS3DINV** +================== + +.. automodule:: mtpy.modeling.ws3dinv + :members: + \ No newline at end of file From 8413ad4654bf06db3c0b03aebbe2bcb4896d2d36 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 23 May 2016 11:30:37 -0700 Subject: [PATCH 116/124] removed dependency on Edi, changed to mt lass in occam1d --- mtpy/modeling/occam1d.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mtpy/modeling/occam1d.py b/mtpy/modeling/occam1d.py index 09068147..666de87f 100644 --- a/mtpy/modeling/occam1d.py +++ b/mtpy/modeling/occam1d.py @@ -68,7 +68,7 @@ import time from matplotlib.ticker import MultipleLocator import matplotlib.gridspec as gridspec -import mtpy.core.edi as mtedi +import mtpy.core.mt as mt import mtpy.utils.calculator as mtcc import mtpy.analysis.geometry as mtg import matplotlib.pyplot as plt @@ -239,8 +239,8 @@ def write_data_file(self, rp_tuple=None, edi_file=None, save_path=None, if edi_file is not None: #read in edifile - edi_obj = mtedi.Edi(edi_file) - z_obj = edi_obj.Z + mt_obj = mt.MT(edi_file) + z_obj = mt_obj.Z z_obj._compute_res_phase() # get frequencies to invert @@ -2451,7 +2451,7 @@ def update_inputs(): return cline_inputs -def get_strike(edi_object,fmin,fmax,strike_approx = 0): +def get_strike(mt_object, fmin, fmax, strike_approx=0): """ get the strike from the z array, choosing the strike angle that is closest to the azimuth of the PT ellipse (PT strike). @@ -2459,10 +2459,10 @@ def get_strike(edi_object,fmin,fmax,strike_approx = 0): if there is not strike available from the z array use the PT strike. """ - fselect = (edi_object.freq > fmin) & (edi_object.freq < fmax) + fselect = (mt_object.Z.freq > fmin) & (mt_object.Z.freq < fmax) # get median strike angles for frequencies needed (two strike angles due to 90 degree ambiguity) - zstrike = mtg.strike_angle(z_object=edi_object.Z)[fselect] + zstrike = mtg.strike_angle(z_object=mt_object.Z)[fselect] # put both strikes in the same quadrant for averaging zstrike = zstrike % 90 zstrike = np.median(zstrike[np.isfinite(zstrike[:,0])],axis=0) @@ -2501,17 +2501,17 @@ def generate_inputfiles(**input_parameters): for edifile in edilist: # read the edi file to get the station name - eo = mtedi.Edi(op.join(edipath,edifile)) + eo = mt.MT(op.join(edipath,edifile)) print input_parameters['rotation_angle'],input_parameters['working_directory'],input_parameters['rotation_angle_file'] if input_parameters['rotation_angle'] == 'strike': spr = input_parameters['strike_period_range'] - fmax,fmin = [1./np.amin(spr),1./np.amax(spr)] + fmax,fmin = [1./np.amin(spr), 1./np.amax(spr)] rotangle = (get_strike(eo,fmin,fmax, - strike_approx = input_parameters['strike_approx']) - 90.) % 180 + strike_approx=input_parameters['strike_approx'])-90.)%180 elif input_parameters['rotation_angle'] == 'file': - with open(op.join(input_parameters['working_directory'],input_parameters['rotation_angle_file'])) as f: + with open(op.join(input_parameters['working_directory'], input_parameters['rotation_angle_file'])) as f: line = f.readline().strip().split() - print line,eo.station + print line, eo.station while string.upper(line[0]) != string.upper(eo.station): line = f.readline().strip().split() if len(line) == 0: From 023ca9c264c21f4413983183ede09a2d662776dd Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 23 May 2016 11:33:49 -0700 Subject: [PATCH 117/124] removed dependency on Edi, changed to mt lass in occam1d --- mtpy/modeling/occam2d_rewrite.py | 7 ------- mtpy/modeling/winglink.py | 14 +++++++++----- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 48f9d63c..8255254e 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -33,14 +33,8 @@ import numpy as np import scipy as sp from scipy.stats import mode -#import sys import os import os.path as op -#import subprocess -#import shutil -#import fnmatch -#import datetime -#from operator import itemgetter import time import matplotlib.colorbar as mcb from matplotlib.colors import Normalize @@ -48,7 +42,6 @@ import matplotlib.gridspec as gridspec import matplotlib.pyplot as plt import scipy.interpolate as spi - import mtpy.core.mt as mt import mtpy.modeling.winglinktools as MTwl import mtpy.analysis.geometry as MTgy diff --git a/mtpy/modeling/winglink.py b/mtpy/modeling/winglink.py index 573208bc..53b95dd8 100644 --- a/mtpy/modeling/winglink.py +++ b/mtpy/modeling/winglink.py @@ -2,7 +2,9 @@ """ Created on Mon Aug 22 15:19:30 2011 -@author: a1185872 +deal with output files from winglink. + +@author: jp """ import numpy as np @@ -13,6 +15,10 @@ import matplotlib.colorbar as mcb from matplotlib.colors import Normalize +#------------------------------------------------------------------------------ +class WLInputError(Exception): + pass + def read_output_file(output_fn): """ Reads in an output file from winglink and returns the data @@ -42,7 +48,7 @@ def read_output_file(output_fn): index is the data and the second index is the model response """ if os.path.isfile(output_fn) is False: - raise WLInuputError('Cannot find {0}, check path'.format(output_fn)) + raise WLInputError('Cannot find {0}, check path'.format(output_fn)) ofid = open(output_fn, 'r') lines = ofid.readlines() @@ -153,9 +159,7 @@ def read_model_file(model_fn): rho = rho[np.nonzero[rho]] return X, Y, Z, rho -#------------------------------------------------------------------------------ -class WLInputError(Exception): - pass + #============================================================================== # plot the MT and model responses From 34a2fb9bab03225e5bf6b42b8d79ed697c313fb1 Mon Sep 17 00:00:00 2001 From: JP Date: Mon, 23 May 2016 11:36:48 -0700 Subject: [PATCH 118/124] removed dependency on Edi, changed to mt class in ws3dinv --- mtpy/modeling/ws3dinv.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/mtpy/modeling/ws3dinv.py b/mtpy/modeling/ws3dinv.py index daa6f424..e95e0c59 100644 --- a/mtpy/modeling/ws3dinv.py +++ b/mtpy/modeling/ws3dinv.py @@ -77,7 +77,6 @@ import matplotlib.colorbar as mcb import matplotlib.gridspec as gridspec import mtpy.core.z as mtz -import mtpy.core.edi as mtedi import mtpy.core.mt as mt import mtpy.imaging.mtplottools as mtplottools import matplotlib.widgets as widgets @@ -88,8 +87,6 @@ import mtpy.analysis.pt as mtpt import mtpy.imaging.mtcolors as mtcl -import mtpy.utils.latlongutmconversion as ll2utm - try: from evtk.hl import gridToVTK, pointsToVTK except ImportError: @@ -1046,12 +1043,11 @@ def make_mesh(self): ('elev', np.float)]) #get station locations in meters for ii, edi in enumerate(self.edi_list): - zz = mtedi.Edi(edi) - zone, east, north = ll2utm.LLtoUTM(23, zz.lat, zz.lon) - self.station_locations[ii]['station'] = zz.station - self.station_locations[ii]['east'] = east - self.station_locations[ii]['north'] = north - self.station_locations[ii]['elev'] = zz.elev + mt_obj = mt.MT(edi) + self.station_locations[ii]['station'] = mt_obj.station + self.station_locations[ii]['east'] = mt_obj.east + self.station_locations[ii]['north'] = mt_obj.north + self.station_locations[ii]['elev'] = mt_obj.elev #remove the average distance to get coordinates in a relative space self.station_locations['east'] -= self.station_locations['east'].mean() From 37fa7ead43eecebcf62d6b45a5f1490b614174a3 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 25 May 2016 10:18:56 -0700 Subject: [PATCH 119/124] changed something in edi_editor --- mtpy/gui/edi_editor.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index 2455492b..de2a4012 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -133,10 +133,10 @@ def edit_plot_properties(self): def update_plot(self): - self.mask_kw = {'color' : self.plot_properties.mask_color, - 'marker' : self.plot_properties.mask_marker, - 'ms' : self.plot_properties.mask_ms, - 'mew' : self.plot_properties.mask_mew} + self.mask_kw = {'color' : self.plot_widget.plot_properties.mask_color, + 'marker' : self.plot_widget.plot_properties.mask_marker, + 'ms' : self.plot_widget.plot_properties.mask_ms, + 'mew' : self.plot_widget.plot_properties.mask_mew} self.plot_widget.redraw_plot() def edit_metadata(self): @@ -176,7 +176,7 @@ def __init__(self): self._edited_mask = False self._ax = None self.dir_path = os.getcwd() - self.edits_mode = 'both' + self.edits_mode = 'Both' self.interp_period_min = .001 self.interp_period_max = 1000. From 29be6600cad370a83e6b6a4daf97e6b80d501f77 Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 25 May 2016 10:55:57 -0700 Subject: [PATCH 120/124] changed test line 251 in edi to test for >= 0 rather than == 0 --- mtpy/core/edi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mtpy/core/edi.py b/mtpy/core/edi.py index 0438ca23..f8d143b2 100644 --- a/mtpy/core/edi.py +++ b/mtpy/core/edi.py @@ -229,7 +229,7 @@ def _read_mt(self, data_lines): data_dict = {} data_find = False for line in data_lines: - if line.find('>') == 0 and line.find('!') == -1: + if line.find('>') >= 0 and line.find('!') == -1: line_list = line[1:].strip().split() key = line_list[0].lower() if key[0] == 'z' or key[0] == 't' or key == 'freq': From 91d132c9f44e16427db1975dbb0d472b39f73a26 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 3 Jun 2016 09:05:37 -0700 Subject: [PATCH 121/124] Removed unnecessary methods from Z, fixed code syntax. --- examples/data/edi_files/pb40c_dr.edi | 287 ----- examples/data/edi_files/pb40c_dr_1.edi | 287 ----- examples/data/edi_files/pb40c_dr_2.edi | 287 ----- examples/data/edi_files/pb40c_dr_3.edi | 287 ----- mtpy/core/z.py | 1416 ++++++++++-------------- 5 files changed, 573 insertions(+), 1991 deletions(-) delete mode 100644 examples/data/edi_files/pb40c_dr.edi delete mode 100644 examples/data/edi_files/pb40c_dr_1.edi delete mode 100644 examples/data/edi_files/pb40c_dr_2.edi delete mode 100644 examples/data/edi_files/pb40c_dr_3.edi diff --git a/examples/data/edi_files/pb40c_dr.edi b/examples/data/edi_files/pb40c_dr.edi deleted file mode 100644 index d9016ee7..00000000 --- a/examples/data/edi_files/pb40c_dr.edi +++ /dev/null @@ -1,287 +0,0 @@ ->HEAD - ACQBY="Adelaide University" - ACQDATE="May 21, 2010" - DATAID=PB40 - ELEV=40.0 - LAT=-30:12:28.90 - LOC=PB40 - LONG=139:42:4.21 - PROSPECT= - FILEDATE="2015/12/23 21:10:51 UTC" - ->INFO - battery no: "33 Starting Voltage:12.64 End Voltage 12.37" - cache rate (hhmmss): 001000 - coherence threshold z channel (c2threshe1): None - coil calibration file: c:\BIRRP\BBConv.txt - data logger: 5440 - data logger gain: 1 - edifile_generated_with: MTpy - electric channel rotation angles (thetae): 0,90,180 - electric coherence threshold (c2threshe): 0 - final channel rotation angles (thetaf): 0,90,0 - first frequency extracted (nf1): 3 - frequency increment per window (nfinc): 1.0 - hard drive no: 5457 - instrument box no: 6 - interaction level (ilev): 1 - interface box gain: 1 - interface box no: 24 - large leverage point control (ainuin): 0.9999 - low and high periods for coherence threshold (perlo,perhi): 1000,0.001 - lower leverage point control (ainlin): 0.0001 - magnetic channel rotation angles (thetab): 0,90,0 - magnetic coherence threshold (c2thresheb): 0.45 - max length of fft window (nfft): 65536 - maximum number of fft sections (nsctmax): 12 - number of frequencies per window (nfsect): 3 - number of inputs (ninp): 2 - number of outputs (nout): 2 - number of periods to reject (nprej): 0 - number of remote reference time series (nref): 2 - order of prewhitening filter (nar): 5 - other notes: na - periods to reject (prej): [] - remote reference elev: 109 - remote reference lat: -30.436398 - remote reference long: 139.41805 - remote reference station: pbrt1 - remote reference(0) or bounded influence(1)(nrr): 1 - sampling frequency (hz): 500 - section increment divisor (nsctinc): 2 - slepian filter order (tbw): 2.0 - small leverage point control (uin): 0 - station: PB40 - z component (nz): 0 - z_unit: km/s - ->=DEFINEMEAS - MAXCHAN=6 - MAXMEAS=99999 - MAXRUN=999 - REFELEV=40.0 - REFLAT=-30:12:28.90 - REFLONG=139:42:4.21 - REFTYPY=CART - UNITS=M - ->HMEAS ID=1001.001 CHTYPE=HX X=0 Y=0 AZM=0 ->HMEAS ID=1002.001 CHTYPE=HY X=0 Y=0 AZM=90 ->EMEAS ID=1003.001 CHTYPE=EX X=0 Y=0 X2=1 Y2=0 ->EMEAS ID=1004.001 CHTYPE=EY X=0 Y=0 X2=0 Y2=1 ->HMEAS ID=1005.001 CHTYPE=RX X=0 Y=0 AZM=0 ->HMEAS ID=1006.001 CHTYPE=RY X=0 Y=0 AZM=90 - ->=MTSECT - EX=1003.001 - EY=1004.001 - HX=1001.001 - HY=1002.001 - NFREQ=43 - RX=1005.001 - RY=1006.001 - SECTID=pb40 - ->ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->FREQ // 43 - 7.812500E+01 6.250000E+01 4.687500E+01 3.906250E+01 3.125000E+01 - 2.343750E+01 1.953125E+01 1.562500E+01 1.171875E+01 9.765625E+00 - 7.812500E+00 6.250000E+00 4.687500E+00 3.906250E+00 3.125000E+00 - 2.343750E+00 1.953125E+00 1.562500E+00 1.171875E+00 9.765630E-01 - 7.812500E-01 5.859380E-01 4.882810E-01 3.906250E-01 2.929690E-01 - 2.441410E-01 1.953130E-01 1.464840E-01 1.220700E-01 9.765600E-02 - 7.324200E-02 6.103500E-02 4.882800E-02 3.662100E-02 3.051800E-02 - 2.441400E-02 1.831100E-02 1.525900E-02 1.220700E-02 9.155000E-03 - 7.629000E-03 6.104000E-03 4.578000E-03 ->ZXXR ROT=ZROT // 43 - -1.950602E-01 -7.877679E-02 -1.354958E-02 -1.016340E-01 -1.068363E-01 - -2.556549E-02 1.735777E-02 -8.629046E-02 3.696729E-02 -1.158885E-01 - -1.706151E-01 1.846241E-01 2.308541E-02 -8.270337E-02 -1.156645E-02 - 2.180831E-02 -8.548958E-02 -9.195541E-02 -1.126398E-01 -1.452928E-01 - -1.115086E-01 -1.182793E-01 -1.029727E-01 -9.980736E-02 -1.378449E-01 - -1.107826E-01 -1.711234E-01 -6.909361E-02 6.323641E-02 3.170431E-01 - 4.700372E-01 3.553120E-01 3.678321E-01 3.162205E-01 3.060866E-01 - 2.262841E-01 1.585538E-01 1.222738E-01 5.587674E-02 2.822400E-02 - -5.690047E-03 -9.264380E-02 -8.457153E-02 ->ZXXI ROT=ZROT // 43 - 2.879051E-02 3.930007E-02 1.296304E-01 7.947682E-02 7.324447E-02 - 1.267125E-01 8.323664E-03 5.831060E-02 -2.755219E-05 1.085138E-01 - 2.539557E-03 -2.861209E-01 -2.479288E-01 -2.674808E-01 -2.152567E-01 - -1.436582E-01 -1.003735E-02 -3.433876E-02 -8.268581E-02 -1.387663E-02 - -1.805511E-02 -4.781184E-02 -1.020548E-01 -1.400691E-01 -8.269172E-02 - 2.987281E-02 -1.857378E-01 -7.112660E-01 -3.040208E-02 -1.323874E-01 - -1.580048E-01 -8.187152E-02 -2.404874E-02 1.725111E-01 2.144813E-01 - 1.987740E-01 2.333290E-01 2.664314E-01 2.849244E-01 2.480580E-01 - 2.076563E-01 1.677504E-01 1.318504E-01 ->ZXX.VAR ROT=ZROT // 43 - 1.421312E-01 1.075002E-01 8.756574E-02 7.329615E-02 6.137320E-02 - 4.940604E-02 4.553192E-02 3.679834E-02 3.242501E-02 3.241742E-02 - 2.501043E-02 4.523809E-02 5.549056E-02 8.087498E-02 8.334246E-02 - 8.014919E-02 9.346488E-02 9.118009E-02 9.348000E-02 1.190718E-01 - 7.472345E-02 4.645375E-02 6.149907E-02 7.766288E-02 1.620396E-01 - 4.680229E-01 5.659081E-01 5.598377E-01 2.619339E-01 4.681031E-01 - 2.757554E-01 8.088920E-02 4.933451E-02 2.774816E-02 2.766368E-02 - 2.124983E-02 2.008194E-02 1.953235E-02 2.040770E-02 2.298102E-02 - 3.189924E-02 4.317053E-02 4.336814E-02 ->ZXYR ROT=ZROT // 43 - 2.677144E+01 2.433045E+01 2.223170E+01 1.908963E+01 1.712706E+01 - 1.449513E+01 1.314040E+01 1.150833E+01 1.031792E+01 8.248930E+00 - 7.597526E+00 6.759591E+00 6.201452E+00 5.765957E+00 5.271810E+00 - 4.735542E+00 4.423535E+00 4.211288E+00 3.855486E+00 3.802392E+00 - 3.758079E+00 3.544645E+00 3.517585E+00 3.642481E+00 3.563394E+00 - 3.641828E+00 3.343622E+00 3.453628E+00 3.449262E+00 3.093717E+00 - 2.707366E+00 2.751115E+00 2.421656E+00 2.008225E+00 2.011448E+00 - 1.810408E+00 1.629612E+00 1.642831E+00 1.572648E+00 1.480999E+00 - 1.366573E+00 1.187033E+00 9.804046E-01 ->ZXYI ROT=ZROT // 43 - 3.789254E+01 3.232767E+01 2.777478E+01 2.491902E+01 2.198960E+01 - 1.842648E+01 1.662163E+01 1.453029E+01 1.271596E+01 1.087847E+01 - 9.618873E+00 7.623082E+00 5.755468E+00 4.575622E+00 4.068296E+00 - 3.464370E+00 2.944063E+00 2.546875E+00 2.026183E+00 1.641912E+00 - 1.391116E+00 1.084861E+00 8.307758E-01 7.124609E-01 6.475073E-01 - 9.635032E-01 7.178844E-01 1.021909E+00 9.084394E-01 1.192942E+00 - 1.280879E+00 1.231849E+00 1.450307E+00 1.372029E+00 1.369968E+00 - 1.340517E+00 1.285243E+00 1.305496E+00 1.254647E+00 1.188913E+00 - 1.099368E+00 1.033781E+00 7.831510E-01 ->ZXY.VAR ROT=ZROT // 43 - 2.295912E-01 1.778952E-01 1.472770E-01 1.207062E-01 1.010640E-01 - 8.049440E-02 7.213532E-02 6.208548E-02 5.614133E-02 5.964191E-02 - 4.842184E-02 8.838125E-02 1.041721E-01 1.435474E-01 1.348245E-01 - 1.217757E-01 1.416203E-01 1.262645E-01 1.143838E-01 1.432810E-01 - 1.051930E-01 8.449595E-02 1.444026E-01 1.776584E-01 2.487376E-01 - 5.305558E-01 5.709333E-01 6.076017E-01 3.217834E-01 6.650024E-01 - 5.098383E-01 1.636727E-01 1.054111E-01 4.833697E-02 4.817286E-02 - 3.558594E-02 2.992406E-02 2.961996E-02 2.902001E-02 3.544964E-02 - 4.683473E-02 5.871729E-02 4.792355E-02 ->ZYXR ROT=ZROT // 43 - -2.673104E+01 -2.437548E+01 -2.247710E+01 -1.937616E+01 -1.743121E+01 - -1.488541E+01 -1.336801E+01 -1.148254E+01 -1.028542E+01 -8.261467E+00 - -7.742211E+00 -7.385800E+00 -6.521210E+00 -6.056391E+00 -5.762691E+00 - -5.372803E+00 -4.897901E+00 -4.577688E+00 -4.450802E+00 -4.124494E+00 - -3.950371E+00 -3.630519E+00 -3.499188E+00 -3.300381E+00 -3.054560E+00 - -2.806084E+00 -1.830659E+00 -1.366852E+00 -1.436783E+00 -1.268264E+00 - -1.074744E+00 -1.152840E+00 -8.856637E-01 -6.203642E-01 -5.541495E-01 - -4.716442E-01 -3.932091E-01 -3.796204E-01 -3.430900E-01 -3.341233E-01 - -3.113968E-01 -2.888011E-01 -2.308975E-01 ->ZYXI ROT=ZROT // 43 - -3.772503E+01 -3.176819E+01 -2.731167E+01 -2.470920E+01 -2.195282E+01 - -1.856008E+01 -1.663744E+01 -1.444762E+01 -1.274957E+01 -1.064118E+01 - -9.521249E+00 -8.104120E+00 -6.148107E+00 -4.864159E+00 -4.126664E+00 - -3.480527E+00 -3.184625E+00 -2.921310E+00 -2.483417E+00 -2.215657E+00 - -2.108011E+00 -1.955741E+00 -1.900541E+00 -1.814181E+00 -1.598664E+00 - -1.468645E+00 -1.268560E+00 -1.705076E+00 -1.413173E+00 -1.472043E+00 - -1.444477E+00 -1.208110E+00 -1.178650E+00 -9.594510E-01 -9.115669E-01 - -7.822669E-01 -6.395599E-01 -6.294978E-01 -5.620497E-01 -5.042642E-01 - -4.289672E-01 -3.673166E-01 -2.940898E-01 ->ZYX.VAR ROT=ZROT // 43 - 1.174647E-01 8.701126E-02 7.080968E-02 5.805517E-02 4.879923E-02 - 3.959555E-02 3.511146E-02 2.856225E-02 2.635993E-02 2.513617E-02 - 1.958737E-02 4.674437E-02 5.838363E-02 8.467352E-02 8.683971E-02 - 8.255843E-02 9.406047E-02 8.891995E-02 8.785808E-02 1.050857E-01 - 6.644729E-02 3.999820E-02 4.763032E-02 5.696324E-02 1.079313E-01 - 2.793586E-01 3.244252E-01 3.214180E-01 1.767735E-01 2.832282E-01 - 1.685632E-01 5.473688E-02 3.019069E-02 1.669007E-02 1.522508E-02 - 1.248260E-02 1.060683E-02 1.009973E-02 9.027374E-03 1.142392E-02 - 1.439354E-02 1.983825E-02 1.700697E-02 ->ZYYR ROT=ZROT // 43 - -9.853523E-02 -2.940684E-01 -3.936331E-01 8.302448E-03 2.741706E-02 - -2.508985E-01 -6.488562E-02 -1.515792E-01 -2.293690E-01 -3.476592E-01 - 6.388633E-02 -1.936678E-02 -8.849037E-01 -1.066243E+00 -9.180472E-01 - -5.653412E-01 -5.749565E-01 -4.787958E-01 -1.937294E-01 -2.707219E-02 - 1.297954E-01 1.371446E-01 1.909353E-01 2.986466E-01 3.529655E-01 - 2.130207E-01 3.252741E-01 9.355302E-02 4.106736E-01 2.878027E-01 - 2.339798E-01 4.779855E-01 3.808359E-01 2.808574E-01 2.785784E-01 - 2.330550E-01 1.712655E-01 1.745602E-01 1.405067E-01 1.501128E-01 - 1.637089E-01 1.155929E-01 9.920127E-02 ->ZYYI ROT=ZROT // 43 - 4.269247E-01 5.077434E-02 -2.617001E-01 8.053437E-02 1.375301E-01 - -2.059435E-02 -6.712435E-02 2.820259E-01 -1.474311E-01 5.923623E-01 - 7.678876E-01 1.131002E+00 7.270673E-01 5.923695E-01 3.126955E-01 - -4.605640E-02 -2.950162E-01 -3.691386E-01 -3.270628E-01 -3.400530E-01 - -3.010867E-01 -3.377203E-01 -4.638112E-01 -4.831509E-01 -4.584344E-01 - -2.606003E-01 1.291616E-01 1.823562E-01 2.483374E-01 2.728419E-01 - 3.553731E-01 1.515443E-01 1.020421E-01 1.669193E-01 1.208813E-01 - 1.456593E-01 1.350643E-01 1.586653E-01 1.533098E-01 1.462844E-01 - 1.471918E-01 1.366259E-01 1.271841E-01 ->ZYY.VAR ROT=ZROT // 43 - 1.782214E-01 1.346608E-01 1.107044E-01 9.010363E-02 7.571318E-02 - 6.053132E-02 5.316614E-02 4.569660E-02 4.324800E-02 4.428611E-02 - 3.623647E-02 8.487025E-02 9.999821E-02 1.382464E-01 1.301451E-01 - 1.165968E-01 1.337097E-01 1.157505E-01 1.028882E-01 1.198678E-01 - 8.863353E-02 6.858854E-02 1.018006E-01 1.196264E-01 1.575824E-01 - 3.204346E-01 3.347883E-01 3.389145E-01 2.105185E-01 3.795109E-01 - 2.950583E-01 9.724852E-02 6.242987E-02 2.692574E-02 2.624001E-02 - 1.826162E-02 1.435199E-02 1.379689E-02 1.330219E-02 1.637207E-02 - 2.061120E-02 2.820566E-02 1.941981E-02 - ->TXR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 - ->END diff --git a/examples/data/edi_files/pb40c_dr_1.edi b/examples/data/edi_files/pb40c_dr_1.edi deleted file mode 100644 index 8fa035a5..00000000 --- a/examples/data/edi_files/pb40c_dr_1.edi +++ /dev/null @@ -1,287 +0,0 @@ ->HEAD - ACQBY="Adelaide University" - ACQDATE="May 21, 2010" - DATAID=PB40 - ELEV=40.0 - LAT=-30:12:28.90 - LOC=PB40 - LONG=139:42:4.21 - PROSPECT= - FILEDATE="2015/12/23 21:13:10 UTC" - ->INFO - battery no: "33 Starting Voltage:12.64 End Voltage 12.37" - cache rate (hhmmss): 001000 - coherence threshold z channel (c2threshe1): None - coil calibration file: c:\BIRRP\BBConv.txt - data logger: 5440 - data logger gain: 1 - edifile_generated_with: MTpy - electric channel rotation angles (thetae): 0,90,180 - electric coherence threshold (c2threshe): 0 - final channel rotation angles (thetaf): 0,90,0 - first frequency extracted (nf1): 3 - frequency increment per window (nfinc): 1.0 - hard drive no: 5457 - instrument box no: 6 - interaction level (ilev): 1 - interface box gain: 1 - interface box no: 24 - large leverage point control (ainuin): 0.9999 - low and high periods for coherence threshold (perlo,perhi): 1000,0.001 - lower leverage point control (ainlin): 0.0001 - magnetic channel rotation angles (thetab): 0,90,0 - magnetic coherence threshold (c2thresheb): 0.45 - max length of fft window (nfft): 65536 - maximum number of fft sections (nsctmax): 12 - number of frequencies per window (nfsect): 3 - number of inputs (ninp): 2 - number of outputs (nout): 2 - number of periods to reject (nprej): 0 - number of remote reference time series (nref): 2 - order of prewhitening filter (nar): 5 - other notes: na - periods to reject (prej): [] - remote reference elev: 109 - remote reference lat: -30.436398 - remote reference long: 139.41805 - remote reference station: pbrt1 - remote reference(0) or bounded influence(1)(nrr): 1 - sampling frequency (hz): 500 - section increment divisor (nsctinc): 2 - slepian filter order (tbw): 2.0 - small leverage point control (uin): 0 - station: PB40 - z component (nz): 0 - z_unit: km/s - ->=DEFINEMEAS - MAXCHAN=6 - MAXMEAS=99999 - MAXRUN=999 - REFELEV=40.0 - REFLAT=-30:12:28.90 - REFLONG=139:42:4.21 - REFTYPY=CART - UNITS=M - ->HMEAS ID=1001.001 CHTYPE=HX X=0 Y=0 AZM=0 ->HMEAS ID=1002.001 CHTYPE=HY X=0 Y=0 AZM=90 ->EMEAS ID=1003.001 CHTYPE=EX X=0 Y=0 X2=1 Y2=0 ->EMEAS ID=1004.001 CHTYPE=EY X=0 Y=0 X2=0 Y2=1 ->HMEAS ID=1005.001 CHTYPE=RX X=0 Y=0 AZM=0 ->HMEAS ID=1006.001 CHTYPE=RY X=0 Y=0 AZM=90 - ->=MTSECT - EX=1003.001 - EY=1004.001 - HX=1001.001 - HY=1002.001 - NFREQ=43 - RX=1005.001 - RY=1006.001 - SECTID=pb40 - ->ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->FREQ // 43 - 7.812500E+01 6.250000E+01 4.687500E+01 3.906250E+01 3.125000E+01 - 2.343750E+01 1.953125E+01 1.562500E+01 1.171875E+01 9.765625E+00 - 7.812500E+00 6.250000E+00 4.687500E+00 3.906250E+00 3.125000E+00 - 2.343750E+00 1.953125E+00 1.562500E+00 1.171875E+00 9.765630E-01 - 7.812500E-01 5.859380E-01 4.882810E-01 3.906250E-01 2.929690E-01 - 2.441410E-01 1.953130E-01 1.464840E-01 1.220700E-01 9.765600E-02 - 7.324200E-02 6.103500E-02 4.882800E-02 3.662100E-02 3.051800E-02 - 2.441400E-02 1.831100E-02 1.525900E-02 1.220700E-02 9.155000E-03 - 7.629000E-03 6.104000E-03 4.578000E-03 ->ZXXR ROT=ZROT // 43 - -1.923913E-01 -7.630633E-02 -1.124961E-02 -9.968467E-02 -1.050884E-01 - -2.404849E-02 1.873508E-02 -8.514493E-02 3.803574E-02 -1.150843E-01 - -1.698844E-01 1.854499E-01 2.376271E-02 -8.211295E-02 -1.097979E-02 - 2.236737E-02 -8.501900E-02 -9.152006E-02 -1.122251E-01 -1.449237E-01 - -1.111448E-01 -1.179509E-01 -1.026520E-01 -9.950591E-02 -1.375828E-01 - -1.105359E-01 -1.709991E-01 -6.897905E-02 6.340719E-02 3.172906E-01 - 4.703217E-01 3.555619E-01 3.680593E-01 3.164014E-01 3.062569E-01 - 2.264163E-01 1.586529E-01 1.223581E-01 5.593263E-02 2.826872E-02 - -5.660223E-03 -9.264852E-02 -8.457920E-02 ->ZXXI ROT=ZROT // 43 - 3.266982E-02 4.257242E-02 1.324792E-01 8.204017E-02 7.552285E-02 - 1.286628E-01 1.003289E-02 5.981380E-02 1.279887E-03 1.096453E-01 - 3.516888E-03 -2.853959E-01 -2.473902E-01 -2.670811E-01 -2.149133E-01 - -1.433546E-01 -9.714490E-03 -3.405192E-02 -8.246179E-02 -1.365456E-02 - -1.784563E-02 -4.762901E-02 -1.018977E-01 -1.399350E-01 -8.255843E-02 - 3.003449E-02 -1.856765E-01 -7.113548E-01 -3.026843E-02 -1.322855E-01 - -1.579152E-01 -8.177798E-02 -2.393679E-02 1.726734E-01 2.146542E-01 - 1.989279E-01 2.334811E-01 2.665947E-01 2.850877E-01 2.482016E-01 - 2.077773E-01 1.678502E-01 1.319294E-01 ->ZXX.VAR ROT=ZROT // 43 - 2.601563E-01 1.960692E-01 1.581108E-01 1.303800E-01 1.078783E-01 - 8.459727E-02 7.537909E-02 6.004911E-02 5.157874E-02 4.805829E-02 - 3.760678E-02 6.021625E-02 6.875513E-02 9.471384E-02 9.602713E-02 - 9.124883E-02 1.042521E-01 1.011153E-01 1.030231E-01 1.289884E-01 - 8.219606E-02 5.193351E-02 6.761086E-02 8.422047E-02 1.707109E-01 - 4.815052E-01 5.774542E-01 5.737195E-01 2.683724E-01 4.779106E-01 - 2.833834E-01 8.448249E-02 5.188767E-02 2.932596E-02 2.918195E-02 - 2.236863E-02 2.101374E-02 2.045004E-02 2.127871E-02 2.381242E-02 - 3.274800E-02 4.406206E-02 4.409485E-02 ->ZXYR ROT=ZROT // 43 - 2.678137E+01 2.433949E+01 2.223998E+01 1.909671E+01 1.713341E+01 - 1.450053E+01 1.314528E+01 1.151261E+01 1.032177E+01 8.252023E+00 - 7.600336E+00 6.762098E+00 6.203841E+00 5.768204E+00 5.273858E+00 - 4.737356E+00 4.425233E+00 4.212898E+00 3.856935E+00 3.803805E+00 - 3.759459E+00 3.545945E+00 3.518870E+00 3.643801E+00 3.564679E+00 - 3.643156E+00 3.344828E+00 3.454899E+00 3.450498E+00 3.094835E+00 - 2.708345E+00 2.752086E+00 2.422515E+00 2.008941E+00 2.012165E+00 - 1.811055E+00 1.630198E+00 1.643422E+00 1.573216E+00 1.481532E+00 - 1.367063E+00 1.187461E+00 9.807578E-01 ->ZXYI ROT=ZROT // 43 - 3.790654E+01 3.233965E+01 2.778510E+01 2.492825E+01 2.199774E+01 - 1.843331E+01 1.662779E+01 1.453565E+01 1.272069E+01 1.088244E+01 - 9.622360E+00 7.625791E+00 5.757527E+00 4.577257E+00 4.069772E+00 - 3.465659E+00 2.945185E+00 2.547857E+00 2.026968E+00 1.642555E+00 - 1.391662E+00 1.085298E+00 8.311313E-01 7.127745E-01 6.477943E-01 - 9.638871E-01 7.181373E-01 1.022269E+00 9.087507E-01 1.193356E+00 - 1.281318E+00 1.232290E+00 1.450834E+00 1.372521E+00 1.370463E+00 - 1.340999E+00 1.285705E+00 1.305964E+00 1.255096E+00 1.189339E+00 - 1.099760E+00 1.034151E+00 7.834283E-01 ->ZXY.VAR ROT=ZROT // 43 - 4.249962E-01 3.274113E-01 2.669155E-01 2.150266E-01 1.775398E-01 - 1.377298E-01 1.205447E-01 1.015255E-01 8.897475E-02 8.802792E-02 - 7.161307E-02 1.144316E-01 1.277479E-01 1.678679E-01 1.557993E-01 - 1.386902E-01 1.583772E-01 1.409263E-01 1.264026E-01 1.559985E-01 - 1.157477E-01 9.335709E-02 1.559890E-01 1.909804E-01 2.641819E-01 - 5.529269E-01 5.922327E-01 6.299904E-01 3.387905E-01 6.876010E-01 - 5.279818E-01 1.741464E-01 1.131413E-01 5.283935E-02 5.263992E-02 - 3.913604E-02 3.288704E-02 3.261693E-02 3.184416E-02 3.840592E-02 - 5.000262E-02 6.187478E-02 5.022238E-02 ->ZYXR ROT=ZROT // 43 - -2.672718E+01 -2.437197E+01 -2.247387E+01 -1.937337E+01 -1.742869E+01 - -1.488327E+01 -1.336609E+01 -1.148088E+01 -1.028395E+01 -8.260268E+00 - -7.741081E+00 -7.384758E+00 -6.520275E+00 -6.055512E+00 -5.761862E+00 - -5.372033E+00 -4.897188E+00 -4.577021E+00 -4.450151E+00 -4.123886E+00 - -3.949791E+00 -3.629985E+00 -3.498674E+00 -3.299896E+00 -3.054107E+00 - -2.805669E+00 -1.830378E+00 -1.366648E+00 -1.436583E+00 -1.268115E+00 - -1.074638E+00 -1.152712E+00 -8.855746E-01 -6.203078E-01 -5.541016E-01 - -4.715999E-01 -3.931690E-01 -3.795785E-01 -3.430465E-01 -3.340782E-01 - -3.113514E-01 -2.887500E-01 -2.308555E-01 ->ZYXI ROT=ZROT // 43 - -3.771961E+01 -3.176363E+01 -2.730776E+01 -2.470566E+01 -2.194968E+01 - -1.855743E+01 -1.663505E+01 -1.444555E+01 -1.274774E+01 -1.063966E+01 - -9.519881E+00 -8.102926E+00 -6.147198E+00 -4.863433E+00 -4.126049E+00 - -3.480012E+00 -3.184167E+00 -2.920887E+00 -2.483052E+00 -2.215338E+00 - -2.107706E+00 -1.955455E+00 -1.900257E+00 -1.813905E+00 -1.598426E+00 - -1.468437E+00 -1.268358E+00 -1.704758E+00 -1.412966E+00 -1.471817E+00 - -1.444253E+00 -1.207928E+00 -1.178479E+00 -9.593310E-01 -9.114581E-01 - -7.821751E-01 -6.394922E-01 -6.294350E-01 -5.619985E-01 -5.042174E-01 - -4.289270E-01 -3.672812E-01 -2.940612E-01 ->ZYX.VAR ROT=ZROT // 43 - 2.129958E-01 1.580733E-01 1.273835E-01 1.034275E-01 8.582178E-02 - 6.770333E-02 5.855510E-02 4.687105E-02 4.175304E-02 3.743356E-02 - 2.953599E-02 6.017655E-02 7.039456E-02 9.717198E-02 9.826873E-02 - 9.250356E-02 1.036112E-01 9.757861E-02 9.602013E-02 1.132939E-01 - 7.266815E-02 4.449440E-02 5.238577E-02 6.192161E-02 1.141424E-01 - 2.883698E-01 3.318694E-01 3.304054E-01 1.813161E-01 2.897167E-01 - 1.736812E-01 5.730827E-02 3.193446E-02 1.775912E-02 1.620881E-02 - 1.323064E-02 1.119624E-02 1.067416E-02 9.531076E-03 1.193104E-02 - 1.488276E-02 2.035131E-02 1.739004E-02 ->ZYYR ROT=ZROT // 43 - -1.012965E-01 -2.965485E-01 -3.958813E-01 6.322233E-03 2.563756E-02 - -2.523652E-01 -6.623856E-02 -1.527504E-01 -2.304057E-01 -3.484643E-01 - 6.308951E-02 -2.006476E-02 -8.854194E-01 -1.066687E+00 -9.184618E-01 - -5.657508E-01 -5.753324E-01 -4.791636E-01 -1.941013E-01 -2.746249E-02 - 1.293871E-01 1.367574E-01 1.905432E-01 2.982260E-01 3.525453E-01 - 2.126125E-01 3.248807E-01 9.318154E-02 4.102570E-01 2.874406E-01 - 2.336655E-01 4.776316E-01 3.805301E-01 2.806088E-01 2.783298E-01 - 2.328338E-01 1.710719E-01 1.743648E-01 1.403234E-01 1.499377E-01 - 1.635437E-01 1.154532E-01 9.908537E-02 ->ZYYI ROT=ZROT // 43 - 4.229351E-01 4.741564E-02 -2.645419E-01 7.793945E-02 1.352307E-01 - -2.250166E-02 -6.883786E-02 2.804791E-01 -1.487281E-01 5.911494E-01 - 7.667800E-01 1.130049E+00 7.263661E-01 5.918100E-01 3.122288E-01 - -4.640893E-02 -2.952790E-01 -3.693496E-01 -3.272258E-01 -3.401744E-01 - -3.011876E-01 -3.377842E-01 -4.638307E-01 -4.831553E-01 -4.584356E-01 - -2.606628E-01 1.290686E-01 1.822241E-01 2.482076E-01 2.726790E-01 - 3.551892E-01 1.513948E-01 1.018771E-01 1.667531E-01 1.207219E-01 - 1.454994E-01 1.349117E-01 1.585072E-01 1.531577E-01 1.461401E-01 - 1.470567E-01 1.364991E-01 1.270847E-01 ->ZYY.VAR ROT=ZROT // 43 - 3.271741E-01 2.474168E-01 2.006701E-01 1.607964E-01 1.331204E-01 - 1.035676E-01 8.923959E-02 7.507412E-02 6.819621E-02 6.551306E-02 - 5.364522E-02 1.068397E-01 1.198963E-01 1.588128E-01 1.478914E-01 - 1.308323E-01 1.477127E-01 1.278277E-01 1.126836E-01 1.298570E-01 - 9.696239E-02 7.546047E-02 1.101729E-01 1.290341E-01 1.681403E-01 - 3.352401E-01 3.486438E-01 3.531087E-01 2.222894E-01 3.939855E-01 - 3.067794E-01 1.041920E-01 6.755489E-02 2.983257E-02 2.909218E-02 - 2.046586E-02 1.613172E-02 1.557261E-02 1.496132E-02 1.811123E-02 - 2.242580E-02 3.008471E-02 2.067616E-02 - ->TXR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 - ->END diff --git a/examples/data/edi_files/pb40c_dr_2.edi b/examples/data/edi_files/pb40c_dr_2.edi deleted file mode 100644 index d44a22d7..00000000 --- a/examples/data/edi_files/pb40c_dr_2.edi +++ /dev/null @@ -1,287 +0,0 @@ ->HEAD - ACQBY="Adelaide University" - ACQDATE="May 21, 2010" - DATAID=PB40 - ELEV=40.0 - LAT=-30:12:28.90 - LOC=PB40 - LONG=139:42:4.21 - PROSPECT= - FILEDATE="2015/12/23 22:09:06 UTC" - ->INFO - battery no: "33 Starting Voltage:12.64 End Voltage 12.37" - cache rate (hhmmss): 001000 - coherence threshold z channel (c2threshe1): None - coil calibration file: c:\BIRRP\BBConv.txt - data logger: 5440 - data logger gain: 1 - edifile_generated_with: MTpy - electric channel rotation angles (thetae): 0,90,180 - electric coherence threshold (c2threshe): 0 - final channel rotation angles (thetaf): 0,90,0 - first frequency extracted (nf1): 3 - frequency increment per window (nfinc): 1.0 - hard drive no: 5457 - instrument box no: 6 - interaction level (ilev): 1 - interface box gain: 1 - interface box no: 24 - large leverage point control (ainuin): 0.9999 - low and high periods for coherence threshold (perlo,perhi): 1000,0.001 - lower leverage point control (ainlin): 0.0001 - magnetic channel rotation angles (thetab): 0,90,0 - magnetic coherence threshold (c2thresheb): 0.45 - max length of fft window (nfft): 65536 - maximum number of fft sections (nsctmax): 12 - number of frequencies per window (nfsect): 3 - number of inputs (ninp): 2 - number of outputs (nout): 2 - number of periods to reject (nprej): 0 - number of remote reference time series (nref): 2 - order of prewhitening filter (nar): 5 - other notes: na - periods to reject (prej): [] - remote reference elev: 109 - remote reference lat: -30.436398 - remote reference long: 139.41805 - remote reference station: pbrt1 - remote reference(0) or bounded influence(1)(nrr): 1 - sampling frequency (hz): 500 - section increment divisor (nsctinc): 2 - slepian filter order (tbw): 2.0 - small leverage point control (uin): 0 - station: PB40 - z component (nz): 0 - z_unit: km/s - ->=DEFINEMEAS - MAXCHAN=6 - MAXMEAS=99999 - MAXRUN=999 - REFELEV=40.0 - REFLAT=-30:12:28.90 - REFLONG=139:42:4.21 - REFTYPY=CART - UNITS=M - ->HMEAS ID=1001.001 CHTYPE=HX X=0 Y=0 AZM=0 ->HMEAS ID=1002.001 CHTYPE=HY X=0 Y=0 AZM=90 ->EMEAS ID=1003.001 CHTYPE=EX X=0 Y=0 X2=1 Y2=0 ->EMEAS ID=1004.001 CHTYPE=EY X=0 Y=0 X2=0 Y2=1 ->HMEAS ID=1005.001 CHTYPE=RX X=0 Y=0 AZM=0 ->HMEAS ID=1006.001 CHTYPE=RY X=0 Y=0 AZM=90 - ->=MTSECT - EX=1003.001 - EY=1004.001 - HX=1001.001 - HY=1002.001 - NFREQ=43 - RX=1005.001 - RY=1006.001 - SECTID=pb40 - ->ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->FREQ // 43 - 7.812500E+01 6.250000E+01 4.687500E+01 3.906250E+01 3.125000E+01 - 2.343750E+01 1.953125E+01 1.562500E+01 1.171875E+01 9.765625E+00 - 7.812500E+00 6.250000E+00 4.687500E+00 3.906250E+00 3.125000E+00 - 2.343750E+00 1.953125E+00 1.562500E+00 1.171875E+00 9.765630E-01 - 7.812500E-01 5.859380E-01 4.882810E-01 3.906250E-01 2.929690E-01 - 2.441410E-01 1.953130E-01 1.464840E-01 1.220700E-01 9.765600E-02 - 7.324200E-02 6.103500E-02 4.882800E-02 3.662100E-02 3.051800E-02 - 2.441400E-02 1.831100E-02 1.525900E-02 1.220700E-02 9.155000E-03 - 7.629000E-03 6.104000E-03 4.578000E-03 ->ZXXR ROT=ZROT // 43 - -1.980382E-01 -8.154823E-02 -1.613848E-02 -1.038150E-01 -1.087898E-01 - -2.727063E-02 1.580373E-02 -8.756828E-02 3.575829E-02 -1.167776E-01 - -1.714133E-01 1.836668E-01 2.231907E-02 -8.335638E-02 -1.222563E-02 - 2.117536E-02 -8.600720E-02 -9.243239E-02 -1.130905E-01 -1.456874E-01 - -1.119021E-01 -1.186320E-01 -1.033189E-01 -1.001324E-01 -1.381201E-01 - -1.110443E-01 -1.712384E-01 -6.921257E-02 6.303480E-02 3.167179E-01 - 4.696482E-01 3.549786E-01 3.675225E-01 3.159706E-01 3.058501E-01 - 2.261021E-01 1.584191E-01 1.221610E-01 5.580561E-02 2.816949E-02 - -5.722812E-03 -9.262495E-02 -8.455054E-02 ->ZXXI ROT=ZROT // 43 - 2.441633E-02 3.560809E-02 1.264023E-01 7.657765E-02 7.066723E-02 - 1.244970E-01 6.397035E-03 5.660877E-02 -1.500352E-03 1.072234E-01 - 1.438242E-03 -2.868958E-01 -2.484993E-01 -2.678919E-01 -2.156121E-01 - -1.439793E-01 -1.039957E-02 -3.465688E-02 -8.292609E-02 -1.412476E-02 - -1.828845E-02 -4.801082E-02 -1.022168E-01 -1.401998E-01 -8.282979E-02 - 2.968632E-02 -1.857797E-01 -7.110621E-01 -3.054819E-02 -1.324828E-01 - -1.580826E-01 -8.196494E-02 -2.417135E-02 1.723030E-01 2.142551E-01 - 1.985716E-01 2.331236E-01 2.662085E-01 2.846989E-01 2.478599E-01 - 2.074897E-01 1.676134E-01 1.317421E-01 ->ZXX.VAR ROT=ZROT // 43 - 3.957202E-02 3.029724E-02 2.553498E-02 2.244479E-02 1.952055E-02 - 1.702951E-02 1.729798E-02 1.454463E-02 1.371630E-02 1.628708E-02 - 1.215745E-02 2.853805E-02 3.995834E-02 6.405944E-02 6.776720E-02 - 6.641549E-02 7.994250E-02 7.868017E-02 8.142697E-02 1.064116E-01 - 6.527411E-02 3.959470E-02 5.376800E-02 6.929693E-02 1.507749E-01 - 4.502352E-01 5.505878E-01 5.414892E-01 2.534163E-01 4.551008E-01 - 2.656937E-01 7.619938E-02 4.601724E-02 2.570487E-02 2.569532E-02 - 1.979736E-02 1.886778E-02 1.833706E-02 1.927026E-02 2.189084E-02 - 3.077915E-02 4.198889E-02 4.240181E-02 ->ZXYR ROT=ZROT // 43 - 2.675634E+01 2.431670E+01 2.221912E+01 1.907888E+01 1.711741E+01 - 1.448693E+01 1.313299E+01 1.150182E+01 1.031208E+01 8.244241E+00 - 7.593252E+00 6.755779E+00 6.197854E+00 5.762584E+00 5.268733E+00 - 4.732808E+00 4.420975E+00 4.208859E+00 3.853290E+00 3.800246E+00 - 3.755976E+00 3.542663E+00 3.515625E+00 3.640463E+00 3.561427E+00 - 3.639800E+00 3.341775E+00 3.451693E+00 3.447365E+00 3.092007E+00 - 2.705867E+00 2.749620E+00 2.420335E+00 2.007126E+00 2.010346E+00 - 1.809414E+00 1.628713E+00 1.641925E+00 1.571777E+00 1.480181E+00 - 1.365822E+00 1.186378E+00 9.798635E-01 ->ZXYI ROT=ZROT // 43 - 3.787123E+01 3.230946E+01 2.775909E+01 2.490499E+01 2.197722E+01 - 1.841610E+01 1.661225E+01 1.452214E+01 1.270878E+01 1.087241E+01 - 9.613541E+00 7.618916E+00 5.752308E+00 4.573111E+00 4.066039E+00 - 3.462412E+00 2.942370E+00 2.545397E+00 2.025004E+00 1.640947E+00 - 1.390297E+00 1.084211E+00 8.302540E-01 7.120035E-01 6.470894E-01 - 9.629301E-01 7.174947E-01 1.021354E+00 9.079562E-01 1.192301E+00 - 1.280198E+00 1.231172E+00 1.449502E+00 1.371275E+00 1.369210E+00 - 1.339778E+00 1.284534E+00 1.304779E+00 1.253957E+00 1.188260E+00 - 1.098765E+00 1.033215E+00 7.827243E-01 ->ZXY.VAR ROT=ZROT // 43 - 6.191717E-02 4.897042E-02 4.272284E-02 3.701575E-02 3.239236E-02 - 2.796469E-02 2.683550E-02 2.451271E-02 2.408283E-02 3.036125E-02 - 2.453299E-02 5.886445E-02 7.646816E-02 1.140680E-01 1.092076E-01 - 1.009295E-01 1.207285E-01 1.079619E-01 9.928739E-02 1.271563E-01 - 9.189714E-02 7.336145E-02 1.296351E-01 1.606256E-01 2.288407E-01 - 5.013930E-01 5.430779E-01 5.783183E-01 2.997515E-01 6.353842E-01 - 4.860827E-01 1.501926E-01 9.551683E-02 4.263954E-02 4.251891E-02 - 3.111058E-02 2.618736E-02 2.584499E-02 2.545496E-02 3.168782E-02 - 4.276638E-02 5.462907E-02 4.493645E-02 ->ZYXR ROT=ZROT // 43 - -2.674170E+01 -2.438515E+01 -2.248599E+01 -1.938387E+01 -1.743815E+01 - -1.489131E+01 -1.337328E+01 -1.148712E+01 -1.028947E+01 -8.264791E+00 - -7.745357E+00 -7.388626E+00 -6.523776E+00 -6.058826E+00 -5.764974E+00 - -5.374915E+00 -4.899880E+00 -4.579544E+00 -4.452618E+00 -4.126197E+00 - -3.951988E+00 -3.632013E+00 -3.500623E+00 -3.301736E+00 -3.055837E+00 - -2.807249E+00 -1.831469E+00 -1.367427E+00 -1.437319E+00 -1.268605E+00 - -1.074932E+00 -1.153117E+00 -8.858283E-01 -6.204499E-01 -5.542142E-01 - -4.717165E-01 -3.932845E-01 -3.797088E-01 -3.431974E-01 -3.342411E-01 - -3.115227E-01 -2.889619E-01 -2.310314E-01 ->ZYXI ROT=ZROT // 43 - -3.773992E+01 -3.178073E+01 -2.732240E+01 -2.471893E+01 -2.196146E+01 - -1.856735E+01 -1.664401E+01 -1.445330E+01 -1.275461E+01 -1.064533E+01 - -9.525011E+00 -8.107467E+00 -6.150662E+00 -4.866216E+00 -4.128404E+00 - -3.481975E+00 -3.185889E+00 -2.922482E+00 -2.484440E+00 -2.216540E+00 - -2.108853E+00 -1.956538E+00 -1.901343E+00 -1.814968E+00 -1.599337E+00 - -1.469211E+00 -1.269155E+00 -1.706109E+00 -1.413747E+00 -1.472691E+00 - -1.445127E+00 -1.208629E+00 -1.179128E+00 -9.597432E-01 -9.118190E-01 - -7.824758E-01 -6.396950E-01 -6.296123E-01 -5.621282E-01 -5.043384E-01 - -4.290320E-01 -3.673772E-01 -2.941396E-01 ->ZYX.VAR ROT=ZROT // 43 - 3.365089E-02 2.476863E-02 2.083443E-02 1.763297E-02 1.544767E-02 - 1.366688E-02 1.303281E-02 1.109005E-02 1.124913E-02 1.247447E-02 - 9.440066E-03 3.138739E-02 4.403086E-02 6.924767E-02 7.260497E-02 - 7.009202E-02 8.195443E-02 7.791690E-02 7.745798E-02 9.453114E-02 - 5.852267E-02 3.433325E-02 4.159266E-02 5.061849E-02 9.982886E-02 - 2.673581E-01 3.144056E-01 3.094046E-01 1.706923E-01 2.745055E-01 - 1.617445E-01 5.136091E-02 2.791756E-02 1.530266E-02 1.394838E-02 - 1.150901E-02 9.836949E-03 9.350075E-03 8.368859E-03 1.075564E-02 - 1.374213E-02 1.914887E-02 1.648832E-02 ->ZYYR ROT=ZROT // 43 - -8.507803E-02 -2.819191E-01 -3.825811E-01 1.792929E-02 3.606207E-02 - -2.436903E-01 -5.828686E-02 -1.458374E-01 -2.242581E-01 -3.436381E-01 - 6.774168E-02 -1.596675E-02 -8.821271E-01 -1.063757E+00 -9.157524E-01 - -5.631773E-01 -5.729537E-01 -4.768620E-01 -1.918624E-01 -2.516601E-02 - 1.317412E-01 1.389857E-01 1.927841E-01 3.006008E-01 3.549013E-01 - 2.149408E-01 3.270882E-01 9.533105E-02 4.125748E-01 2.894760E-01 - 2.354372E-01 4.795613E-01 3.822072E-01 2.819808E-01 2.797025E-01 - 2.340598E-01 1.721547E-01 1.754573E-01 1.413550E-01 1.509187E-01 - 1.644625E-01 1.162370E-01 9.973472E-02 ->ZYYI ROT=ZROT // 43 - 4.461960E-01 6.709159E-02 -2.478016E-01 9.312850E-02 1.486699E-01 - -1.131324E-02 -5.877150E-02 2.894625E-01 -1.410789E-01 5.980805E-01 - 7.730402E-01 1.135292E+00 7.302561E-01 5.949103E-01 3.148701E-01 - -4.432812E-02 -2.936486E-01 -3.680005E-01 -3.261706E-01 -3.393597E-01 - -3.005044E-01 -3.373068E-01 -4.635757E-01 -4.829827E-01 -4.582891E-01 - -2.602176E-01 1.295745E-01 1.829435E-01 2.488935E-01 2.735511E-01 - 3.561592E-01 1.522252E-01 1.028136E-01 1.676769E-01 1.216197E-01 - 1.463927E-01 1.357656E-01 1.593862E-01 1.540029E-01 1.469416E-01 - 1.478042E-01 1.372011E-01 1.276292E-01 ->ZYY.VAR ROT=ZROT // 43 - 4.936590E-02 3.721142E-02 3.203140E-02 2.742177E-02 2.415818E-02 - 2.099715E-02 1.950126E-02 1.778784E-02 1.876761E-02 2.240192E-02 - 1.829641E-02 5.946060E-02 7.622644E-02 1.129797E-01 1.081917E-01 - 9.884630E-02 1.160711E-01 1.005330E-01 9.047977E-02 1.071193E-01 - 7.807068E-02 5.990399E-02 9.109793E-02 1.075700E-01 1.439467E-01 - 3.010328E-01 3.165550E-01 3.202391E-01 1.952047E-01 3.604059E-01 - 2.796096E-01 8.830232E-02 5.587180E-02 2.326348E-02 2.264804E-02 - 1.550480E-02 1.213007E-02 1.158583E-02 1.123145E-02 1.417737E-02 - 1.829488E-02 2.577457E-02 1.779042E-02 - ->TXR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 - ->END diff --git a/examples/data/edi_files/pb40c_dr_3.edi b/examples/data/edi_files/pb40c_dr_3.edi deleted file mode 100644 index 0f6a7b4e..00000000 --- a/examples/data/edi_files/pb40c_dr_3.edi +++ /dev/null @@ -1,287 +0,0 @@ ->HEAD - ACQBY="Adelaide University" - ACQDATE="May 21, 2010" - DATAID=PB40 - ELEV=40.0 - LAT=-30:12:28.90 - LOC=PB40 - LONG=139:42:4.21 - PROSPECT= - FILEDATE="2015/12/23 22:26:25 UTC" - ->INFO - battery no: "33 Starting Voltage:12.64 End Voltage 12.37" - cache rate (hhmmss): 001000 - coherence threshold z channel (c2threshe1): None - coil calibration file: c:\BIRRP\BBConv.txt - data logger: 5440 - data logger gain: 1 - edifile_generated_with: MTpy - electric channel rotation angles (thetae): 0,90,180 - electric coherence threshold (c2threshe): 0 - final channel rotation angles (thetaf): 0,90,0 - first frequency extracted (nf1): 3 - frequency increment per window (nfinc): 1.0 - hard drive no: 5457 - instrument box no: 6 - interaction level (ilev): 1 - interface box gain: 1 - interface box no: 24 - large leverage point control (ainuin): 0.9999 - low and high periods for coherence threshold (perlo,perhi): 1000,0.001 - lower leverage point control (ainlin): 0.0001 - magnetic channel rotation angles (thetab): 0,90,0 - magnetic coherence threshold (c2thresheb): 0.45 - max length of fft window (nfft): 65536 - maximum number of fft sections (nsctmax): 12 - number of frequencies per window (nfsect): 3 - number of inputs (ninp): 2 - number of outputs (nout): 2 - number of periods to reject (nprej): 0 - number of remote reference time series (nref): 2 - order of prewhitening filter (nar): 5 - other notes: na - periods to reject (prej): [] - remote reference elev: 109 - remote reference lat: -30.436398 - remote reference long: 139.41805 - remote reference station: pbrt1 - remote reference(0) or bounded influence(1)(nrr): 1 - sampling frequency (hz): 500 - section increment divisor (nsctinc): 2 - slepian filter order (tbw): 2.0 - small leverage point control (uin): 0 - station: PB40 - z component (nz): 0 - z_unit: km/s - ->=DEFINEMEAS - MAXCHAN=6 - MAXMEAS=99999 - MAXRUN=999 - REFELEV=40.0 - REFLAT=-30:12:28.90 - REFLONG=139:42:4.21 - REFTYPY=CART - UNITS=M - ->HMEAS ID=1001.001 CHTYPE=HX X=0 Y=0 AZM=0 ->HMEAS ID=1002.001 CHTYPE=HY X=0 Y=0 AZM=90 ->EMEAS ID=1003.001 CHTYPE=EX X=0 Y=0 X2=1 Y2=0 ->EMEAS ID=1004.001 CHTYPE=EY X=0 Y=0 X2=0 Y2=1 ->HMEAS ID=1005.001 CHTYPE=RX X=0 Y=0 AZM=0 ->HMEAS ID=1006.001 CHTYPE=RY X=0 Y=0 AZM=90 - ->=MTSECT - EX=1003.001 - EY=1004.001 - HX=1001.001 - HY=1002.001 - NFREQ=43 - RX=1005.001 - RY=1006.001 - SECTID=pb40 - ->ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->FREQ // 43 - 7.812500E+01 6.250000E+01 4.687500E+01 3.906250E+01 3.125000E+01 - 2.343750E+01 1.953125E+01 1.562500E+01 1.171875E+01 9.765625E+00 - 7.812500E+00 6.250000E+00 4.687500E+00 3.906250E+00 3.125000E+00 - 2.343750E+00 1.953125E+00 1.562500E+00 1.171875E+00 9.765630E-01 - 7.812500E-01 5.859380E-01 4.882810E-01 3.906250E-01 2.929690E-01 - 2.441410E-01 1.953130E-01 1.464840E-01 1.220700E-01 9.765600E-02 - 7.324200E-02 6.103500E-02 4.882800E-02 3.662100E-02 3.051800E-02 - 2.441400E-02 1.831100E-02 1.525900E-02 1.220700E-02 9.155000E-03 - 7.629000E-03 6.104000E-03 4.578000E-03 ->ZXXR ROT=ZROT // 43 - -1.980382E-01 -8.154823E-02 -1.613848E-02 -1.038150E-01 -1.087898E-01 - -2.727063E-02 1.580373E-02 -8.756828E-02 3.575829E-02 -1.167776E-01 - -1.714133E-01 1.836668E-01 2.231907E-02 -8.335638E-02 -1.222563E-02 - 2.117536E-02 -8.600720E-02 -9.243239E-02 -1.130905E-01 -1.456874E-01 - -1.119021E-01 -1.186320E-01 -1.033189E-01 -1.001324E-01 -1.381201E-01 - -1.110443E-01 -1.712384E-01 -6.921257E-02 6.303480E-02 3.167179E-01 - 4.696482E-01 3.549786E-01 3.675225E-01 3.159706E-01 3.058501E-01 - 2.261021E-01 1.584191E-01 1.221610E-01 5.580561E-02 2.816949E-02 - -5.722812E-03 -9.262495E-02 -8.455054E-02 ->ZXXI ROT=ZROT // 43 - 2.441633E-02 3.560809E-02 1.264023E-01 7.657765E-02 7.066723E-02 - 1.244970E-01 6.397035E-03 5.660877E-02 -1.500352E-03 1.072234E-01 - 1.438242E-03 -2.868958E-01 -2.484993E-01 -2.678919E-01 -2.156121E-01 - -1.439793E-01 -1.039957E-02 -3.465688E-02 -8.292609E-02 -1.412476E-02 - -1.828845E-02 -4.801082E-02 -1.022168E-01 -1.401998E-01 -8.282979E-02 - 2.968632E-02 -1.857797E-01 -7.110621E-01 -3.054819E-02 -1.324828E-01 - -1.580826E-01 -8.196494E-02 -2.417135E-02 1.723030E-01 2.142551E-01 - 1.985716E-01 2.331236E-01 2.662085E-01 2.846989E-01 2.478599E-01 - 2.074897E-01 1.676134E-01 1.317421E-01 ->ZXX.VAR ROT=ZROT // 43 - 3.957202E-02 3.029724E-02 2.553498E-02 2.244479E-02 1.952055E-02 - 1.702951E-02 1.729798E-02 1.454463E-02 1.371630E-02 1.628708E-02 - 1.215745E-02 2.853805E-02 3.995834E-02 6.405944E-02 6.776720E-02 - 6.641549E-02 7.994250E-02 7.868017E-02 8.142697E-02 1.064116E-01 - 6.527411E-02 3.959470E-02 5.376800E-02 6.929693E-02 1.507749E-01 - 4.502352E-01 5.505878E-01 5.414892E-01 2.534163E-01 4.551008E-01 - 2.656937E-01 7.619938E-02 4.601724E-02 2.570487E-02 2.569532E-02 - 1.979736E-02 1.886778E-02 1.833706E-02 1.927026E-02 2.189084E-02 - 3.077915E-02 4.198889E-02 4.240181E-02 ->ZXYR ROT=ZROT // 43 - 2.675634E+01 2.431670E+01 2.221912E+01 1.907888E+01 1.711741E+01 - 1.448693E+01 1.313299E+01 1.150182E+01 1.031208E+01 8.244241E+00 - 7.593252E+00 6.755779E+00 6.197854E+00 5.762584E+00 5.268733E+00 - 4.732808E+00 4.420975E+00 4.208859E+00 3.853290E+00 3.800246E+00 - 3.755976E+00 3.542663E+00 3.515625E+00 3.640463E+00 3.561427E+00 - 3.639800E+00 3.341775E+00 3.451693E+00 3.447365E+00 3.092007E+00 - 2.705867E+00 2.749620E+00 2.420335E+00 2.007126E+00 2.010346E+00 - 1.809414E+00 1.628713E+00 1.641925E+00 1.571777E+00 1.480181E+00 - 1.365822E+00 1.186378E+00 9.798635E-01 ->ZXYI ROT=ZROT // 43 - 3.787123E+01 3.230946E+01 2.775909E+01 2.490499E+01 2.197722E+01 - 1.841610E+01 1.661225E+01 1.452214E+01 1.270878E+01 1.087241E+01 - 9.613541E+00 7.618916E+00 5.752308E+00 4.573111E+00 4.066039E+00 - 3.462412E+00 2.942370E+00 2.545397E+00 2.025004E+00 1.640947E+00 - 1.390297E+00 1.084211E+00 8.302540E-01 7.120035E-01 6.470894E-01 - 9.629301E-01 7.174947E-01 1.021354E+00 9.079562E-01 1.192301E+00 - 1.280198E+00 1.231172E+00 1.449502E+00 1.371275E+00 1.369210E+00 - 1.339778E+00 1.284534E+00 1.304779E+00 1.253957E+00 1.188260E+00 - 1.098765E+00 1.033215E+00 7.827243E-01 ->ZXY.VAR ROT=ZROT // 43 - 6.191717E-02 4.897042E-02 4.272284E-02 3.701575E-02 3.239236E-02 - 2.796469E-02 2.683550E-02 2.451271E-02 2.408283E-02 3.036125E-02 - 2.453299E-02 5.886445E-02 7.646816E-02 1.140680E-01 1.092076E-01 - 1.009295E-01 1.207285E-01 1.079619E-01 9.928739E-02 1.271563E-01 - 9.189714E-02 7.336145E-02 1.296351E-01 1.606256E-01 2.288407E-01 - 5.013930E-01 5.430779E-01 5.783183E-01 2.997515E-01 6.353842E-01 - 4.860827E-01 1.501926E-01 9.551683E-02 4.263954E-02 4.251891E-02 - 3.111058E-02 2.618736E-02 2.584499E-02 2.545496E-02 3.168782E-02 - 4.276638E-02 5.462907E-02 4.493645E-02 ->ZYXR ROT=ZROT // 43 - -2.674170E+01 -2.438515E+01 -2.248599E+01 -1.938387E+01 -1.743815E+01 - -1.489131E+01 -1.337328E+01 -1.148712E+01 -1.028947E+01 -8.264791E+00 - -7.745357E+00 -7.388626E+00 -6.523776E+00 -6.058826E+00 -5.764974E+00 - -5.374915E+00 -4.899880E+00 -4.579544E+00 -4.452618E+00 -4.126197E+00 - -3.951988E+00 -3.632013E+00 -3.500623E+00 -3.301736E+00 -3.055837E+00 - -2.807249E+00 -1.831469E+00 -1.367427E+00 -1.437319E+00 -1.268605E+00 - -1.074932E+00 -1.153117E+00 -8.858283E-01 -6.204499E-01 -5.542142E-01 - -4.717165E-01 -3.932845E-01 -3.797088E-01 -3.431974E-01 -3.342411E-01 - -3.115227E-01 -2.889619E-01 -2.310314E-01 ->ZYXI ROT=ZROT // 43 - -3.773992E+01 -3.178073E+01 -2.732240E+01 -2.471893E+01 -2.196146E+01 - -1.856735E+01 -1.664401E+01 -1.445330E+01 -1.275461E+01 -1.064533E+01 - -9.525011E+00 -8.107467E+00 -6.150662E+00 -4.866216E+00 -4.128404E+00 - -3.481975E+00 -3.185889E+00 -2.922482E+00 -2.484440E+00 -2.216540E+00 - -2.108853E+00 -1.956538E+00 -1.901343E+00 -1.814968E+00 -1.599337E+00 - -1.469211E+00 -1.269155E+00 -1.706109E+00 -1.413747E+00 -1.472691E+00 - -1.445127E+00 -1.208629E+00 -1.179128E+00 -9.597432E-01 -9.118190E-01 - -7.824758E-01 -6.396950E-01 -6.296123E-01 -5.621282E-01 -5.043384E-01 - -4.290320E-01 -3.673772E-01 -2.941396E-01 ->ZYX.VAR ROT=ZROT // 43 - 3.365089E-02 2.476863E-02 2.083443E-02 1.763297E-02 1.544767E-02 - 1.366688E-02 1.303281E-02 1.109005E-02 1.124913E-02 1.247447E-02 - 9.440066E-03 3.138739E-02 4.403086E-02 6.924767E-02 7.260497E-02 - 7.009202E-02 8.195443E-02 7.791690E-02 7.745798E-02 9.453114E-02 - 5.852267E-02 3.433325E-02 4.159266E-02 5.061849E-02 9.982886E-02 - 2.673581E-01 3.144056E-01 3.094046E-01 1.706923E-01 2.745055E-01 - 1.617445E-01 5.136091E-02 2.791756E-02 1.530266E-02 1.394838E-02 - 1.150901E-02 9.836949E-03 9.350075E-03 8.368859E-03 1.075564E-02 - 1.374213E-02 1.914887E-02 1.648832E-02 ->ZYYR ROT=ZROT // 43 - -8.507803E-02 -2.819191E-01 -3.825811E-01 1.792929E-02 3.606207E-02 - -2.436903E-01 -5.828686E-02 -1.458374E-01 -2.242581E-01 -3.436381E-01 - 6.774168E-02 -1.596675E-02 -8.821271E-01 -1.063757E+00 -9.157524E-01 - -5.631773E-01 -5.729537E-01 -4.768620E-01 -1.918624E-01 -2.516601E-02 - 1.317412E-01 1.389857E-01 1.927841E-01 3.006008E-01 3.549013E-01 - 2.149408E-01 3.270882E-01 9.533105E-02 4.125748E-01 2.894760E-01 - 2.354372E-01 4.795613E-01 3.822072E-01 2.819808E-01 2.797025E-01 - 2.340598E-01 1.721547E-01 1.754573E-01 1.413550E-01 1.509187E-01 - 1.644625E-01 1.162370E-01 9.973472E-02 ->ZYYI ROT=ZROT // 43 - 4.461960E-01 6.709159E-02 -2.478016E-01 9.312850E-02 1.486699E-01 - -1.131324E-02 -5.877150E-02 2.894625E-01 -1.410789E-01 5.980805E-01 - 7.730402E-01 1.135292E+00 7.302561E-01 5.949103E-01 3.148701E-01 - -4.432812E-02 -2.936486E-01 -3.680005E-01 -3.261706E-01 -3.393597E-01 - -3.005044E-01 -3.373068E-01 -4.635757E-01 -4.829827E-01 -4.582891E-01 - -2.602176E-01 1.295745E-01 1.829435E-01 2.488935E-01 2.735511E-01 - 3.561592E-01 1.522252E-01 1.028136E-01 1.676769E-01 1.216197E-01 - 1.463927E-01 1.357656E-01 1.593862E-01 1.540029E-01 1.469416E-01 - 1.478042E-01 1.372011E-01 1.276292E-01 ->ZYY.VAR ROT=ZROT // 43 - 4.936590E-02 3.721142E-02 3.203140E-02 2.742177E-02 2.415818E-02 - 2.099715E-02 1.950126E-02 1.778784E-02 1.876761E-02 2.240192E-02 - 1.829641E-02 5.946060E-02 7.622644E-02 1.129797E-01 1.081917E-01 - 9.884630E-02 1.160711E-01 1.005330E-01 9.047977E-02 1.071193E-01 - 7.807068E-02 5.990399E-02 9.109793E-02 1.075700E-01 1.439467E-01 - 3.010328E-01 3.165550E-01 3.202391E-01 1.952047E-01 3.604059E-01 - 2.796096E-01 8.830232E-02 5.587180E-02 2.326348E-02 2.264804E-02 - 1.550480E-02 1.213007E-02 1.158583E-02 1.123145E-02 1.417737E-02 - 1.829488E-02 2.577457E-02 1.779042E-02 - ->TXR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TXVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYI.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 ->TYVAR.EXP ROT=ZROT // 43 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 - 0.000000E+00 0.000000E+00 0.000000E+00 - ->END diff --git a/mtpy/core/z.py b/mtpy/core/z.py index 2979f6cf..e7c4364c 100644 --- a/mtpy/core/z.py +++ b/mtpy/core/z.py @@ -9,8 +9,8 @@ --------- * Z --> deals with impedance tesnsor. * Tipper --> deals with Tipper matrix. - - + + LK, JP 2013 """ @@ -22,47 +22,41 @@ import mtpy.utils.calculator as MTcc import mtpy.utils.exceptions as MTex -reload(MTcc) - #================================================================= #------------------------ class Z(object): """ - Z class - generates an impedance tensor (Z-) object. + Z class - generates an impedance tensor (Z) object. - Methods include rotations/combinations of Z instances, as well as - calculation of invariants, inverse, amplitude/phase,... - Calculation of invariants, inverse, amplitude/phase,... + Z is a complex array of the form (n_freq, 2, 2), + with indices in the following order: - - Z is a complex array of the form (n_freq, 2, 2), - with indices in the following order: - - - Zxx: (0,0) + - Zxx: (0,0) - Zxy: (0,1) - - Zyx: (1,0) - - Zyy: (1,1) + - Zyx: (1,0) + - Zyy: (1,1) All errors are given as standard deviations (sqrt(VAR)) - + Arguments - + ------------ + **z_array** : numpy.ndarray(n_freq, 2, 2) array containing complex impedance values - + **z_err_array** : numpy.ndarray(n_freq, 2, 2) - array containing error values (standard deviation) - of impedance tensor elements + array containing error values (standard deviation) + of impedance tensor elements **freq** : np.ndarray(n_freq) array of frequency values corresponding to impedance tensor elements. - + =============== =========================================================== Attributes Description =============== =========================================================== - freq array of frequencies corresponding to elements of z + freq array of frequencies corresponding to elements of z rotation_angle angle of which data is rotated by z impedance tensor z_err estimated errors of impedance tensor @@ -71,7 +65,7 @@ class Z(object): phase impedance phase (deg) phase_err error in impedance phase =============== =========================================================== - + =================== ======================================================= Methods Description =================== ======================================================= @@ -79,24 +73,24 @@ class Z(object): invariants calculates the invariants of z inverse calculates the inverse of z no_distortion removes distortion given a distortion matrix - no_ss removes static shift by assumin Z = S * Z_0 + no_ss removes static shift by assumin Z = S * Z_0 no_ss_no_distortion not implemented yet norm calculates the norm of Z - only1d zeros diagonal components and computes - the absolute valued mean of the off-diagonal + only1d zeros diagonal components and computes + the absolute valued mean of the off-diagonal components. - only2d zeros diagonal components - res_phase computes resistivity and phase + only2d zeros diagonal components + res_phase computes resistivity and phase rotate rotates z positive clockwise, angle assumes North is 0. set_res_phase recalculates z and z_err, needs attribute freq skew calculates the invariant skew (off diagonal trace) trace calculates the trace of z =================== ======================================================= - + Example ----------- - + >>> import mtpy.core.z as mtz >>> import numpy as np >>> z_test = np.array([[0+0j, 1+1j], [-1-1j, 0+0j]]) @@ -112,45 +106,45 @@ def __init__(self, z_array=None, z_err_array=None, freq=None): Initialise an instance of the Z class. Arguments - + **z_array** : numpy.ndarray(n_freq, 2, 2) array containing complex impedance values - + **z_err_array** : numpy.ndarray(n_freq, 2, 2) - array containing error values (standard deviation) - of impedance tensor elements - + array containing error values (standard deviation) + of impedance tensor elements + **freq** : np.ndarray(n_freq) array of frequency values corresponding to impedance tensor elements. Initialises the attributes with None - """ + """ self._z = z_array self._z_err = z_err_array self._freq = freq if z_array is not None: - if len(z_array.shape) == 2 and z_array.shape == (2,2): - if z_array.dtype in ['complex', 'float','int']: + if len(z_array.shape) == 2 and z_array.shape == (2, 2): + if z_array.dtype in ['complex', 'float', 'int']: self._z = np.zeros((1, 2, 2), 'complex') - self._z[0] = z_array + self._z[0] = z_array if z_err_array is not None: - if len(z_err_array.shape) == 2 and z_err_array.shape == (2,2): - if z_err_array.dtype in ['complex', 'float','int']: + if len(z_err_array.shape) == 2 and z_err_array.shape == (2, 2): + if z_err_array.dtype in ['complex', 'float', 'int']: self._z_err = np.zeros((1, 2, 2), 'complex') - self._z_err[0] = z_err_array + self._z_err[0] = z_err_array self.rotation_angle = 0. if self._z is not None: self.rotation_angle = np.zeros((len(self._z))) - + #make attributes for resistivity and phase - self._resistivity= None + self._resistivity = None self._resistivity_err = None - + self._phase = None self._phase_err = None if self._freq is not None: @@ -164,25 +158,25 @@ def _set_freq(self, lo_freq): Arguments ------------- - + **lo_freq** : list or array of frequnecies (Hz) No test for consistency! """ if not np.iterable(lo_freq): - lo_freq= np.array([lo_freq]) + lo_freq = np.array([lo_freq]) if self.z is not None: if len(self.z.shape) == 3: if len(lo_freq) is not len(self.z): print ('length of freq list/array not correct' - '({0} instead of {1})'.format(len(lo_freq), + '({0} instead of {1})'.format(len(lo_freq), len(self.z))) return - + self._freq = np.array(lo_freq) - + #for consistency recalculate resistivity and phase if self._z is not None: try: @@ -191,13 +185,13 @@ def _set_freq(self, lo_freq): print 'Need to input frequency array' def _get_freq(self): - if self._freq is None: - return None - else: - return np.array(self._freq) - + if self._freq is None: + return None + else: + return np.array(self._freq) + freq = property(_get_freq, _set_freq, doc='array of frequencies in Hz') - + #----impedance tensor ----------------------------------------------------- def _set_z(self, z_array): """ @@ -205,35 +199,35 @@ def _set_z(self, z_array): Arguments ------------- - - **z_array** : np.ndarray(nfreq, 2, 2) + + **z_array** : np.ndarray(nfreq, 2, 2) complex impedance tensor array Test for shape, but no test for consistency! Nulling the rotation_angle - """ + """ try: - if len(z_array.shape) == 3 and z_array.shape[1:3] == (2,2): + if len(z_array.shape) == 3 and z_array.shape[1:3] == (2, 2): if z_array.dtype in ['complex', 'float', 'int']: self._z = z_array - except: + except IndexError: try: - if len(z_array.shape) == 2 and z_array.shape == (2,2): - if z_array.dtype in ['complex', 'float','int']: - self._z = np.zeros((1,2,2),'complex') - self._z[0] = z_array - except: + if len(z_array.shape) == 2 and z_array.shape == (2, 2): + if z_array.dtype in ['complex', 'float', 'int']: + self._z = np.zeros((1, 2, 2), 'complex') + self._z[0] = z_array + except IndexError: print ('provided Z array does not have correct dimensions' '- Z unchanged') - + if type(self.rotation_angle) is float: - self.rotation_angle = np.array([self.rotation_angle - for ii in self._z]) - + self.rotation_angle = np.repeat(self.rotation_angle, + len(self._z)) + #for consistency recalculate resistivity and phase if self._z is not None: try: @@ -241,10 +235,10 @@ def _set_z(self, z_array): except IndexError: print 'Need to input frequency array' - + def _get_z(self): return self._z - + z = property(_get_z, _set_z, doc="impedance tensor") #----impedance error----------------------------------------------------- @@ -254,29 +248,29 @@ def _set_z_err(self, z_err_array): Arguments ------------ - - **z_err_array** : np.ndarray(nfreq, 2, 2) + + **z_err_array** : np.ndarray(nfreq, 2, 2) error of impedance tensor array as standard deviation Test for shape, but no test for consistency! - """ - if z_err_array.shape!=self.z.shape: + """ + if z_err_array.shape != self.z.shape: print 'z_err_array shape {0} is not same shape as z {1}'.format( z_err_array.shape, - self.z.shape) + self.z.shape) self._z_err = z_err_array - + #for consistency recalculate resistivity and phase if self._z_err is not None and self._z is not None: try: self._compute_res_phase() except IndexError: print 'Need to input frequency array' - + def _get_z_err(self): return self._z_err - + z_err = property(_get_z_err, _set_z_err, doc='impedance tensor error') @@ -284,7 +278,7 @@ def _get_z_err(self): def _get_real(self): """ Return the real part of Z. - """ + """ if self.z is None: print 'z array is None - cannot calculate real' @@ -292,20 +286,20 @@ def _get_real(self): return np.real(self.z) - + def _set_real(self, real_array): """ Set the real part of 'z'. Arguments ------------- - - **real_array** : np.ndarray(nfreq, 2, 2) + + **real_array** : np.ndarray(nfreq, 2, 2) real part of impedance tensor array Test for shape, but no test for consistency! - """ + """ if (self.z is not None) and (self.z.shape != real_array.shape): print 'shape of "real" array does not match shape of'+\ @@ -313,20 +307,20 @@ def _set_real(self, real_array): return #assert real array: - if np.linalg.norm(np.imag(real_array )) != 0 : + if np.linalg.norm(np.imag(real_array)) != 0: print 'Error - array "real" is not real valued !' return - i = np.complex(0,1) + ii_arr = np.complex(0, 1) if self.z is not None: - z_new = real_array + i * self.imag() + z_new = real_array+ii_arr*self.imag() else: - z_new = real_array - + z_new = real_array + self.z = z_new - + #for consistency recalculate resistivity and phase self._compute_res_phase() @@ -345,41 +339,41 @@ def _get_imag(self): return np.imag(self.z) - + def _set_imag(self, imag_array): """ Set the imaginary part of 'z'. Arguments ------------- - - **imag_array** : np.ndarray(nfreq, 2, 2) + + **imag_array** : np.ndarray(nfreq, 2, 2) imaginary part of impedance tensor array Test for shape, but no test for consistency! - """ + """ if (self.z is not None) and (self.z.shape != imag_array.shape): print 'Error - shape of "imag" array does not match shape of'+\ 'Z array: {0} ; {1}'.format(imag_array.shape, self.z.shape) return - + #assert real array: - if np.linalg.norm(np.imag(imag_array )) != 0 : + if np.linalg.norm(np.imag(imag_array)) != 0: print 'Error - array "imag" is not real valued !' return - i = np.complex(0,1) - + i_arr = np.complex(0, 1) + if self.z is not None: - z_new = self.real() + i * imag_array + z_new = self.real()+i_arr*imag_array else: - z_new = i * imag_array + z_new = i_arr*imag_array self.z = z_new - + #for consistency recalculate resistivity and phase self._compute_res_phase() @@ -392,20 +386,20 @@ def _compute_res_phase(self): * resistivity * phase * resistivity_err - * phase_err* - - values for resistivity are in in Ohm m and phase in degrees. + * phase_err + + values for resistivity are in in Ohm-m and phase in degrees. - """ + """ if self.freq is None: print 'Need to input frequency list' return - + if self.z is None: print 'Z array is None - cannot calculate Res/Phase' - return - - + return + + self._resistivity_err = None self._phase_err = None @@ -416,61 +410,76 @@ def _compute_res_phase(self): self._resistivity = np.zeros_like(self.z, dtype='float') self._phase = np.zeros_like(self.z, dtype='float') + #calculate resistivity and phase - for idx_f in range(len(self.z)): - for i in range(2): - for j in range(2): - self._resistivity[idx_f,i,j] = np.abs(self.z[idx_f,i,j])**2/\ + for idx_f in range(len(self.z)): + for ii in range(2): + for jj in range(2): + self._resistivity[idx_f, ii, jj] = np.abs(self.z[idx_f, ii, jj])**2/\ self.freq[idx_f]*0.2 - self._phase[idx_f,i,j] = math.degrees(cmath.phase( - self.z[idx_f,i,j])) - - if self.z_err is not None: - - r_err, phi_err = MTcc.z_error2r_phi_error( - np.real(self.z[idx_f,i,j]), - self.z_err[idx_f,i,j], - np.imag(self.z[idx_f,i,j]), - self.z_err[idx_f,i,j]) - - - - self._resistivity_err[idx_f,i,j] = \ - 0.4*np.abs(self.z[idx_f,i,j])/\ - self.freq[idx_f]*r_err - self._phase_err[idx_f,i,j] = phi_err - - - def _get_resistivity(self): return self._resistivity - def _get_resistivity_err(self): return self._resistivity_err - def _get_phase(self): return self._phase - def _get_phase_err(self): return self._phase_err - def _set_resistivity(self, *kwargs): print "cannot be set individually - use method 'set_res_phase' !" - def _set_resistivity_err(self, *kwargs): print "cannot be set individually - use method 'set_res_phase' !" - def _set_phase(self, *kwargs): print "cannot be set individually - use method 'set_res_phase' !" - def _set_phase_err(self, *kwargs): print "cannot be set individually - use method 'set_res_phase' !" + self._phase[idx_f, ii, jj] = math.degrees(cmath.phase( + self.z[idx_f, ii, jj])) + if self.z_err is not None: + r_err, phi_err = MTcc.z_error2r_phi_error( + np.real(self.z[idx_f, ii, jj]), + self.z_err[idx_f, ii, jj], + np.imag(self.z[idx_f, ii, jj]), + self.z_err[idx_f, ii, jj]) - resistivity = property(_get_resistivity, _set_resistivity, doc='Resistivity array') - resistivity_err = property(_get_resistivity_err,_set_resistivity_err, doc='Resistivity error array') - phase = property(_get_phase,_set_phase, doc='Phase array') - phase_err = property(_get_phase_err,_set_phase_err, doc='Phase error array') - def set_res_phase(self, res_array, phase_array, reserr_array = None, - phaseerr_array = None): + self._resistivity_err[idx_f, ii, jj] = \ + 0.4*np.abs(self.z[idx_f, ii, jj])/\ + self.freq[idx_f]*r_err + self._phase_err[idx_f, ii, jj] = phi_err + + + def _get_resistivity(self): + return self._resistivity + def _get_resistivity_err(self): + return self._resistivity_err + def _get_phase(self): + return self._phase + def _get_phase_err(self): + return self._phase_err + def _set_resistivity(self, *kwargs): + print "cannot be set individually - use method 'set_res_phase'!" + def _set_resistivity_err(self, *kwargs): + print "cannot be set individually - use method 'set_res_phase'!" + def _set_phase(self, *kwargs): + print "cannot be set individually - use method 'set_res_phase'!" + def _set_phase_err(self, *kwargs): + print "cannot be set individually - use method 'set_res_phase'!" + + resistivity = property(_get_resistivity, + _set_resistivity, + doc='Resistivity array') + resistivity_err = property(_get_resistivity_err, + _set_resistivity_err, + doc='Resistivity error array') + + phase = property(_get_phase, + _set_phase, + doc='Phase array') + phase_err = property(_get_phase_err, + _set_phase_err, + doc='Phase error array') + + def set_res_phase(self, res_array, phase_array, reserr_array=None, + phaseerr_array=None): """ - Set values for resistivity (res - in Ohm m) and phase + Set values for resistivity (res - in Ohm m) and phase (phase - in degrees), including error propagation. Updates the attributes * z * z_err - """ - if self.z is not None: - z_new = copy.copy(self.z) + """ + if self.z is not None: + z_new = copy.copy(self.z) if self.z.shape != res_array.shape: print 'Error - shape of "res" array does not match shape'+\ @@ -484,8 +493,8 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, self.z.shape) return else: - z_new = np.zeros(res_array.shape,'complex') - + z_new = np.zeros(res_array.shape, 'complex') + if res_array.shape != phase_array.shape: print 'Error - shape of "phase" array does not match shape'+\ 'of "res" array: {0} ; {1}'.format(phase_array.shape, @@ -493,38 +502,38 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, return - if (self.freq is None) or (len(self.freq) != len(res_array)) : + if (self.freq is None) or (len(self.freq) != len(res_array)): raise MTex.MTpyError_EDI('ERROR - cannot set res without correct'+\ 'freq information - proper "freq" '+\ 'attribute must be defined') - + #assert real array: - if np.linalg.norm(np.imag(res_array )) != 0 : - raise MTex.MTpyError_inputarguments( 'Error - array "res" is not'+\ + if np.linalg.norm(np.imag(res_array)) != 0: + raise MTex.MTpyError_inputarguments('Error - array "res" is not'+\ 'real valued !') - - if np.linalg.norm(np.imag(phase_array )) != 0 : - raise MTex.MTpyError_inputarguments( 'Error - array "phase" is'+\ - 'not real valued !') - + + if np.linalg.norm(np.imag(phase_array)) != 0: + raise MTex.MTpyError_inputarguments('Error - array "phase" is'+\ + 'not real valued !') + for idx_f in range(len(z_new)): - for i in range(2): - for j in range(2): + for ii in range(2): + for jj in range(2): abs_z = np.sqrt(5 * self.freq[idx_f] *\ - res_array[idx_f,i,j]) - z_new[idx_f,i,j] = cmath.rect(abs_z, - np.radians(phase_array[idx_f,i,j])) + res_array[idx_f, ii, jj]) + z_new[idx_f, ii, jj] = cmath.rect(abs_z, + np.radians(phase_array[idx_f, ii, jj])) self.z = z_new - + #--------------------------- # error propagation: if reserr_array is None or phaseerr_array is None: return - if self.z_err is not None: - z_err_new = copy.copy(self.z_err) + if self.z_err is not None: + z_err_new = copy.copy(self.z_err) try: if self.z_err.shape != reserr_array.shape: @@ -540,14 +549,14 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, phase_array.shape, self.z.shape) return - except: + except AttributeError: print 'Error - "phaseerr" or "reserr" is/are not array(s)'+\ '- Zerr not set' self.z_err = None - return + return else: - z_err_new = np.zeros(reserr_array.shape,'float') + z_err_new = np.zeros(reserr_array.shape, 'float') try: if reserr_array.shape != phaseerr_array.shape: print 'Error - shape of "phase" array does not match'+\ @@ -555,30 +564,30 @@ def set_res_phase(self, res_array, phase_array, reserr_array = None, reserr_array.shape, self.z_err.shape) return - except: + except AttributeError: print 'Error - "phaseerr" or "reserr" is/are not array(s) -'+\ ' Zerr not set' - return - + return + for idx_f in range(len(z_err_new)): - for i in range(2): - for j in range(2): - abs_z = np.sqrt(5 * self.freq[idx_f] * \ - res_array[idx_f,i,j]) - rel_error_res = reserr_array[idx_f,i,j]/\ - res_array[idx_f,i,j] + for ii in range(2): + for jj in range(2): + abs_z = np.sqrt(5*self.freq[idx_f]*\ + res_array[idx_f, ii, jj]) + rel_error_res = reserr_array[idx_f, ii, jj]/\ + res_array[idx_f, ii, jj] #relative error varies by a factor of 0.5, which is the #exponent in the relation between them: - abs_z_error = 0.5 * abs_z * rel_error_res + abs_z_error = 0.5*abs_z*rel_error_res - z_err_new[idx_f,i,j] = max(MTcc.propagate_error_polar2rect( - abs_z, - abs_z_error, - phase_array[idx_f,i,j], - phaseerr_array[idx_f,i,j])) + z_err_new[idx_f, ii, jj] = max(MTcc.propagate_error_polar2rect( + abs_z, + abs_z_error, + phase_array[idx_f, ii, jj], + phaseerr_array[idx_f, ii, jj])) self.z_err = z_err_new - + #for consistency recalculate resistivity and phase self._compute_res_phase() @@ -593,14 +602,14 @@ def _get_inverse(self): """ - if self.z is None : + if self.z is None: print 'z array is "None" - I cannot invert that' return - + inverse = copy.copy(self.z) for idx_f in range(len(inverse)): try: - inverse[idx_f,:,:] = np.array( (np.matrix(self.z[idx_f,:,:])).I ) + inverse[idx_f, :, :] = np.array((np.matrix(self.z[idx_f, :, :])).I) except: raise MTex.MTpyError_Z('The {0}ith impedance'.format(idx_f+1)+\ 'tensor cannot be inverted') @@ -611,10 +620,10 @@ def _get_inverse(self): def rotate(self, alpha): """ - Rotate Z array by angle alpha. + Rotate Z array by angle alpha. Rotation angle must be given in degrees. All angles are referenced - to geographic North, positive in clockwise direction. + to geographic North, positive in clockwise direction. (Mathematically negative!) In non-rotated state, X refs to North and Y to East direction. @@ -630,7 +639,7 @@ def rotate(self, alpha): """ - if self.z is None : + if self.z is None: print 'Z array is "None" - I cannot rotate that' return @@ -639,33 +648,33 @@ def rotate(self, alpha): if np.iterable(alpha) == 0: try: degreeangle = float(alpha%360) - except: + except ValueError: print '"Angle" must be a valid number (in degrees)' return #make an n long list of identical angles - lo_angles = [degreeangle for i in self.z] + lo_angles = [degreeangle for ii in self.z] else: if len(alpha) == 1: try: degreeangle = float(alpha%360) - except: + except ValueError: print '"Angle" must be a valid number (in degrees)' return #make an n long list of identical angles - lo_angles = [degreeangle for i in self.z] - else: + lo_angles = [degreeangle for ii in self.z] + else: try: - lo_angles = [float(i%360) for i in alpha] - except: + lo_angles = [float(ii%360) for ii in alpha] + except ValueError: print '"Angles" must be valid numbers (in degrees)' return - - self.rotation_angle = np.array([(oldangle + lo_angles[i])%360 - for i,oldangle in enumerate(self.rotation_angle)]) + + self.rotation_angle = np.array([(oldangle + lo_angles[ii])%360 + for ii, oldangle in enumerate(self.rotation_angle)]) if len(lo_angles) != len(self.z): - print 'Wrong number Number of "angles" - I need %i '%(len(self.z)) + print 'Wrong number of "angles" - I need {0}'.format(len(self.z)) #self.rotation_angle = 0. return @@ -673,134 +682,136 @@ def rotate(self, alpha): z_err_rot = copy.copy(self.z_err) for idx_freq in range(len(self.z)): - + angle = lo_angles[idx_freq] if np.isnan(angle): angle = 0. if self.z_err is not None: z_rot[idx_freq], z_err_rot[idx_freq] = \ - MTcc.rotatematrix_incl_errors(self.z[idx_freq,:,:], - angle, - self.z_err[idx_freq,:,:]) + MTcc.rotatematrix_incl_errors(self.z[idx_freq, :, :], + angle, + self.z_err[idx_freq, :, :]) else: z_rot[idx_freq], z_err_rot = \ - MTcc.rotatematrix_incl_errors(self.z[idx_freq,:,:], + MTcc.rotatematrix_incl_errors(self.z[idx_freq, :, :], angle) self.z = z_rot if self.z_err is not None: self.z_err = z_err_rot - + #for consistency recalculate resistivity and phase self._compute_res_phase() - - def no_ss(self, reduce_res_factor_x = 1., reduce_res_factor_y = 1.): + + def no_ss(self, reduce_res_factor_x=1., reduce_res_factor_y=1.): """ Remove the static shift by providing the respective correction factors for the resistivity in the x and y components. - (Factors can be determined by using the "Analysis" module for the + (Factors can be determined by using the "Analysis" module for the impedance tensor) - Assume the original observed tensor Z is built by a static shift S + Assume the original observed tensor Z is built by a static shift S and an unperturbated "correct" Z0 : - + * Z = S * Z0 - + therefore the correct Z will be : * Z0 = S^(-1) * Z - + Arguments ------------ - + **reduce_res_factor_x** : float or iterable list or array static shift factor to be applied to x - components (ie z[:, 0, 1]). This is + components (ie z[:, 0, 1]). This is assumed to be in resistivity scale - + **reduce_res_factor_y** : float or iterable list or array static shift factor to be applied to y - components (ie z[:, 1, 0]). This is + components (ie z[:, 1, 0]). This is assumed to be in resistivity scale Returns -------------- - + **S** : np.ndarray ((2, 2)) - static shift matrix, - + static shift matrix, + **Z0**: corrected Z (over all freq) .. note:: The factors are in resistivity scale, so the entries of the matrix "S" need to be given by their - square-roots! + square-roots! """ - + #check for iterable list/set of reduce_res_factor_x - if so, it must #have length 1 or same as len(z): if np.iterable(reduce_res_factor_x) == 0: try: x_factor = float(reduce_res_factor_x) - except: + except ValueError: print '"reduce_res_factor_x" must be a valid numbers' return - lo_x_factors = [x_factor for i in self.z] + lo_x_factors = np.repeat(x_factor, len(self.z)) else: if len(reduce_res_factor_x) == 1: try: x_factor = float(reduce_res_factor_x) - except: + except ValueError: print '"reduce_res_factor_x" must be a valid numbers' return - lo_x_factors = [x_factor for i in self.z] - else: + lo_x_factors = np.repeat(x_factor, len(self.z)) + else: try: - lo_x_factors = [x_factor for i in reduce_res_factor_x] - except: + lo_x_factors = np.repeat(x_factor, + len(reduce_res_factor_x)) + except ValueError: print '"reduce_res_factor_x" must be valid numbers' return - + if len(lo_x_factors) != len(self.z): print 'Wrong number Number of "reduce_res_factor_x"'+\ '- need {0}'.format(len(self.z)) return - - #check for iterable list/set of reduce_res_factor_y - if so, + + #check for iterable list/set of reduce_res_factor_y - if so, #it must have length 1 or same as len(z): if np.iterable(reduce_res_factor_y) == 0: try: y_factor = float(reduce_res_factor_y) - except: + except ValueError: print '"reduce_res_factor_y" must be a valid numbers' return - lo_y_factors = [y_factor for i in self.z] + lo_y_factors = np.repeat(y_factor, len(self.z)) else: if len(reduce_res_factor_y) == 1: try: y_factor = float(reduce_res_factor_y) - except: + except ValueError: print '"reduce_res_factor_y" must be a valid numbers' return - lo_y_factors = [y_factor for i in self.z] - else: + lo_y_factors = np.repeat(y_factor, len(self.z)) + else: try: - lo_y_factors = [y_factor for i in reduce_res_factor_y] - except: + lo_y_factors = np.repeat(y_factor, + len(reduce_res_factor_y)) + except ValueError: print '"reduce_res_factor_y" must be valid numbers' return - + if len(lo_y_factors) != len(self.z): print 'Wrong number Number of "reduce_res_factor_y"'+\ '- need {0} '.format(len(self.z)) return - + z_corrected = copy.copy(self.z) - static_shift = np.zeros((len(self.z),2,2)) + static_shift = np.zeros((len(self.z), 2, 2)) for idx_f in range(len(self.z)): #correct for x-direction @@ -824,25 +835,25 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): Z = D * Z0 Propagation of errors/uncertainties included - + Arguments ------------ **distortion_tensor** : np.ndarray(2, 2, dtype=real) real distortion tensor as a 2x2 - - **distortion_err_tensor** : np.ndarray(2, 2, dtype=real), + + **distortion_err_tensor** : np.ndarray(2, 2, dtype=real), default is None - + Returns ----------- **distortion_tensor** : np.ndarray(2, 2, dtype='real') input distortion tensor **z_corrected** : np.ndarray(num_freq, 2, 2, dtype='complex') impedance tensor with distorion removed - + **z_corrected_err** : np.ndarray(num_freq, 2, 2, dtype='complex') impedance tensor error after distortion is removed - + Example ---------- >>> import mtpy.core.z as mtz @@ -854,9 +865,9 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): distortion_err_tensor = np.zeros_like(distortion_tensor) #for all freq, calculate D.Inverse, then obtain Z0 = D.I * Z try: - if not ( len(distortion_tensor.shape) in [2,3] ) and \ - (len(distortion_err_tensor.shape) in [2,3]): - raise + if not (len(distortion_tensor.shape) in [2, 3]) and \ + (len(distortion_err_tensor.shape) in [2, 3]): + raise ValueError('Shape not the same') if len(distortion_tensor.shape) == 3 or \ len(distortion_err_tensor.shape) == 3: print 'Distortion is not time-dependent - take only first'+\ @@ -864,22 +875,22 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): try: distortion_tensor = distortion_tensor[0] distortion_err_tensor = distortion_err_tensor[0] - except: - raise + except IndexError: + raise ValueError('distortion tensor the wrong shape') - if not (distortion_tensor.shape == (2,2) ) and \ - (distortion_err_tensor.shape == (2,2) ): - raise + if not (distortion_tensor.shape == (2, 2)) and \ + (distortion_err_tensor.shape == (2, 2)): + raise ValueError('Shape not the same') distortion_tensor = np.matrix(np.real(distortion_tensor)) - except: + except ValueError: raise MTex.MTpyError_Z('The array provided is not a proper'+\ 'distortion tensor') - try: + try: DI = distortion_tensor.I - except: + except np.linalg.LinAlgError: raise MTex.MTpyError_Z('The provided distortion tensor is'+\ 'singular - I cannot invert that!') @@ -896,60 +907,50 @@ def no_distortion(self, distortion_tensor, distortion_err_tensor=None): #D.I * Z, making it 4 summands for each component: z_corrected = np.zeros_like(self.z) z_corrected_err = np.zeros_like(self.z_err) - + for idx_f in range(len(self.z)): - z_corrected[idx_f] = np.array(np.dot(DI, np.matrix(self.z[idx_f]))) - for i in range(2): - for j in range(2): - z_corrected_err[idx_f,i,j] = np.sum(np.abs( - np.array([DI_err[i,0]*\ - self.z[idx_f,0,j],\ - DI[i,0]*\ - self.z_err[idx_f,0,j],\ - DI_err[i,1]*\ - self.z[idx_f,1,j],\ - DI[i,1]*\ - self.z_err[idx_f,1,j]]))) + z_corrected[idx_f] = np.array(np.dot(DI, np.matrix(self.z[idx_f]))) + for ii in range(2): + for jj in range(2): + z_corrected_err[idx_f, ii, jj] = np.sum(np.abs( + np.array([DI_err[ii, 0]*\ + self.z[idx_f, 0, jj],\ + DI[ii, 0]*\ + self.z_err[idx_f, 0, jj],\ + DI_err[ii, 1]*\ + self.z[idx_f, 1, jj],\ + DI[ii, 1]*\ + self.z_err[idx_f, 1, jj]]))) return distortion_tensor , z_corrected, z_corrected_err - - - def no_ss_no_distortion(self, rho_x = 1., rho_y = 1.): - """ - Not implemented yet!! - """ - - pass - - def _get_only1d(self): """ Return Z in 1D form. - If Z is not 1D per se, the diagonal elements are set to zero, - the off-diagonal elements keep their signs, but their absolute + If Z is not 1D per se, the diagonal elements are set to zero, + the off-diagonal elements keep their signs, but their absolute is set to the mean of the original Z off-diagonal absolutes. """ z1d = copy.copy(self.z) - for i in range(len(z1d)): - z1d[i,0,0] = 0 - z1d[i,1,1] = 0 - sign01 = np.sign(z1d[i,0,1]) - sign10 = np.sign(z1d[i,1,0]) - mean1d = 0.5* (z1d[i,1,0]+z1d[i,0,1]) - z1d[i,0,1] = sign01 * mean1d - z1d[i,1,0] = sign10 * mean1d + for ii in range(len(z1d)): + z1d[ii, 0, 0] = 0 + z1d[ii, 1, 1] = 0 + sign01 = np.sign(z1d[ii, 0, 1]) + sign10 = np.sign(z1d[ii, 1, 0]) + mean1d = 0.5* (z1d[ii, 1, 0]+z1d[ii, 0, 1]) + z1d[ii, 0, 1] = sign01 * mean1d + z1d[ii, 1, 0] = sign10 * mean1d return z1d - only1d = property(_get_only1d, - doc=""" Return Z in 1D form. If Z is not 1D per se, - the diagonal elements are set to zero, the - off-diagonal elements keep their signs, but - their absolute is set to the mean of the + only1d = property(_get_only1d, + doc=""" Return Z in 1D form. If Z is not 1D per se, + the diagonal elements are set to zero, the + off-diagonal elements keep their signs, but + their absolute is set to the mean of the original Z off-diagonal absolutes.""") def _get_only2d(self): @@ -961,13 +962,13 @@ def _get_only2d(self): z2d = copy.copy(self.z) - for i in range(len(z2d)): - z2d[i,0,0] = 0 - z2d[i,1,1] = 0 - + for ii in range(len(z2d)): + z2d[ii, 0, 0] = 0 + z2d[ii, 1, 1] = 0 + return z2d - - only2d = property(_get_only2d, + + only2d = property(_get_only2d, doc="""Return Z in 2D form. If Z is not 2D per se, the diagonal elements are set to zero. """) @@ -978,19 +979,19 @@ def _get_trace(self): Returns ------------- - **tr** : np.ndarray(nfreq, 2, 2) + **tr** : np.ndarray(nfreq, 2, 2) Trace(z) **tr_err** : np.ndarray(nfreq, 2, 2) Error of Trace(z) """ - tr = np.array( [np.trace(i) for i in self.z]) + tr = np.array( [np.trace(ii) for ii in self.z]) tr_err = None if self.z_err is not None: tr_err = np.zeros_like(tr) - tr_err[:] = self.z_err[:,0,0] + self.z_err[:,1,1] + tr_err[:] = self.z_err[:, 0, 0] + self.z_err[:, 1, 1] return tr, tr_err @@ -1003,19 +1004,19 @@ def _get_skew(self): Returns ----------- - **skew**: np.ndarray(nfreq, 2, 2) + **skew**: np.ndarray(nfreq, 2, 2) skew(z) **skew_err** : np.ndarray(nfreq, 2, 2) Error of skew(z) """ - - skew = np.array( [ i[0,1] - i[1,0] for i in self.z ] ) - + + skew = np.array([ii[0, 1]-ii[1, 0] for ii in self.z]) + skewerr = None if self.z_err is not None: skewerr = np.zeros_like(skew) - skewerr[:] = self.z_err[:,0,1] + self.z_err[:,1,0] + skewerr[:] = self.z_err[:, 0, 1] + self.z_err[:, 1, 0] return skew, skewerr skew = property(_get_skew, doc='Skew of Z, incl. error') @@ -1026,22 +1027,22 @@ def _get_det(self): Returns ---------- - **det_Z** : np.ndarray(nfreq) + **det_Z** : np.ndarray(nfreq) det(z) **det_Z_err** : np.ndarray(nfreq) Error of det(z) """ - det_Z = np.array( [np.linalg.det(i) for i in self.z]) - + det_Z = np.array([np.linalg.det(ii) for ii in self.z]) + det_Z_err = None if self.z_err is not None: det_Z_err = np.zeros_like(det_Z) - det_Z_err[:] = np.abs(self.z[:,1,1] * self.z_err[:,0,0]) +\ - np.abs(self.z[:,0,0] * self.z_err[:,1,1]) +\ - np.abs(self.z[:,0,1] * self.z_err[:,1,0]) +\ - np.abs(self.z[:,1,0] * self.z_err[:,0,1]) + det_Z_err[:] = np.abs(self.z[:, 1, 1] * self.z_err[:, 0, 0]) +\ + np.abs(self.z[:, 0, 0] * self.z_err[:, 1, 1]) +\ + np.abs(self.z[:, 0, 1] * self.z_err[:, 1, 0]) +\ + np.abs(self.z[:, 1, 0] * self.z_err[:, 0, 1]) return det_Z, det_Z_err det = property(_get_det, doc='Determinant of Z, incl. error') @@ -1050,30 +1051,32 @@ def _get_det(self): def _get_norm(self): """ Return the 2-/Frobenius-norm of Z (NO uncertainties yet). - + Returns --------- - **znorm** : np.ndarray(nfreq) + **znorm** : np.ndarray(nfreq) norm(z) **znormerr** : np.ndarray(nfreq) Error of norm(z) """ - znorm = np.array( [np.linalg.norm(i) for i in self.z ]) + znorm = np.array([np.linalg.norm(ii) for ii in self.z]) znormerr = None if self.z_err is not None: znormerr = np.zeros_like(znorm) - for idx,z_tmp in enumerate(self.z): + for idx, z_tmp in enumerate(self.z): value = znorm[idx] error_matrix = self.z_err[idx] radicand = 0. - for i in range(2): - for j in range(2): - radicand += (error_matrix[i,j]*np.real(z_tmp[i,j]))**2 - radicand += (error_matrix[i,j]*np.imag(z_tmp[i,j]))**2 - + for ii in range(2): + for jj in range(2): + radicand += (error_matrix[ii, jj]*\ + np.real(z_tmp[ii, jj]))**2 + radicand += (error_matrix[ii, jj]*\ + np.imag(z_tmp[ii, jj]))**2 + znormerr[idx] = 1./value*np.sqrt(radicand) @@ -1101,50 +1104,50 @@ def _get_invariants(self): invariants_dict = {} - z1 = (self.z[:,0,1] - self.z[:,1,0])/2. - invariants_dict['z1'] = z1 + z1 = (self.z[:, 0, 1]-self.z[:, 1, 0])/2. + invariants_dict['z1'] = z1 invariants_dict['det'] = self.det[0] - - det_real = np.array([np.linalg.det(i) for i in np.real(self.z)]) + + det_real = np.array([np.linalg.det(ii) for ii in np.real(self.z)]) invariants_dict['det_real'] = det_real - - det_imag = np.array([np.linalg.det(i) for i in np.imag(self.z)]) + + det_imag = np.array([np.linalg.det(ii) for ii in np.imag(self.z)]) invariants_dict['det_imag'] = det_imag invariants_dict['trace'] = self.trace[0] - + invariants_dict['skew'] = self.skew[0] - + invariants_dict['norm'] = self.norm[0] - - lambda_plus = np.array([z1[i] + np.sqrt(z1[i] * z1[i] -\ - self.det[0][i]) for i in range(len(z1))]) + + lambda_plus = np.array([z1[ii] + np.sqrt(z1[ii] * z1[ii] -\ + self.det[0][ii]) for ii in range(len(z1))]) invariants_dict['lambda_plus'] = lambda_plus - - lambda_minus = np.array([z1[i] - np.sqrt(z1[i] * z1[i] -\ - self.det[0][i]) for i in range(len(z1))]) + + lambda_minus = np.array([z1[ii] - np.sqrt(z1[ii] * z1[ii] -\ + self.det[0][ii]) for ii in range(len(z1))]) invariants_dict['lambda_minus'] = lambda_minus - - sigma_plus = np.array([0.5*self.norm[0][i]**2 + \ - np.sqrt( 0.25*self.norm[0][i]**4 + \ - np.abs(self.det[0][i])**2) - for i in range(len(self.norm[0]))]) - + + sigma_plus = np.array([0.5*self.norm[0][ii]**2 + \ + np.sqrt(0.25*self.norm[0][ii]**4 + \ + np.abs(self.det[0][ii])**2) + for ii in range(len(self.norm[0]))]) + invariants_dict['sigma_plus'] = sigma_plus - - sigma_minus = np.array([0.5*self.norm[0][i]**2 - \ - np.sqrt(0.25*self.norm[0][i]**4 + \ - np.abs(self.det[0][i])**2) - for i in range(len(self.norm[0]))]) + + sigma_minus = np.array([0.5*self.norm[0][ii]**2 - \ + np.sqrt(0.25*self.norm[0][ii]**4 + \ + np.abs(self.det[0][ii])**2) + for ii in range(len(self.norm[0]))]) invariants_dict['sigma_minus'] = sigma_minus return invariants_dict - - invariants = property(_get_invariants, + + invariants = property(_get_invariants, doc="""Dictionary, containing the invariants of - Z: z1, det, det_real, det_imag, trace, - skew, norm, lambda_plus/minus, + Z: z1, det, det_real, det_imag, trace, + skew, norm, lambda_plus/minus, sigma_plus/minus""") #====================================================================== @@ -1156,35 +1159,35 @@ class Tipper(object): Tipper class --> generates a Tipper-object. Errors are given as standard deviations (sqrt(VAR)) - + Arguments ----------- **tipper_array** : np.ndarray((nf, 1, 2), dtype='complex') tipper array in the shape of [Tx, Ty] *default* is None - + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of estimated tipper errors in the shape of [Tx, Ty]. Must be the same shape as tipper_array. *default* is None - + **freq** : np.ndarray(nf) array of frequencies corresponding to the tipper elements. Must be same length as tipper_array. *default* is None - + =============== =========================================================== Attributes Description =============== =========================================================== - freq array of frequencies corresponding to elements of z + freq array of frequencies corresponding to elements of z rotation_angle angle of which data is rotated by - + tipper tipper array tipper_err tipper error array =============== =========================================================== - + =============== =========================================================== Methods Description =============== =========================================================== @@ -1193,67 +1196,70 @@ class Tipper(object): amp_phase computes amplitude and phase of Tx and Ty. rotate rotates the data by the given angle =============== =========================================================== - - + + """ - def __init__(self, tipper_array=None, tipper_err_array=None, + def __init__(self, tipper_array=None, tipper_err_array=None, freq=None): """ Initialise an instance of the Tipper class. - + Arguments -------------- **tipper_array** : np.ndarray((nf, 1, 2), dtype='complex') tipper array in the shape of [Tx, Ty] *default* is None - + **tipper_err_array** : np.ndarray((nf, 1, 2)) array of estimated tipper errors in the shape of [Tx, Ty]. Must be the same shape as tipper_array. *default* is None - + **freq** : np.ndarray(nf) - array of frequencies corresponding to the tipper + array of frequencies corresponding to the tipper elements. Must be same length as tipper_array. *default* is None - - """ - self._tipper = tipper_array + """ + + self._tipper = tipper_array self._tipper_err = tipper_err_array self._freq = freq self.rotation_angle = 0. if self.tipper is not None: self.rotation_angle = np.zeros((len(self.tipper))) - + self.amplitude = None self.amplitude_err = None self._phase = None self._phase_err = None - + self.mag_real = None self.mag_imag = None self.angle_real = None self.angle_imag = None + self.mag_err = None + self.angle_err = None + #========================================================================== # Define get/set and properties #========================================================================== - #----freq---------------------------------------------------------- + #----freq---------------------------------------------------------- def _set_freq(self, lo_freq): """ Set the array of freq. Arguments ----------- - + **lo_freq** : list or array of frequnecies (Hz) No test for consistency! @@ -1261,70 +1267,70 @@ def _set_freq(self, lo_freq): if len(lo_freq) is not len(self.tipper): print 'length of freq list/array not correct'+\ - ' (%i instead of %i)'%(len(lo_freq), len(self.tipper)) + ' (%ii instead of %ii)'%(len(lo_freq), len(self.tipper)) return self._freq = np.array(lo_freq) - + #for consistency recalculate amplitude and phase - self._compute_amp_phase() + self._compute_amp_phase() - def _get_freq(self): + def _get_freq(self): if self._freq is not None: self._freq = np.array(self._freq) return self._freq - - freq = property(_get_freq, _set_freq, + + freq = property(_get_freq, _set_freq, doc='array of freq') - #---tipper-------------------------------------------------------------- + #---tipper-------------------------------------------------------------- def _set_tipper(self, tipper_array): """ Set the attribute *tipper* Arguments ------------- - + **tipper_array** : np.ndarray((nf, 1, 2), dtype='complex') tipper array in the shape of [Tx, Ty] *default* is None Test for shape, but no test for consistency! - """ + """ #make sure the array is of required shape try: - if len(tipper_array.shape)==3 and tipper_array.shape[1:3]==(1,2): - if tipper_array.dtype in ['complex', 'float','int']: + if len(tipper_array.shape) == 3 and tipper_array.shape[1:3] == (1, 2): + if tipper_array.dtype in ['complex', 'float', 'int']: self._tipper = tipper_array - except: + except IndexError: pass #check to see if the new tipper array is the same shape as the old - if (self._tipper!=None) and (self._tipper.shape!=tipper_array.shape): + if (self._tipper != None) and (self._tipper.shape != tipper_array.shape): print 'Error - shape of "tipper" array does not match shape of '+\ 'tipper-array: %s ; %s'%(str(tipper_array.shape), str(self.tipper.shape)) return self._tipper = tipper_array - + #neeed to set the rotation angle such that it is an array if self.rotation_angle is float: - self.rotation_angle = np.array([self.rotation_angle - for ii in self._tipper]) - + self.rotation_angle = np.repeat(self.rotation_angle, + len(self._tipper)) + #for consistency recalculate mag and angle self._compute_mag_direction() - + #for consistency recalculate amplitude and phase - self._compute_amp_phase() - + self._compute_amp_phase() + def _get_tipper(self): return self._tipper - + tipper = property(_get_tipper, _set_tipper, doc="Tipper array") - + #----tipper error--------------------------------------------------------- def _set_tipper_err(self, tipper_err_array): """ @@ -1340,52 +1346,52 @@ def _set_tipper_err(self, tipper_err_array): Test for shape, but no test for consistency! - """ + """ #make sure the input array is of required shape try: - if len(tipper_err_array.shape)==3 and \ - tipper_err_array.shape[1:3]==(1,2): - if tipper_err_array.dtype in ['float','int']: + if len(tipper_err_array.shape) == 3 and \ + tipper_err_array.shape[1:3] == (1, 2): + if tipper_err_array.dtype in ['float', 'int']: self._tipper_err = tipper_err_array - except: + except IndexError: pass - + #make sure the error array is the same shape as tipper try: if len(self.tipper) != len(self._tipper_err): self._tipper_err = None - except: + except TypeError: pass - - if (self.tipper_err!=None) and \ - (self._tipper_err.shape!=tipper_err_array.shape): + + if (self.tipper_err != None) and \ + (self._tipper_err.shape != tipper_err_array.shape): print 'Error - shape of "tipper_err" array does not match shape '+\ 'of tipper_err array: %s ; %s'%(str(tipper_err_array.shape), str(self._tipper_err.shape)) return self._tipper_err = tipper_err_array - + #for consistency recalculate mag and angle self._compute_mag_direction() - + #for consistency recalculate amplitude and phase self._compute_amp_phase() - + def _get_tipper_err(self): return self._tipper_err - + tipper_err = property(_get_tipper_err, _set_tipper_err, doc="Estimated Tipper errors") - + #----real part--------------------------------------------------------- def _get_real(self): """ Return the real part of the Tipper. - """ + """ if self.tipper is None: print 'tipper array is None - cannot calculate real' return @@ -1398,37 +1404,37 @@ def _set_real(self, real_array): Arguments -------------- - + **tipper_array** : np.ndarray((nf, 1, 2)) real part tipper array in the shape of [Tx, Ty] *default* is None Test for shape, but no test for consistency! - """ - + """ + - if (self.tipper is not None) and (self.tipper.shape!=real_array.shape): + if (self.tipper is not None) and (self.tipper.shape != real_array.shape): print 'shape of "real" array does not match shape of tipper '+\ 'array: %s ; %s'%(str(real_array.shape), str(self.tipper.shape)) return #assert real array: - if np.linalg.norm(np.imag(real_array )) != 0 : + if np.linalg.norm(np.imag(real_array)) != 0 : print 'Error - array "real" is not real valued !' return if self.tipper is not None: - tipper_new = real_array + 1j* self.imag() + tipper_new = real_array + 1j* self.imag() else: tipper_new = real_array self.tipper = tipper_new - + #for consistency recalculate mag and angle self._compute_mag_direction() - + #for consistency recalculate amplitude and phase self._compute_amp_phase() @@ -1439,7 +1445,7 @@ def _get_imag(self): """ Return the imaginary part of the Tipper. - """ + """ if self.tipper is None: print 'tipper array is None - cannot calculate imag' @@ -1447,45 +1453,45 @@ def _get_imag(self): return np.imag(self.tipper) - + def _set_imag(self, imag_array): """ Set the imaginary part of 'tipper'. Arguments -------------- - + **tipper_array** : np.ndarray((nf, 1, 2)) imaginary part tipper array in the shape of [Tx, Ty] *default* is None Test for shape, but no test for consistency! - """ + """ - if (self.tipper is not None) and (self.tipper.shape!=imag_array.shape): + if (self.tipper is not None) and (self.tipper.shape != imag_array.shape): print 'shape of "real" array does not match shape of tipper '+\ 'array: %s ; %s'%(str(imag_array.shape), str(self.tipper.shape)) return - + #assert real array: - if np.linalg.norm(np.imag(imag_array )) != 0 : + if np.linalg.norm(np.imag(imag_array)) != 0: print 'Error - array "imag" is not real valued !' return - i = np.complex(0,1) + ii_arr = np.complex(0, 1) if self.tipper is not None: - tipper_new = self.real() + i * imag_array + tipper_new = self.real() + ii_arr * imag_array else: - tipper_new = i * imag_array + tipper_new = ii_arr * imag_array self.tipper = tipper_new - + #for consistency recalculate mag and angle self._compute_mag_direction() - + #for consistency recalculate amplitude and phase self._compute_amp_phase() @@ -1499,10 +1505,10 @@ def _compute_amp_phase(self): * *phase* * *amplitude_err* * *phase_err* - + values for resistivity are in in Ohm m and phase in degrees. - """ - + """ + if self.tipper is None: #print 'tipper array is None - cannot calculate rho/phi' return None @@ -1517,35 +1523,35 @@ def _compute_amp_phase(self): self._phase = np.zeros(self.tipper.shape) - for idx_f in range(len(self.tipper)): - for j in range(2): - self.amplitude[idx_f,0,j] = np.abs(self.tipper[idx_f,0,j]) - self._phase[idx_f,0,j] = math.degrees(cmath.phase( - self.tipper[idx_f,0,j])) - + for idx_f in range(len(self.tipper)): + for jj in range(2): + self.amplitude[idx_f, 0, jj] = np.abs(self.tipper[idx_f, 0, jj]) + self._phase[idx_f, 0, jj] = math.degrees(cmath.phase( + self.tipper[idx_f, 0, jj])) + if self.tipper_err is not None: r_err, phi_err = MTcc.propagate_error_rect2polar( - np.real(self.tipper[idx_f,0,j]), - self.tipper_err[idx_f,0,j], - np.imag(self.tipper[idx_f,0,j]), - self.tipper_err[idx_f,0,j]) - - self.amplitude_err[idx_f,0,j] = r_err - self._phase_err[idx_f,0,j] = phi_err + np.real(self.tipper[idx_f, 0, jj]), + self.tipper_err[idx_f, 0, jj], + np.imag(self.tipper[idx_f, 0, jj]), + self.tipper_err[idx_f, 0, jj]) + + self.amplitude_err[idx_f, 0, jj] = r_err + self._phase_err[idx_f, 0, jj] = phi_err def set_amp_phase(self, r_array, phi_array): """ Set values for amplitude(r) and argument (phi - in degrees). - Updates the attributes + Updates the attributes * tipper * tipper_err - """ + """ + + if self.tipper is not None: - if self.tipper is not None: - - tipper_new = copy.copy(self.tipper) + tipper_new = copy.copy(self.tipper) if self.tipper.shape != r_array.shape: print 'Error - shape of "r" array does not match shape of '+\ @@ -1560,116 +1566,116 @@ def set_amp_phase(self, r_array, phi_array): return else: - tipper_new = np.zeros(r_array.shape,'complex') + tipper_new = np.zeros(r_array.shape, 'complex') if r_array.shape != phi_array.shape: print 'Error - shape of "phi" array does not match shape '+\ 'of "r" array: %s ; %s'%(str(phi_array.shape), str(r_array.shape)) return - + #assert real array: - if np.linalg.norm(np.imag(r_array )) != 0 : + if np.linalg.norm(np.imag(r_array)) != 0: print 'Error - array "r" is not real valued !' return - if np.linalg.norm(np.imag(phi_array )) != 0 : + if np.linalg.norm(np.imag(phi_array)) != 0: print 'Error - array "phi" is not real valued !' return for idx_f in range(len(r_array)): - for j in range(2): - tipper_new[idx_f,0,j] = cmath.rect(r_array[idx_f,0,j], - math.radians(phi_array[idx_f,0,j])) + for jj in range(2): + tipper_new[idx_f, 0, jj] = cmath.rect(r_array[idx_f, 0, jj], + math.radians(phi_array[idx_f, 0, jj])) self.tipper = tipper_new - + #for consistency recalculate amplitude and phase self._compute_amp_phase() - + #----magnitude and direction---------------------------------------------- def _compute_mag_direction(self): """ - computes the magnitude and direction of the real and imaginary - induction vectors. - + computes the magnitude and direction of the real and imaginary + induction vectors. + Returns ------------ **mag_real** : np.array(nf) magnitude of the real induction vector - + **ang_real** : np.array(nf) - angle (deg) of the real induction vector assuming + angle (deg) of the real induction vector assuming that North is 0 and angle is positive clockwise - + **mag_imag** : np.array(nf) magnitude of the imaginary induction vector - + **ang_imag** : np.array(nf) - angle (deg) of the imaginary induction vector - assuming that North is 0 and angle is positive + angle (deg) of the imaginary induction vector + assuming that North is 0 and angle is positive clockwise - - + + """ - + if self.tipper is None: return None - self.mag_real = np.sqrt(self.tipper[:,0,0].real**2 + \ - self.tipper[:,0,1].real**2) - self.mag_imag = np.sqrt(self.tipper[:,0,0].imag**2 + - self.tipper[:,0,1].imag**2) + self.mag_real = np.sqrt(self.tipper[:, 0, 0].real**2 + \ + self.tipper[:, 0, 1].real**2) + self.mag_imag = np.sqrt(self.tipper[:, 0, 0].imag**2 + + self.tipper[:, 0, 1].imag**2) + + self.mag_err = None + self.angle_err = None #get the angle, need to make both parts negative to get it into the #parkinson convention where the arrows point towards the conductor - - self.angle_real = np.rad2deg(np.arctan2(-self.tipper[:,0,1].real, - -self.tipper[:,0,0].real)) - - self.angle_imag = np.rad2deg(np.arctan2(-self.tipper[:,0,1].imag, - -self.tipper[:,0,0].imag)) - - ## estimate error: THIS MAYBE A HACK + + self.angle_real = np.rad2deg(np.arctan2(-self.tipper[:, 0, 1].real, + -self.tipper[:, 0, 0].real)) + + self.angle_imag = np.rad2deg(np.arctan2(-self.tipper[:, 0, 1].imag, + -self.tipper[:, 0, 0].imag)) + + ## estimate error: THIS MAYBE A HACK if self.tipper_err is not None: self.mag_err = np.sqrt(self.tipper_err[:, 0, 0]**2+ \ self.tipper_err[:, 0, 1]**2) self.angle_err = np.rad2deg(np.arctan2(self.tipper_err[:, 0, 0], self.tipper_err[:, 0, 1]))%45 - else: - self.mag_err = None - self.angle_err = None - + def set_mag_direction(self, mag_real, ang_real, mag_imag, ang_imag): """ computes the tipper from the magnitude and direction of the real and imaginary components. - + Updates tipper - + No error propagation yet """ - - self.tipper[:,0,0].real = np.sqrt((mag_real**2*np.arctan(ang_real)**2)/\ + + self.tipper[:, 0, 0].real = np.sqrt((mag_real**2*np.arctan(ang_real)**2)/\ (1-np.arctan(ang_real)**2)) - - self.tipper[:,0,1].real = np.sqrt(mag_real**2/\ + + self.tipper[:, 0, 1].real = np.sqrt(mag_real**2/\ (1-np.arctan(ang_real)**2)) - - self.tipper[:,0,0].imag = np.sqrt((mag_imag**2*np.arctan(ang_imag)**2)/\ + + self.tipper[:, 0, 0].imag = np.sqrt((mag_imag**2*np.arctan(ang_imag)**2)/\ (1-np.arctan(ang_imag)**2)) - - self.tipper[:,0,1].imag = np.sqrt(mag_imag**2/\ + + self.tipper[:, 0, 1].imag = np.sqrt(mag_imag**2/\ (1-np.arctan(ang_imag)**2)) #for consistency recalculate mag and angle self._compute_mag_direction() - + #----rotate--------------------------------------------------------------- def rotate(self, alpha): """ Rotate Tipper array. Rotation angle must be given in degrees. All angles are referenced - to geographic North=0, positive in clockwise direction. + to geographic North=0, positive in clockwise direction. (Mathematically negative!) In non-rotated state, 'X' refs to North and 'Y' to East direction. @@ -1690,33 +1696,33 @@ def rotate(self, alpha): if np.iterable(alpha) == 0: try: degreeangle = float(alpha%360) - except: + except ValueError: print '"Angle" must be a valid number (in degrees)' return #make an n long list of identical angles - lo_angles = [degreeangle for i in self.tipper] + lo_angles = [degreeangle for ii in self.tipper] else: if len(alpha) == 1: try: degreeangle = float(alpha%360) - except: + except ValueError: print '"Angle" must be a valid number (in degrees)' return #make an n long list of identical angles - lo_angles = [degreeangle for i in self.tipper] - else: + lo_angles = [degreeangle for ii in self.tipper] + else: try: - lo_angles = [ float(i%360) for i in alpha] - except: + lo_angles = [float(ii%360) for ii in alpha] + except ValueError: print '"Angles" must be valid numbers (in degrees)' return - - self.rotation_angle = np.array([(oldangle + lo_angles[i])%360 - for i,oldangle in enumerate(self.rotation_angle)] ) + + self.rotation_angle = np.array([(oldangle+lo_angles[ii])%360 + for ii, oldangle in enumerate(self.rotation_angle)]) if len(lo_angles) != len(self.tipper): - print 'Wrong number Number of "angles" - need %i '%(len(self.tipper)) + print 'Wrong number Number of "angles" - need %ii '%(len(self.tipper)) self.rotation_angle = 0. return @@ -1728,317 +1734,40 @@ def rotate(self, alpha): if self.tipper_err is not None: tipper_rot[idx_freq], tipper_err_rot[idx_freq] = \ - MTcc.rotatevector_incl_errors(self.tipper[idx_freq,:,:], + MTcc.rotatevector_incl_errors(self.tipper[idx_freq, :, :], angle, - self.tipper_err[idx_freq,:,:] ) + self.tipper_err[idx_freq, :, :]) else: tipper_rot[idx_freq], tipper_err_rot = \ - MTcc.rotatevector_incl_errors(self.tipper[idx_freq,:,:], + MTcc.rotatevector_incl_errors(self.tipper[idx_freq, :, :], angle) - + self.tipper = tipper_rot self.tipper_err = tipper_err_rot - + #for consistency recalculate mag and angle self._compute_mag_direction() - + #for consistency recalculate amplitude and phase self._compute_amp_phase() #------------------------ - - -def rotate_z(z_array, alpha, z_err_array = None): - """ - Rotate a Z array assuming N==0 and E==90 - - Arguments - ------------ - **z_array** : np.ndarray(1, 2, 2) or (2, 2) - impedance tensor - **alpha** : float - rotation angle in degrees clockwise - **z_err_array** : np.ndarray(z_array.shape) - impedance tensor error - needs to be the same shape as - z_array - - Returns - ----------- - **z_rot** : np.ndarray(z_array.shape) - rotated impedance tensor - **z_rot_err** : np.ndarray(z_array.shape) - rotated impedance tensor error - - Example - ------------- - >>> import mtpy.core.z as mtz - >>> z_array = np.array([[0-0j, 1-1j], [0-0j, -1+1j]]) - >>> rot_z = mtz.rotate_z(z_array, 45) - """ - - z_object = _read_z_array(z_array, z_err_array) - - z_object.rotate(alpha) - - return z_object.z, z_object.z_err - - - -def remove_distortion(z_array, distortion_tensor, - distortion_err_tensor = None, z_err_array = None): - """ - Remove the distortion from a given Z array. - - Arguments - ------------- - **z_array** : np.ndarray(num_freq, 2, 2) - impedance tensor - **distortion_tensor** : np.ndarray(2 ,2) - real distorion tensor - **distortion_err_tensor : np.ndarray(2, 2) - error in distortion tensor - **z_err_array** : np.ndarray(z_array.shape) - error in impedance tensor, - same shape as z_array - - Returns - ----------- - **z_corrected** : np.ndarray(z_array.shape) - impedance tensor with distorion - removed - **z_corrected_err** : np.ndarray(z_array.shape) - error in impedance after - distortion is removed - **z_array** : np.ndarray(z_array.shape) - input z_array - - """ - - z_object = _read_z_array(z_array, z_err_array) - - distortion, z_corrected, z_corrected_err = \ - z_object.no_distortion(distortion_tensor, distortion_err_tensor) - - return z_corrected, z_corrected_err, z_array - - -def remove_ss(z_array, z_err_array = None, res_x = 1., res_y = 1.): - """ - Remove the static shift from a given Z array. - - Arguments - ------------- - **z_array** : np.ndarray(num_freq, 2, 2) - impedance tensor - - **z_err_array** : np.ndarray(z_array.shape) - error in impedance tensor, - same shape as z_array - **res_x** : float - amount of static shift to remove from - Zxx and Zxy - **res_y** : float - amount of static shift to remove from - Zyx and Zyy - - Returns - ----------- - **z_corrected** : np.ndarray(z_array.shape) - impedance tensor with static shift - removed - **static_shift** : np.ndarray(2, 2) - static shift removed - **z_array** : np.ndarray(z_array.shape) - input z_array - - """ - - - z_object = _read_z_array(z_array, z_err_array) - - z_corrected, static_shift = z_object.no_ss() - - return z_corrected, static_shift, z_array - - -def remove_ss_and_distortion(z_array, z_err_array = None, res_x = 1., - res_y = 1.): - """ - Not implemented yet !! - - """ - pass - - - -def z2resphi(z_array, periods, z_err_array = None): - """ - Return the resistivity/phase information for Z - (Z must be given in units "km/s" = "mu m / nT"!!). - - Arguments - ------------ - **z_array** : np.ndarray(num_periods, 2, 2) - impedance tensor - **periods** : np.ndarray(num_periods) - array of periods corresponding to - the elements in z_array - - **z_err_array** : np.ndarray(z_array.shape) - error in impedance tensor, - same shape as z_array - - Returns - ----------- - **resistivity** : np.ndarray(z_array.shape) - apparent resistivity in Ohm-m - **resistivity_err** : np.ndarray(z_array.shape) - apparent resistivity error in Ohm-m - **phase** : np.ndarray(z_array.shape) - impedance phase in degrees - **phase_err** : np.ndarray(z_array.shape) - impedance phase error in degrees - - Example - ---------- - >>> res, res_err, phase, phase_err = mtz.z2resphi(z_array, - periods) - """ - - z_object = _read_z_array(z_array,z_err_array) - z_object.freq= np.array(1./periods) - - return (z_object.resistivity, z_object.resistivity_err, - z_object.phase, z_object.phase_err) - - -def rotate_tipper(tipper_array, alpha, tipper_err_array = None): - """ - Rotate a Tipper array - - Arguments - ------------ - **tipper_array** : np.ndarray(num_freq, 2, 2) - tipper array - **alpha** : float - rotation angle in degrees clockwise - **tipper_err_array** : np.ndarray(tipper_array.shape) - tipper error - needs to be the same shape as - tipper_array - - Returns - ----------- - **tipper_rot** : np.ndarray(z_array.shape) - rotated impedance tensor - **tipper_rot_err** : np.ndarray(z_array.shape) - rotated impedance tensor error - - Example - ------------- - >>> import mtpy.core.z as mtz - >>> rot_tip = mtz.rotate_tipper(tipper_array, 45) - - """ - - tipper_object = _read_tipper_array(tipper_array, tipper_err_array) - - tipper_object.rotate(alpha) - - return tipper_object.tipper, tipper_object.tipper_err - - -def tipper2rhophi(tipper_array, tipper_err_array = None): - """ - Return values for amplitude (rho) and argument (phi - in degrees). - - Output is a 4-tuple of arrays: - (Rho, Phi, RhoError, PhiError) - """ - - tipper_object = _read_tipper_array(tipper_array, tipper_err_array ) - - return tipper_object.rho_phi() - - -def _read_z_array(z_array, z_err_array = None): - """ - Read a Z array and return an instance of the Z class. - - - Arguments - ------------ - **z_array** : np.ndarray (num_freq, 2, 2, dtype='complex') - impedance tensor - **z_err_array** : np.ndarray(z_array.shape) - impedance tensor error, same shape as - z_array - - Returns - ----------- - **z_object** : mtpy.core.z.Z object - """ - - - try: - - - z_object = Z(z_array=z_array, z_err_array=z_err_array) - except: - raise MTex.MTpyError_Z('Cannot generate Z instance - check z-array'+\ - 'dimensions/type: (N,2,2)/complex ; '+\ - '{0}'.format(z_array.shape)) - - return z_object - - -def _read_tipper_array(tipper_array, tipper_err_array = None): - """ - Read a Tipper array and return an instance of the Tipper class. - - - Arguments - ------------ - **tipper_array** : np.ndarray (num_freq, 2, 2, dtype='complex') - tipper tensor - **tipper_err_array** : np.ndarray(z_array.shape) - tipper error, same shape as - tipper_array - - Returns - ----------- - **tipper_object** : mtpy.core.z.Tipper object - - """ - - try: - tipper_object = Tipper( tipper_array=tipper_array, - tipper_err_array=tipper_err_array ) - except: - raise MTex.MTpyError_tipper('Cannot generate Tipper instance -'+\ - 'check dimensions/type: (N,1,2)/complex'+ - '; {0}'.format(tipper_array.shape)) - - return tipper_object - - -def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, - Z_prime_error = None): +def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, + Z_prime_error=None): """ Correct a Z-array for wrong orientation of the sensors. Assume, E' is measured by sensors orientated with the angles E'x: a E'y: b - + Assume, B' is measured by sensors orientated with the angles B'x: c B'y: d - + With those data, one obtained the impedance tensor Z': E' = Z' * B' @@ -2046,18 +1775,18 @@ def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, E = T * E' B = U * B' - => T contains the expression of the E'-basis in terms of E - (the standard basis) - and U contains the expression of the B'-basis in terms of B + => T contains the expression of the E'-basis in terms of E + (the standard basis) + and U contains the expression of the B'-basis in terms of B (the standard basis) - The respective expressions for E'x-basis vector and E'y-basis + The respective expressions for E'x-basis vector and E'y-basis vector are the columns of T. The respective expressions for B'x-basis vector and B'y-basis vector are the columns of U. - We obtain the impedance tensor in default coordinates as: + We obtain the impedance tensor in default coordinates as: - E' = Z' * B' => T^(-1) * E = Z' * U^(-1) * B + E' = Z' * B' => T^(-1) * E = Z' * U^(-1) * B => E = T * Z' * U^(-1) * B => Z = T * Z' * U^(-1) @@ -2069,17 +1798,17 @@ def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, **Bx** : float (angle in degrees) orientation of Bx relative to geographic north (0) - *default* is 0 + *default* is 0 **By** : float (angle in degrees) orientation of By relative to geographic north (0) *default* is 90 **Ex** : float (angle in degrees) orientation of Ex relative to geographic north (0) - *default* is 0 + *default* is 0 **Ey** : float (angle in degrees) orientation of Ey relative to geographic north (0) *default* is 90 - + Z_prime_error : np.ndarray(Z_prime.shape) impedance tensor error (std) *default* is None @@ -2088,19 +1817,19 @@ def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, ------------- **Z** : np.ndarray(Z_prime.shape, dtype='complex') adjusted impedance tensor - + **Z_err** : np.ndarray(Z_prime.shape, dtype='real') - impedance tensor standard deviation in + impedance tensor standard deviation in default orientation - + """ try: if len(Z_prime.shape) != 2: raise - if Z_prime.shape != (2,2): + if Z_prime.shape != (2, 2): raise - + if Z_prime.dtype not in ['complex', 'float', 'int']: raise @@ -2114,10 +1843,10 @@ def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, try: if len(Z_prime_error.shape) != 2: raise - if Z_prime_error.shape != (2,2): + if Z_prime_error.shape != (2, 2): raise - - if Z_prime_error.dtype not in [ 'float', 'int']: + + if Z_prime_error.dtype not in ['float', 'int']: raise except: @@ -2125,33 +1854,34 @@ def correct4sensor_orientation(Z_prime, Bx=0, By=90, Ex=0, Ey=90, 'valid! Must be 2x2 real array') - T = np.matrix(np.zeros((2,2))) - U = np.matrix(np.zeros((2,2))) + T = np.matrix(np.zeros((2, 2))) + U = np.matrix(np.zeros((2, 2))) - dummy1 = cmath.rect(1,math.radians(Ex)) + dummy1 = cmath.rect(1, math.radians(Ex)) - T[0,0] = np.real(dummy1) - T[1,0] = np.imag(dummy1) - dummy2 = cmath.rect(1,math.radians(Ey)) - T[0,1] = np.real(dummy2) - T[1,1] = np.imag(dummy2) + T[0, 0] = np.real(dummy1) + T[1, 0] = np.imag(dummy1) + dummy2 = cmath.rect(1, math.radians(Ey)) + T[0, 1] = np.real(dummy2) + T[1, 1] = np.imag(dummy2) - dummy3 = cmath.rect(1,math.radians(Bx)) - U[0,0] = np.real(dummy3) - U[1,0] = np.imag(dummy3) - dummy4 = cmath.rect(1,math.radians(By)) - U[0,1] = np.real(dummy4) - U[1,1] = np.imag(dummy4) + dummy3 = cmath.rect(1, math.radians(Bx)) + U[0, 0] = np.real(dummy3) + U[1, 0] = np.imag(dummy3) + dummy4 = cmath.rect(1, math.radians(By)) + U[0, 1] = np.real(dummy4) + U[1, 1] = np.imag(dummy4) try: - Z = np.array(np.dot(T,np.dot(Z_prime, U.I))) + z_arr = np.array(np.dot(T, np.dot(Z_prime, U.I))) except: raise MTex.MTpyError_inputarguments("ERROR - Given angles do not"+\ "define basis for 2 dimensions - cannot convert Z'") - Zerr = copy.copy(Z_prime_error) + z_err_arr = copy.copy(Z_prime_error) #TODO: calculate error propagation - return Z, Zerr + return z_arr, z_err_arr + \ No newline at end of file From 467d0d7fa92a59b9f36b569af89b3fe6bff87753 Mon Sep 17 00:00:00 2001 From: JP Date: Fri, 3 Jun 2016 09:06:19 -0700 Subject: [PATCH 122/124] Added example .edi files for testing and plotting. --- examples/data/NEConductor/par00.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par01.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par010.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par01ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par02.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par02ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par03.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par03ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par04.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par04ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par05ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par06.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par06ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par07.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par07ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par08.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par08ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par09.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par09ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par10.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par100.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par101.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1010.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par102.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par103.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par104.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par106.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par107.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par108.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par109.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par10ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par11.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par110.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1101.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1102.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1103.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1104.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1105.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1106.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1107.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1108.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1109.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1110.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1111.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1112.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1113.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1114.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1115.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1116.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1117_0.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1117_1.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1118.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1119.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par11ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par12.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1201.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1202.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1203.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1204.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1205.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1206.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1207.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1208.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1209.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1210.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1211.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1212.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1213.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1214.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1215_0.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1215_1.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1216.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1217.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1218.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par1219.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par12ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par13.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par13ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par14.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par14ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par15ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par16.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par16ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par17.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par17ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par18.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par18ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par19.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par19ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par20.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par20ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par21.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par210.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par21ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par22.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par22ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par23.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par23ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par24.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par24ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par25ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par26.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par26ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par27.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par27ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par28.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par28ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par29.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par29ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par30.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par30ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par31.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par310.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par31ew.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par32.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par33.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par34.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par36.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par37.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par38.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par39.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par40.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par41.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par410.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par42.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par43.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par44.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par46.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par47.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par48.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par49.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par50.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par51.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par510.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par52.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par53.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par54.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par56.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par57.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par58.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par59.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par60.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par61.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par610.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par62.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par63.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par64.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par66.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par67.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par68.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par69.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par70.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par71.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par710.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par72.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par73.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par74.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par76.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par77.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par78.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par79.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par80.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par81.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par810.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par82.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par83.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par84.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par86.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par87.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par88.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par89.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par90.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par91.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par910.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par92.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par93.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par94.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par96.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par97.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par98.edi | 126 ++++++++++++++++++++++++ examples/data/NEConductor/par99.edi | 126 ++++++++++++++++++++++++ 181 files changed, 22806 insertions(+) create mode 100644 examples/data/NEConductor/par00.edi create mode 100644 examples/data/NEConductor/par01.edi create mode 100644 examples/data/NEConductor/par010.edi create mode 100644 examples/data/NEConductor/par01ew.edi create mode 100644 examples/data/NEConductor/par02.edi create mode 100644 examples/data/NEConductor/par02ew.edi create mode 100644 examples/data/NEConductor/par03.edi create mode 100644 examples/data/NEConductor/par03ew.edi create mode 100644 examples/data/NEConductor/par04.edi create mode 100644 examples/data/NEConductor/par04ew.edi create mode 100644 examples/data/NEConductor/par05ew.edi create mode 100644 examples/data/NEConductor/par06.edi create mode 100644 examples/data/NEConductor/par06ew.edi create mode 100644 examples/data/NEConductor/par07.edi create mode 100644 examples/data/NEConductor/par07ew.edi create mode 100644 examples/data/NEConductor/par08.edi create mode 100644 examples/data/NEConductor/par08ew.edi create mode 100644 examples/data/NEConductor/par09.edi create mode 100644 examples/data/NEConductor/par09ew.edi create mode 100644 examples/data/NEConductor/par10.edi create mode 100644 examples/data/NEConductor/par100.edi create mode 100644 examples/data/NEConductor/par101.edi create mode 100644 examples/data/NEConductor/par1010.edi create mode 100644 examples/data/NEConductor/par102.edi create mode 100644 examples/data/NEConductor/par103.edi create mode 100644 examples/data/NEConductor/par104.edi create mode 100644 examples/data/NEConductor/par106.edi create mode 100644 examples/data/NEConductor/par107.edi create mode 100644 examples/data/NEConductor/par108.edi create mode 100644 examples/data/NEConductor/par109.edi create mode 100644 examples/data/NEConductor/par10ew.edi create mode 100644 examples/data/NEConductor/par11.edi create mode 100644 examples/data/NEConductor/par110.edi create mode 100644 examples/data/NEConductor/par1101.edi create mode 100644 examples/data/NEConductor/par1102.edi create mode 100644 examples/data/NEConductor/par1103.edi create mode 100644 examples/data/NEConductor/par1104.edi create mode 100644 examples/data/NEConductor/par1105.edi create mode 100644 examples/data/NEConductor/par1106.edi create mode 100644 examples/data/NEConductor/par1107.edi create mode 100644 examples/data/NEConductor/par1108.edi create mode 100644 examples/data/NEConductor/par1109.edi create mode 100644 examples/data/NEConductor/par1110.edi create mode 100644 examples/data/NEConductor/par1111.edi create mode 100644 examples/data/NEConductor/par1112.edi create mode 100644 examples/data/NEConductor/par1113.edi create mode 100644 examples/data/NEConductor/par1114.edi create mode 100644 examples/data/NEConductor/par1115.edi create mode 100644 examples/data/NEConductor/par1116.edi create mode 100644 examples/data/NEConductor/par1117_0.edi create mode 100644 examples/data/NEConductor/par1117_1.edi create mode 100644 examples/data/NEConductor/par1118.edi create mode 100644 examples/data/NEConductor/par1119.edi create mode 100644 examples/data/NEConductor/par11ew.edi create mode 100644 examples/data/NEConductor/par12.edi create mode 100644 examples/data/NEConductor/par1201.edi create mode 100644 examples/data/NEConductor/par1202.edi create mode 100644 examples/data/NEConductor/par1203.edi create mode 100644 examples/data/NEConductor/par1204.edi create mode 100644 examples/data/NEConductor/par1205.edi create mode 100644 examples/data/NEConductor/par1206.edi create mode 100644 examples/data/NEConductor/par1207.edi create mode 100644 examples/data/NEConductor/par1208.edi create mode 100644 examples/data/NEConductor/par1209.edi create mode 100644 examples/data/NEConductor/par1210.edi create mode 100644 examples/data/NEConductor/par1211.edi create mode 100644 examples/data/NEConductor/par1212.edi create mode 100644 examples/data/NEConductor/par1213.edi create mode 100644 examples/data/NEConductor/par1214.edi create mode 100644 examples/data/NEConductor/par1215_0.edi create mode 100644 examples/data/NEConductor/par1215_1.edi create mode 100644 examples/data/NEConductor/par1216.edi create mode 100644 examples/data/NEConductor/par1217.edi create mode 100644 examples/data/NEConductor/par1218.edi create mode 100644 examples/data/NEConductor/par1219.edi create mode 100644 examples/data/NEConductor/par12ew.edi create mode 100644 examples/data/NEConductor/par13.edi create mode 100644 examples/data/NEConductor/par13ew.edi create mode 100644 examples/data/NEConductor/par14.edi create mode 100644 examples/data/NEConductor/par14ew.edi create mode 100644 examples/data/NEConductor/par15ew.edi create mode 100644 examples/data/NEConductor/par16.edi create mode 100644 examples/data/NEConductor/par16ew.edi create mode 100644 examples/data/NEConductor/par17.edi create mode 100644 examples/data/NEConductor/par17ew.edi create mode 100644 examples/data/NEConductor/par18.edi create mode 100644 examples/data/NEConductor/par18ew.edi create mode 100644 examples/data/NEConductor/par19.edi create mode 100644 examples/data/NEConductor/par19ew.edi create mode 100644 examples/data/NEConductor/par20.edi create mode 100644 examples/data/NEConductor/par20ew.edi create mode 100644 examples/data/NEConductor/par21.edi create mode 100644 examples/data/NEConductor/par210.edi create mode 100644 examples/data/NEConductor/par21ew.edi create mode 100644 examples/data/NEConductor/par22.edi create mode 100644 examples/data/NEConductor/par22ew.edi create mode 100644 examples/data/NEConductor/par23.edi create mode 100644 examples/data/NEConductor/par23ew.edi create mode 100644 examples/data/NEConductor/par24.edi create mode 100644 examples/data/NEConductor/par24ew.edi create mode 100644 examples/data/NEConductor/par25ew.edi create mode 100644 examples/data/NEConductor/par26.edi create mode 100644 examples/data/NEConductor/par26ew.edi create mode 100644 examples/data/NEConductor/par27.edi create mode 100644 examples/data/NEConductor/par27ew.edi create mode 100644 examples/data/NEConductor/par28.edi create mode 100644 examples/data/NEConductor/par28ew.edi create mode 100644 examples/data/NEConductor/par29.edi create mode 100644 examples/data/NEConductor/par29ew.edi create mode 100644 examples/data/NEConductor/par30.edi create mode 100644 examples/data/NEConductor/par30ew.edi create mode 100644 examples/data/NEConductor/par31.edi create mode 100644 examples/data/NEConductor/par310.edi create mode 100644 examples/data/NEConductor/par31ew.edi create mode 100644 examples/data/NEConductor/par32.edi create mode 100644 examples/data/NEConductor/par33.edi create mode 100644 examples/data/NEConductor/par34.edi create mode 100644 examples/data/NEConductor/par36.edi create mode 100644 examples/data/NEConductor/par37.edi create mode 100644 examples/data/NEConductor/par38.edi create mode 100644 examples/data/NEConductor/par39.edi create mode 100644 examples/data/NEConductor/par40.edi create mode 100644 examples/data/NEConductor/par41.edi create mode 100644 examples/data/NEConductor/par410.edi create mode 100644 examples/data/NEConductor/par42.edi create mode 100644 examples/data/NEConductor/par43.edi create mode 100644 examples/data/NEConductor/par44.edi create mode 100644 examples/data/NEConductor/par46.edi create mode 100644 examples/data/NEConductor/par47.edi create mode 100644 examples/data/NEConductor/par48.edi create mode 100644 examples/data/NEConductor/par49.edi create mode 100644 examples/data/NEConductor/par50.edi create mode 100644 examples/data/NEConductor/par51.edi create mode 100644 examples/data/NEConductor/par510.edi create mode 100644 examples/data/NEConductor/par52.edi create mode 100644 examples/data/NEConductor/par53.edi create mode 100644 examples/data/NEConductor/par54.edi create mode 100644 examples/data/NEConductor/par56.edi create mode 100644 examples/data/NEConductor/par57.edi create mode 100644 examples/data/NEConductor/par58.edi create mode 100644 examples/data/NEConductor/par59.edi create mode 100644 examples/data/NEConductor/par60.edi create mode 100644 examples/data/NEConductor/par61.edi create mode 100644 examples/data/NEConductor/par610.edi create mode 100644 examples/data/NEConductor/par62.edi create mode 100644 examples/data/NEConductor/par63.edi create mode 100644 examples/data/NEConductor/par64.edi create mode 100644 examples/data/NEConductor/par66.edi create mode 100644 examples/data/NEConductor/par67.edi create mode 100644 examples/data/NEConductor/par68.edi create mode 100644 examples/data/NEConductor/par69.edi create mode 100644 examples/data/NEConductor/par70.edi create mode 100644 examples/data/NEConductor/par71.edi create mode 100644 examples/data/NEConductor/par710.edi create mode 100644 examples/data/NEConductor/par72.edi create mode 100644 examples/data/NEConductor/par73.edi create mode 100644 examples/data/NEConductor/par74.edi create mode 100644 examples/data/NEConductor/par76.edi create mode 100644 examples/data/NEConductor/par77.edi create mode 100644 examples/data/NEConductor/par78.edi create mode 100644 examples/data/NEConductor/par79.edi create mode 100644 examples/data/NEConductor/par80.edi create mode 100644 examples/data/NEConductor/par81.edi create mode 100644 examples/data/NEConductor/par810.edi create mode 100644 examples/data/NEConductor/par82.edi create mode 100644 examples/data/NEConductor/par83.edi create mode 100644 examples/data/NEConductor/par84.edi create mode 100644 examples/data/NEConductor/par86.edi create mode 100644 examples/data/NEConductor/par87.edi create mode 100644 examples/data/NEConductor/par88.edi create mode 100644 examples/data/NEConductor/par89.edi create mode 100644 examples/data/NEConductor/par90.edi create mode 100644 examples/data/NEConductor/par91.edi create mode 100644 examples/data/NEConductor/par910.edi create mode 100644 examples/data/NEConductor/par92.edi create mode 100644 examples/data/NEConductor/par93.edi create mode 100644 examples/data/NEConductor/par94.edi create mode 100644 examples/data/NEConductor/par96.edi create mode 100644 examples/data/NEConductor/par97.edi create mode 100644 examples/data/NEConductor/par98.edi create mode 100644 examples/data/NEConductor/par99.edi diff --git a/examples/data/NEConductor/par00.edi b/examples/data/NEConductor/par00.edi new file mode 100644 index 00000000..fd5c5b75 --- /dev/null +++ b/examples/data/NEConductor/par00.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par00" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par00" +REFLAT=-30:14:06.4266 +REFLONG=139:42:08.1068 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par00" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.493203e-02 5.975136e-05 1.931789e-05 3.360167e-07 -2.659985e-07 3.002248e-05 +-6.444653e-04 1.654296e-03 -7.720626e-04 -3.039426e-03 -3.120904e-03 -2.332059e-03 +-1.489406e-03 -8.808659e-04 +>ZXXI ROT=ZROT //14 +-2.335461e-03 2.152923e-05 5.032633e-06 -4.170725e-07 -2.625865e-07 -5.950210e-05 +-2.295596e-04 1.484689e-04 2.582432e-03 1.231889e-03 -2.437718e-04 -8.586662e-04 +-8.682712e-04 -6.485850e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865474e+02 1.241414e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317112e+01 + 8.357729e+00 6.602542e+00 5.481418e+00 4.280404e+00 3.016859e+00 1.928702e+00 + 1.149144e+00 6.607711e-01 +>ZXYI ROT=ZROT //14 + 3.081975e+02 1.471561e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271862e+01 + 6.029344e+00 2.956462e+00 2.000672e+00 1.767585e+00 1.579426e+00 1.254442e+00 + 8.822606e-01 5.643091e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866494e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317112e+01 +-8.357700e+00 -6.602927e+00 -5.480658e+00 -4.278979e+00 -3.015538e+00 -1.927747e+00 +-1.148543e+00 -6.604171e-01 +>ZYXI ROT=ZROT //14 +-3.082579e+02 -1.471581e+02 -7.805621e+01 -4.294172e+01 -2.400292e+01 -1.271861e+01 +-6.029268e+00 -2.956928e+00 -2.001644e+00 -1.767903e+00 -1.579216e+00 -1.254045e+00 +-8.818917e-01 -5.640417e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.782099e-03 -2.700954e-05 -7.027211e-07 3.696046e-07 4.502699e-08 -2.816561e-05 + 6.409560e-04 -1.612548e-03 6.687873e-04 2.912439e-03 3.003137e-03 2.243194e-03 + 1.431784e-03 8.464829e-04 +>ZYYI ROT=ZROT //14 + 3.563280e-04 -7.712449e-06 -1.035588e-07 -1.182903e-07 3.075653e-07 5.936723e-05 + 2.086742e-04 -6.888573e-05 -2.507459e-03 -1.215511e-03 2.255442e-04 8.244024e-04 + 8.347766e-04 6.234837e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.797693e-02 2.332932e-04 -3.200248e-05 -7.144650e-07 1.358417e-08 -2.804791e-06 + 7.473648e-05 7.012304e-05 -5.457032e-04 -5.879528e-04 -4.208767e-04 -2.661293e-04 +-1.574338e-04 -9.029429e-05 +>TXI.EXP //14 +-1.287037e-03 -4.262767e-05 4.788844e-07 1.184167e-06 1.616976e-08 3.576570e-06 +-5.038189e-05 3.859632e-04 3.228825e-04 -4.317116e-05 -1.620768e-04 -1.572555e-04 +-1.166618e-04 -7.595473e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.611007e-03 5.966931e-04 1.207712e-05 -7.044225e-07 -1.279080e-08 -2.424668e-06 + 6.081703e-05 5.498227e-05 -4.406999e-04 -4.687833e-04 -3.324683e-04 -2.095152e-04 +-1.238298e-04 -7.094485e-05 +>TYI.EXP //14 +-3.364314e-04 -7.187001e-05 -4.783290e-06 -7.034070e-07 -6.525778e-09 2.916657e-06 +-4.005424e-05 3.106937e-04 2.571084e-04 -3.890756e-05 -1.306993e-04 -1.249606e-04 +-9.215855e-05 -5.978144e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par01.edi b/examples/data/NEConductor/par01.edi new file mode 100644 index 00000000..86aeafb2 --- /dev/null +++ b/examples/data/NEConductor/par01.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par01" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par01" +REFLAT=-30:13:50.1871 +REFLONG=139:42:08.3202 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par01" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.433466e-02 9.246364e-05 1.842830e-05 3.343768e-07 -1.954291e-07 5.514276e-05 +-8.424640e-04 1.828447e-03 -3.432820e-04 -2.595903e-03 -2.778864e-03 -2.105458e-03 +-1.352389e-03 -8.016209e-04 +>ZXXI ROT=ZROT //14 +-2.470457e-03 3.243566e-05 4.944799e-06 -4.170273e-07 -4.694835e-07 -7.253697e-05 +-2.998308e-04 -1.707558e-04 2.428851e-03 1.263827e-03 -1.277301e-04 -7.358356e-04 +-7.721111e-04 -5.840710e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865462e+02 1.241414e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317094e+01 + 8.358804e+00 6.601043e+00 5.478938e+00 4.278090e+00 3.015111e+00 1.927554e+00 + 1.148454e+00 6.603728e-01 +>ZXYI ROT=ZROT //14 + 3.082005e+02 1.471561e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271853e+01 + 6.030169e+00 2.958268e+00 2.001176e+00 1.767273e+00 1.578776e+00 1.253795e+00 + 8.817660e-01 5.639810e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866347e+02 -1.241503e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317096e+01 +-8.358502e+00 -6.601385e+00 -5.479524e+00 -4.278474e+00 -3.015325e+00 -1.927668e+00 +-1.148514e+00 -6.604057e-01 +>ZYXI ROT=ZROT //14 +-3.082471e+02 -1.471573e+02 -7.805624e+01 -4.294172e+01 -2.400292e+01 -1.271851e+01 +-6.030138e+00 -2.957755e+00 -2.001168e+00 -1.767442e+00 -1.578932e+00 -1.253899e+00 +-8.818269e-01 -5.640150e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.366527e-03 -2.764924e-05 -6.379985e-07 3.381708e-07 -4.905079e-08 -4.833583e-05 + 7.626681e-04 -1.792942e-03 5.998798e-04 2.938948e-03 3.061526e-03 2.297203e-03 + 1.469495e-03 8.695879e-04 +>ZYYI ROT=ZROT //14 + 3.235441e-04 -7.886165e-06 -1.323085e-07 -1.121007e-07 4.524319e-07 6.901260e-05 + 3.014877e-04 -2.349763e-05 -2.601365e-03 -1.283315e-03 2.035218e-04 8.312456e-04 + 8.509308e-04 6.381824e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.684472e-02 1.879441e-04 -3.160404e-05 -8.476651e-07 6.913994e-09 -3.668195e-06 + 8.092402e-05 4.519887e-05 -5.255537e-04 -5.417220e-04 -3.826963e-04 -2.409901e-04 +-1.423639e-04 -8.161594e-05 +>TXI.EXP //14 +-1.144652e-03 -3.591946e-05 4.924736e-07 1.276945e-06 1.617362e-08 3.412839e-06 +-4.388821e-05 3.786306e-04 2.838867e-04 -5.240309e-05 -1.528869e-04 -1.445648e-04 +-1.062870e-04 -6.892872e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.579664e-03 5.966949e-04 1.207535e-05 -7.074412e-07 -1.952665e-08 -3.779173e-06 + 8.419727e-05 5.023991e-05 -5.539068e-04 -5.737490e-04 -4.048040e-04 -2.548544e-04 +-1.506006e-04 -8.628368e-05 +>TYI.EXP //14 +-3.419694e-04 -7.184448e-05 -4.779738e-06 -7.003798e-07 -7.022213e-09 3.652782e-06 +-4.727103e-05 3.973485e-04 3.036168e-04 -5.501901e-05 -1.618356e-04 -1.529118e-04 +-1.123799e-04 -7.281029e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par010.edi b/examples/data/NEConductor/par010.edi new file mode 100644 index 00000000..7fabfa54 --- /dev/null +++ b/examples/data/NEConductor/par010.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par010" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par010" +REFLAT=-30:11:24.0307 +REFLONG=139:42:10.2379 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par010" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.368895e-03 3.895611e-04 7.566856e-06 2.400888e-07 2.032087e-06 3.319034e-04 +-3.319465e-03 2.971840e-03 9.095717e-03 9.083803e-03 6.935309e-03 4.595379e-03 + 2.782890e-03 1.610949e-03 +>ZXXI ROT=ZROT //14 +-1.870580e-03 1.295579e-04 1.357597e-06 -2.704596e-07 2.394011e-07 -6.880431e-05 +-6.908837e-04 -7.132467e-03 -3.183681e-03 7.838353e-04 2.400539e-03 2.499703e-03 + 1.952351e-03 1.310235e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865461e+02 1.241416e+02 7.346939e+01 4.197591e+01 2.350537e+01 1.317044e+01 + 8.362021e+00 6.597166e+00 5.470299e+00 4.269262e+00 3.008173e+00 1.922889e+00 + 1.145609e+00 6.587219e-01 +>ZXYI ROT=ZROT //14 + 3.082042e+02 1.471562e+02 7.805627e+01 4.294175e+01 2.400291e+01 1.271831e+01 + 6.032249e+00 2.964596e+00 2.003954e+00 1.766659e+00 1.576522e+00 1.251341e+00 + 8.798084e-01 5.626531e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865631e+02 -1.241464e+02 -7.346938e+01 -4.197591e+01 -2.350537e+01 -1.317059e+01 +-8.360751e+00 -6.597926e+00 -5.474970e+00 -4.274725e+00 -3.012656e+00 -1.925973e+00 +-1.147512e+00 -6.598322e-01 +>ZYXI ROT=ZROT //14 +-3.081989e+02 -1.471559e+02 -7.805637e+01 -4.294174e+01 -2.400291e+01 -1.271833e+01 +-6.032007e+00 -2.961092e+00 -2.001485e+00 -1.766581e+00 -1.577747e+00 -1.252850e+00 +-8.810679e-01 -5.635266e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.240095e-03 -6.124292e-05 1.532867e-07 2.443494e-07 -1.045346e-06 -2.913730e-04 + 3.178396e-03 -2.861549e-03 -8.382102e-03 -8.171877e-03 -6.136157e-03 -4.020573e-03 +-2.419516e-03 -1.396671e-03 +>ZYYI ROT=ZROT //14 + 1.996998e-04 -1.727175e-05 -1.731625e-07 -1.333656e-07 2.492631e-07 9.670715e-05 + 5.568419e-04 6.640195e-03 2.752367e-03 -8.542149e-04 -2.230013e-03 -2.248451e-03 +-1.726642e-03 -1.147802e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.213414e-03 -5.145321e-04 -3.662855e-05 5.282304e-07 4.837284e-08 5.694107e-06 +-1.383318e-04 -4.370492e-05 8.079316e-04 8.525344e-04 6.159284e-04 3.924433e-04 + 2.331020e-04 1.338033e-04 +>TXI.EXP //14 + 1.614715e-04 6.335197e-05 1.237907e-05 3.753877e-07 -2.547447e-08 -6.075409e-06 + 7.035830e-05 -5.965988e-04 -4.380545e-04 6.691210e-05 2.341297e-04 2.290979e-04 + 1.712107e-04 1.119607e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.356541e-03 5.976751e-04 1.207009e-05 -7.240012e-07 -4.409214e-08 -8.679377e-06 + 1.928571e-04 5.346180e-05 -1.111232e-03 -1.165159e-03 -8.393736e-04 -5.341351e-04 +-3.170676e-04 -1.819985e-04 +>TYI.EXP //14 +-3.798457e-04 -7.180076e-05 -4.757041e-06 -6.827299e-07 6.829207e-10 8.174254e-06 +-9.379572e-05 8.213973e-04 5.946826e-04 -9.598750e-05 -3.215330e-04 -3.129325e-04 +-2.333641e-04 -1.524007e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par01ew.edi b/examples/data/NEConductor/par01ew.edi new file mode 100644 index 00000000..96c71cd1 --- /dev/null +++ b/examples/data/NEConductor/par01ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par01ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par01ew" +REFLAT=-30:12:44.1375 +REFLONG=139:38:44.2282 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par01ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.727004e-02 5.986271e-04 1.069579e-04 2.043161e-06 -7.785840e-08 -6.456230e-06 +-1.169332e-04 -8.525341e-05 9.229597e-04 7.908947e-04 4.888797e-04 2.973444e-04 + 1.764859e-04 1.018542e-04 +>ZXXI ROT=ZROT //14 +-1.732601e-03 4.226252e-04 4.055823e-05 -2.630247e-06 -1.408078e-07 -5.302447e-06 + 1.660911e-04 -7.273717e-04 -3.846806e-04 1.834605e-04 2.537554e-04 1.980559e-04 + 1.363974e-04 8.686757e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865093e+02 1.241739e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.317169e+01 + 8.353232e+00 6.609966e+00 5.487221e+00 4.281733e+00 3.016656e+00 1.928149e+00 + 1.148676e+00 6.604666e-01 +>ZXYI ROT=ZROT //14 + 3.082494e+02 1.471690e+02 7.805612e+01 4.294173e+01 2.400291e+01 1.271861e+01 + 6.026951e+00 2.951004e+00 2.003983e+00 1.770464e+00 1.580771e+00 1.254831e+00 + 8.822344e-01 5.641790e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865683e+02 -1.241456e+02 -7.346919e+01 -4.197589e+01 -2.350538e+01 -1.317168e+01 +-8.353168e+00 -6.608418e+00 -5.490069e+00 -4.287495e+00 -3.021897e+00 -1.931893e+00 +-1.151026e+00 -6.618476e-01 +>ZYXI ROT=ZROT //14 +-3.082079e+02 -1.471545e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271861e+01 +-6.027220e+00 -2.949507e+00 -1.999884e+00 -1.769178e+00 -1.581660e+00 -1.256423e+00 +-8.836911e-01 -5.652282e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.702238e-04 2.037270e-04 1.203923e-06 1.660124e-07 -2.172915e-08 4.287438e-06 + 9.839715e-05 -3.090087e-04 -1.807904e-04 7.107928e-04 9.013308e-04 7.074851e-04 + 4.581484e-04 2.720629e-04 +>ZYYI ROT=ZROT //14 + 3.621530e-04 6.322090e-05 -3.671460e-07 -1.757165e-07 -7.619743e-08 2.729715e-06 +-8.542197e-05 3.085775e-04 -6.668784e-04 -5.359314e-04 -3.595611e-05 2.172924e-04 + 2.509630e-04 1.946687e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.336521e-02 -1.237845e-04 -4.030187e-05 -7.264051e-07 1.341433e-08 -8.079588e-08 + 1.466279e-06 -2.616711e-05 3.742032e-05 9.045406e-05 7.670951e-05 5.044867e-05 + 3.016520e-05 1.730627e-05 +>TXI.EXP //14 +-7.096321e-04 7.415644e-06 5.848398e-06 1.320969e-06 5.446832e-09 2.230583e-08 + 3.679522e-06 -1.661825e-05 -6.698220e-05 -1.946295e-05 1.801323e-05 2.550293e-05 + 2.082028e-05 1.406135e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 2.200688e-02 5.572494e-04 -5.990868e-06 4.795883e-07 -4.799523e-09 4.729143e-07 +-9.335815e-07 1.425319e-04 -2.483314e-04 -4.925494e-04 -3.985918e-04 -2.584858e-04 +-1.537164e-04 -8.820902e-05 +>TYI.EXP //14 +-3.078520e-03 -4.600117e-05 3.994257e-06 5.059972e-07 1.267122e-08 3.052591e-07 +-2.357700e-05 1.154084e-04 3.616118e-04 7.527811e-05 -1.073125e-04 -1.363116e-04 +-1.083866e-04 -7.237938e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par02.edi b/examples/data/NEConductor/par02.edi new file mode 100644 index 00000000..0366eab9 --- /dev/null +++ b/examples/data/NEConductor/par02.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par02" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par02" +REFLAT=-30:13:33.9475 +REFLONG=139:42:08.5334 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par02" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.364136e-02 1.264935e-04 1.748092e-05 3.337337e-07 -4.033454e-08 9.087151e-05 +-1.115591e-03 2.048362e-03 3.689311e-04 -1.812220e-03 -2.155933e-03 -1.685718e-03 +-1.096377e-03 -6.530028e-04 +>ZXXI ROT=ZROT //14 +-2.550224e-03 4.342224e-05 4.763367e-06 -4.139598e-07 -6.702260e-07 -8.334053e-05 +-3.898881e-04 -7.002018e-04 2.119192e-03 1.286863e-03 6.369772e-05 -5.186994e-04 +-5.971043e-04 -4.649129e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865455e+02 1.241414e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317075e+01 + 8.359969e+00 6.599371e+00 5.476103e+00 4.275403e+00 3.013067e+00 1.926208e+00 + 1.147642e+00 6.599039e-01 +>ZXYI ROT=ZROT //14 + 3.082024e+02 1.471561e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271841e+01 + 6.031137e+00 2.960303e+00 2.001796e+00 1.766939e+00 1.578032e+00 1.253045e+00 + 8.811882e-01 5.635963e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866226e+02 -1.241491e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317081e+01 +-8.359279e+00 -6.599782e+00 -5.478386e+00 -4.277981e+00 -3.015126e+00 -1.927600e+00 +-1.148493e+00 -6.603984e-01 +>ZYXI ROT=ZROT //14 +-3.082378e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271839e+01 +-6.031113e+00 -2.958537e+00 -2.000665e+00 -1.766970e+00 -1.578645e+00 -1.253756e+00 +-8.817659e-01 -5.639912e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.008441e-03 -2.858356e-05 -5.827773e-07 3.091184e-07 -1.963725e-07 -7.566182e-05 + 9.275560e-04 -1.987713e-03 3.350134e-04 2.714535e-03 2.910441e-03 2.206896e-03 + 1.418263e-03 8.408400e-04 +>ZYYI ROT=ZROT //14 + 2.922137e-04 -8.159029e-06 -1.495233e-07 -1.050494e-07 5.836137e-07 7.653813e-05 + 4.068067e-04 1.618390e-04 -2.569260e-03 -1.337428e-03 1.278615e-04 7.684934e-04 + 8.084310e-04 6.121243e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.560486e-02 1.314548e-04 -3.164962e-05 -9.119653e-07 1.149162e-10 -4.198895e-06 + 7.963984e-05 2.150920e-05 -4.689083e-04 -4.628218e-04 -3.222090e-04 -2.018696e-04 +-1.190315e-04 -6.820082e-05 +>TXI.EXP //14 +-1.002351e-03 -2.757653e-05 9.797710e-07 1.315154e-06 1.485334e-08 2.882141e-06 +-3.414571e-05 3.427305e-04 2.307562e-04 -5.604669e-05 -1.338933e-04 -1.232046e-04 +-8.966101e-05 -5.787694e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.550496e-03 5.967115e-04 1.207407e-05 -7.101474e-07 -2.785847e-08 -5.523835e-06 + 1.122589e-04 4.092801e-05 -6.812133e-04 -6.901740e-04 -4.848606e-04 -3.050194e-04 +-1.802210e-04 -1.032556e-04 +>TYI.EXP //14 +-3.471318e-04 -7.182192e-05 -4.776424e-06 -6.976378e-07 -9.380290e-09 4.395556e-06 +-5.398851e-05 4.954028e-04 3.532152e-04 -7.382588e-05 -1.966115e-04 -1.839381e-04 +-1.347846e-04 -8.723622e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par02ew.edi b/examples/data/NEConductor/par02ew.edi new file mode 100644 index 00000000..880e3ff5 --- /dev/null +++ b/examples/data/NEConductor/par02ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par02ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par02ew" +REFLAT=-30:12:43.4401 +REFLONG=139:39:11.432 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par02ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.296258e-02 5.296627e-04 9.253325e-05 1.830864e-06 -2.932383e-08 -7.099460e-06 +-2.427456e-04 5.366630e-05 1.206832e-03 9.430275e-04 5.684351e-04 3.388590e-04 + 1.982228e-04 1.135865e-04 +>ZXXI ROT=ZROT //14 +-2.816130e-03 3.685850e-04 3.496454e-05 -2.206165e-06 -1.391609e-07 -1.400172e-05 + 2.081585e-04 -1.013361e-03 -3.640366e-04 2.718102e-04 3.199768e-04 2.390874e-04 + 1.596017e-04 9.947930e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864487e+02 1.241664e+02 7.346947e+01 4.197588e+01 2.350537e+01 1.317166e+01 + 8.353798e+00 6.609454e+00 5.485715e+00 4.280534e+00 3.015808e+00 1.927606e+00 + 1.148353e+00 6.602813e-01 +>ZXYI ROT=ZROT //14 + 3.082243e+02 1.471660e+02 7.805621e+01 4.294172e+01 2.400291e+01 1.271865e+01 + 6.026881e+00 2.952357e+00 2.004244e+00 1.770204e+00 1.580405e+00 1.254502e+00 + 8.819934e-01 5.640227e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865769e+02 -1.241459e+02 -7.346919e+01 -4.197589e+01 -2.350538e+01 -1.317166e+01 +-8.353590e+00 -6.607807e+00 -5.489578e+00 -4.287413e+00 -3.021945e+00 -1.931964e+00 +-1.151081e+00 -6.618826e-01 +>ZYXI ROT=ZROT //14 +-3.082112e+02 -1.471547e+02 -7.805627e+01 -4.294173e+01 -2.400292e+01 -1.271863e+01 +-6.027265e+00 -2.950051e+00 -1.999582e+00 -1.768924e+00 -1.581549e+00 -1.256398e+00 +-8.837022e-01 -5.652458e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.436183e-03 1.662883e-04 9.510044e-07 1.717303e-07 3.185831e-08 5.418393e-06 + 1.839840e-04 -4.703535e-04 -1.940595e-04 8.521092e-04 1.058405e-03 8.294100e-04 + 5.376857e-04 3.195518e-04 +>ZYYI ROT=ZROT //14 + 3.462628e-04 5.190356e-05 -4.456273e-07 -1.678192e-07 -7.442074e-08 8.305922e-06 +-9.319040e-05 3.740939e-04 -8.329936e-04 -6.218754e-04 -3.596238e-05 2.559811e-04 + 2.944250e-04 2.284451e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.274661e-02 -1.143232e-04 -3.816810e-05 -7.035877e-07 1.349921e-08 -1.458588e-07 + 9.806840e-07 -2.897063e-05 4.920224e-05 1.007148e-04 8.376208e-05 5.507033e-05 + 3.297434e-05 1.893525e-05 +>TXI.EXP //14 +-6.674926e-04 6.608018e-06 5.481257e-06 1.269209e-06 3.161427e-09 -1.169755e-08 + 5.621901e-06 -2.560586e-05 -7.249851e-05 -1.770598e-05 2.088965e-05 2.813901e-05 + 2.281941e-05 1.539177e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.776174e-02 7.892530e-04 -5.171618e-06 -9.374278e-08 -4.007075e-09 6.068774e-07 + 7.153471e-06 1.670476e-04 -3.571462e-04 -5.941191e-04 -4.674035e-04 -3.019261e-04 +-1.795487e-04 -1.030594e-04 +>TYI.EXP //14 +-2.486144e-03 -8.521277e-05 2.205584e-06 5.351505e-07 2.358576e-08 8.770635e-07 +-3.700948e-05 1.919461e-04 4.185353e-04 6.012659e-05 -1.367498e-04 -1.626844e-04 +-1.276356e-04 -8.487277e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par03.edi b/examples/data/NEConductor/par03.edi new file mode 100644 index 00000000..36e804e5 --- /dev/null +++ b/examples/data/NEConductor/par03.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par03" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par03" +REFLAT=-30:13:17.708 +REFLONG=139:42:08.7467 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par03" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.285658e-02 1.614604e-04 1.647981e-05 3.308376e-07 1.440905e-07 1.377258e-04 +-1.473563e-03 2.326017e-03 1.407473e-03 -6.365973e-04 -1.208721e-03 -1.042841e-03 +-7.028561e-04 -4.242138e-04 +>ZXXI ROT=ZROT //14 +-2.578881e-03 5.443426e-05 4.490007e-06 -4.052279e-07 -9.147407e-07 -8.922516e-05 +-5.059704e-04 -1.470970e-03 1.631660e-03 1.299399e-03 3.418321e-04 -1.927767e-04 +-3.310500e-04 -2.826288e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865452e+02 1.241415e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317056e+01 + 8.361157e+00 6.597625e+00 5.473073e+00 4.272496e+00 3.010844e+00 1.924738e+00 + 1.146754e+00 6.593907e-01 +>ZXYI ROT=ZROT //14 + 3.082034e+02 1.471561e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271827e+01 + 6.032182e+00 2.962456e+00 2.002499e+00 1.766602e+00 1.577236e+00 1.252234e+00 + 8.805597e-01 5.631766e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866124e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.317066e+01 +-8.359989e+00 -6.598227e+00 -5.477289e+00 -4.277494e+00 -3.014926e+00 -1.927527e+00 +-1.148468e+00 -6.603889e-01 +>ZYXI ROT=ZROT //14 +-3.082296e+02 -1.471559e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271825e+01 +-6.032116e+00 -2.959257e+00 -2.000184e+00 -1.766515e+00 -1.578367e+00 -1.253616e+00 +-8.817045e-01 -5.639665e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.707230e-03 -2.994399e-05 -5.323903e-07 2.831561e-07 -3.705961e-07 -1.108271e-04 + 1.153899e-03 -2.208142e-03 -2.042730e-04 2.142905e-03 2.469171e-03 1.916380e-03 + 1.243541e-03 7.400717e-04 +>ZYYI ROT=ZROT //14 + 2.629934e-04 -8.565803e-06 -1.584937e-07 -9.812802e-08 6.779208e-07 8.026594e-05 + 5.251305e-04 5.474646e-04 -2.366430e-03 -1.373718e-03 -2.207517e-05 6.093769e-04 + 6.846141e-04 5.295119e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.427430e-02 6.525000e-05 -3.216610e-05 -9.000864e-07 -1.001519e-08 -4.129241e-06 + 6.816052e-05 2.471240e-06 -3.691793e-04 -3.470881e-04 -2.369963e-04 -1.473578e-04 +-8.662749e-05 -4.959059e-05 +>TXI.EXP //14 +-8.601131e-04 -1.789877e-05 1.901721e-06 1.302899e-06 7.167426e-09 2.010206e-06 +-2.199594e-05 2.728524e-04 1.633732e-04 -5.223839e-05 -1.034978e-04 -9.207695e-05 +-6.608698e-05 -4.237968e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.523175e-03 5.967442e-04 1.207315e-05 -7.125752e-07 -3.730476e-08 -7.563001e-06 + 1.435098e-04 2.784271e-05 -8.164431e-04 -8.131863e-04 -5.695388e-04 -3.581291e-04 +-2.115939e-04 -1.212348e-04 +>TYI.EXP //14 +-3.519595e-04 -7.180270e-05 -4.773337e-06 -6.951493e-07 -1.368273e-08 5.093814e-06 +-5.985672e-05 5.999350e-04 4.041945e-04 -9.404108e-05 -2.334186e-04 -2.167627e-04 +-1.584992e-04 -1.025121e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par03ew.edi b/examples/data/NEConductor/par03ew.edi new file mode 100644 index 00000000..6d965486 --- /dev/null +++ b/examples/data/NEConductor/par03ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par03ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par03ew" +REFLAT=-30:12:44.6963 +REFLONG=139:39:38.6092 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par03ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.564682e-02 4.967579e-04 7.891629e-05 1.546482e-06 -7.595601e-09 -5.626220e-06 +-3.357390e-04 1.633320e-04 1.380162e-03 1.033868e-03 6.147914e-04 3.620991e-04 + 2.099661e-04 1.197975e-04 +>ZXXI ROT=ZROT //14 +-3.148490e-03 3.222292e-04 2.908363e-05 -1.865049e-06 -1.298579e-07 -2.083529e-05 + 2.224406e-04 -1.187171e-03 -3.420927e-04 3.279573e-04 3.611085e-04 2.639091e-04 + 1.731556e-04 1.065949e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864445e+02 1.241622e+02 7.346951e+01 4.197588e+01 2.350538e+01 1.317163e+01 + 8.354215e+00 6.609012e+00 5.484755e+00 4.279785e+00 3.015281e+00 1.927271e+00 + 1.148155e+00 6.601679e-01 +>ZXYI ROT=ZROT //14 + 3.082171e+02 1.471644e+02 7.805626e+01 4.294172e+01 2.400291e+01 1.271868e+01 + 6.026897e+00 2.953217e+00 2.004362e+00 1.770028e+00 1.580169e+00 1.254294e+00 + 8.818433e-01 5.639261e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865809e+02 -1.241460e+02 -7.346918e+01 -4.197589e+01 -2.350538e+01 -1.317164e+01 +-8.353891e+00 -6.607381e+00 -5.489211e+00 -4.287279e+00 -3.021906e+00 -1.931961e+00 +-1.151087e+00 -6.618876e-01 +>ZYXI ROT=ZROT //14 +-3.082125e+02 -1.471548e+02 -7.805627e+01 -4.294173e+01 -2.400292e+01 -1.271865e+01 +-6.027340e+00 -2.950416e+00 -1.999425e+00 -1.768769e+00 -1.581461e+00 -1.256360e+00 +-8.836896e-01 -5.652435e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.859148e-03 1.443726e-04 8.667449e-07 1.726986e-07 6.341173e-08 4.973104e-06 + 2.448912e-04 -5.745110e-04 -2.089019e-04 9.241238e-04 1.141560e-03 8.949293e-04 + 5.807102e-04 3.453081e-04 +>ZYYI ROT=ZROT //14 + 3.375883e-04 4.529865e-05 -4.536364e-07 -1.628252e-07 -5.058252e-08 1.295219e-05 +-8.924623e-05 4.134359e-04 -9.265295e-04 -6.717613e-04 -3.852330e-05 2.755814e-04 + 3.174209e-04 2.465639e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.247041e-02 -1.101146e-04 -3.726671e-05 -6.936094e-07 1.434967e-08 -1.871075e-07 + 4.900766e-07 -2.959219e-05 5.490624e-05 1.049668e-04 8.662062e-05 5.696708e-05 + 3.413751e-05 1.961231e-05 +>TXI.EXP //14 +-6.485354e-04 6.246767e-06 5.327729e-06 1.245907e-06 2.015471e-09 -4.266616e-08 + 6.736808e-06 -3.048490e-05 -7.427716e-05 -1.661899e-05 2.214220e-05 2.922729e-05 + 2.364216e-05 1.594165e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.541890e-02 8.643102e-04 -3.667151e-06 -4.685427e-07 5.364924e-10 5.861966e-07 + 1.448814e-05 1.761654e-04 -4.238227e-04 -6.520033e-04 -5.059870e-04 -3.261633e-04 +-1.939357e-04 -1.113250e-04 +>TYI.EXP //14 +-2.193728e-03 -9.833073e-05 9.891235e-07 5.360733e-07 2.688287e-08 1.346737e-06 +-4.538626e-05 2.420387e-04 4.473825e-04 4.923206e-05 -1.541412e-04 -1.777335e-04 +-1.384768e-04 -9.186887e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par04.edi b/examples/data/NEConductor/par04.edi new file mode 100644 index 00000000..12b57a5d --- /dev/null +++ b/examples/data/NEConductor/par04.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par04" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par04" +REFLAT=-30:13:01.4684 +REFLONG=139:42:08.9598 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par04" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.198531e-02 1.969012e-04 1.541826e-05 3.238707e-07 5.250634e-07 1.938147e-04 +-1.908286e-03 2.657176e-03 2.761771e-03 9.233916e-04 5.834206e-05 -1.792887e-04 +-1.731764e-04 -1.160009e-04 +>ZXXI ROT=ZROT //14 +-2.562376e-03 6.543766e-05 4.137105e-06 -3.903655e-07 -8.018752e-07 -8.807623e-05 +-6.475977e-04 -2.473865e-03 9.677618e-04 1.298737e-03 7.038327e-04 2.399150e-04 + 2.480429e-05 -3.794306e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865451e+02 1.241415e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317038e+01 + 8.362270e+00 6.595976e+00 5.470131e+00 4.269640e+00 3.008649e+00 1.923281e+00 + 1.145873e+00 6.588810e-01 +>ZXYI ROT=ZROT //14 + 3.082039e+02 1.471562e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271812e+01 + 6.033190e+00 2.964535e+00 2.003222e+00 1.766293e+00 1.576463e+00 1.251437e+00 + 8.799393e-01 5.627611e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866037e+02 -1.241472e+02 -7.346920e+01 -4.197589e+01 -2.350537e+01 -1.317053e+01 +-8.360597e+00 -6.596852e+00 -5.476281e+00 -4.277008e+00 -3.014699e+00 -1.927429e+00 +-1.148425e+00 -6.603679e-01 +>ZYXI ROT=ZROT //14 +-3.082227e+02 -1.471555e+02 -7.805625e+01 -4.294174e+01 -2.400291e+01 -1.271811e+01 +-6.033032e+00 -2.959900e+00 -1.999792e+00 -1.766119e+00 -1.578110e+00 -1.253476e+00 +-8.816366e-01 -5.639349e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.462876e-03 -3.181430e-05 -4.813774e-07 2.610712e-07 -5.301036e-07 -1.532773e-04 + 1.454119e-03 -2.460918e-03 -1.074463e-03 1.153641e-03 1.677939e-03 1.383914e-03 + 9.194088e-04 5.521217e-04 +>ZYYI ROT=ZROT //14 + 2.365431e-04 -9.119027e-06 -1.618230e-07 -9.245325e-08 5.523893e-07 7.904811e-05 + 6.539272e-04 1.177871e-03 -1.959601e-03 -1.388218e-03 -2.608631e-04 3.343280e-04 + 4.626829e-04 3.785541e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.286613e-02 -9.021378e-06 -3.309212e-05 -8.133161e-07 4.170144e-09 -3.263925e-06 + 4.515658e-05 -9.333128e-06 -2.248359e-04 -1.944677e-04 -1.273511e-04 -7.772270e-05 +-4.533020e-05 -2.589174e-05 +>TXI.EXP //14 +-7.177460e-04 -7.177339e-06 3.187557e-06 1.246255e-06 1.019693e-08 8.824484e-07 +-8.614948e-06 1.677054e-04 8.302751e-05 -4.008157e-05 -6.141202e-05 -5.117226e-05 +-3.563239e-05 -2.250380e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.497381e-03 5.967949e-04 1.207249e-05 -7.147540e-07 -4.786019e-08 -9.669680e-06 + 1.751380e-04 1.323507e-05 -9.495647e-04 -9.350447e-04 -6.539224e-04 -4.112002e-04 +-2.429790e-04 -1.392288e-04 +>TYI.EXP //14 +-3.564937e-04 -7.178727e-05 -4.770469e-06 -6.928925e-07 -1.852446e-08 5.727939e-06 +-6.489450e-05 7.030010e-04 4.542418e-04 -1.134835e-04 -2.696645e-04 -2.493477e-04 +-1.821338e-04 -1.177682e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par04ew.edi b/examples/data/NEConductor/par04ew.edi new file mode 100644 index 00000000..1af8bde6 --- /dev/null +++ b/examples/data/NEConductor/par04ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par04ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par04ew" +REFLAT=-30:12:43.9672 +REFLONG=139:40:03.0002 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par04ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.693239e-02 4.652289e-04 6.338655e-05 1.220027e-06 8.265056e-10 -1.769980e-06 +-4.548350e-04 3.083787e-04 1.579168e-03 1.137246e-03 6.667853e-04 3.874688e-04 + 2.224588e-04 1.263032e-04 +>ZXXI ROT=ZROT //14 +-3.317319e-03 2.693609e-04 2.227085e-05 -1.508198e-06 -1.184866e-07 -2.967735e-05 + 2.265961e-04 -1.383843e-03 -3.104849e-04 3.940187e-04 4.090103e-04 2.923928e-04 + 1.883734e-04 1.144017e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864554e+02 1.241581e+02 7.346952e+01 4.197588e+01 2.350538e+01 1.317159e+01 + 8.354752e+00 6.608397e+00 5.483620e+00 4.278909e+00 3.014668e+00 1.926884e+00 + 1.147927e+00 6.600375e-01 +>ZXYI ROT=ZROT //14 + 3.082124e+02 1.471629e+02 7.805628e+01 4.294172e+01 2.400291e+01 1.271870e+01 + 6.026983e+00 2.954221e+00 2.004464e+00 1.769809e+00 1.579888e+00 1.254051e+00 + 8.816687e-01 5.638144e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865842e+02 -1.241461e+02 -7.346918e+01 -4.197589e+01 -2.350538e+01 -1.317160e+01 +-8.354273e+00 -6.606843e+00 -5.488719e+00 -4.287045e+00 -3.021796e+00 -1.931913e+00 +-1.151066e+00 -6.618776e-01 +>ZYXI ROT=ZROT //14 +-3.082135e+02 -1.471549e+02 -7.805627e+01 -4.294173e+01 -2.400292e+01 -1.271867e+01 +-6.027476e+00 -2.950871e+00 -1.999271e+00 -1.768589e+00 -1.581341e+00 -1.256293e+00 +-8.836569e-01 -5.652283e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.246477e-03 1.215992e-04 7.902804e-07 1.764092e-07 9.102281e-08 3.032765e-06 + 3.216273e-04 -6.982686e-04 -2.351971e-04 9.914965e-04 1.223792e-03 9.609410e-04 + 6.243996e-04 3.715432e-04 +>ZYYI ROT=ZROT //14 + 3.287833e-04 3.840573e-05 -4.374478e-07 -1.583220e-07 -8.596793e-09 1.921083e-05 +-7.645194e-05 4.606365e-04 -1.025794e-03 -7.271849e-04 -4.445347e-05 2.938140e-04 + 3.401322e-04 2.647730e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.223873e-02 -1.063329e-04 -3.653285e-05 -6.857720e-07 1.562590e-08 -2.342100e-07 +-1.809366e-07 -2.947456e-05 5.988831e-05 1.080094e-04 8.858918e-05 5.830507e-05 + 3.497193e-05 2.010136e-05 +>TXI.EXP //14 +-6.322452e-04 5.907320e-06 5.197440e-06 1.226129e-06 1.089654e-09 -8.513415e-08 + 7.874759e-06 -3.519624e-05 -7.502863e-05 -1.543967e-05 2.310105e-05 2.999693e-05 + 2.422377e-05 1.633378e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.307044e-02 9.093307e-04 -1.672134e-06 -8.259954e-07 5.774758e-09 4.336640e-07 + 2.498755e-05 1.814740e-04 -4.993831e-04 -7.144023e-04 -5.470187e-04 -3.518219e-04 +-2.091413e-04 -1.200556e-04 +>TYI.EXP //14 +-1.914964e-03 -1.067227e-04 -2.917303e-07 5.043420e-07 2.747536e-08 1.972660e-06 +-5.467296e-05 3.009717e-04 4.755147e-04 3.561462e-05 -1.734127e-04 -1.939662e-04 +-1.500442e-04 -9.929705e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par05ew.edi b/examples/data/NEConductor/par05ew.edi new file mode 100644 index 00000000..bdcd1142 --- /dev/null +++ b/examples/data/NEConductor/par05ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par05ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par05ew" +REFLAT=-30:12:43.1893 +REFLONG=139:40:22.7032 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par05ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.937854e-02 4.366981e-04 4.968168e-05 9.440254e-07 -7.467912e-09 5.833309e-06 +-6.050675e-04 4.964318e-04 1.808510e-03 1.256156e-03 7.260058e-04 4.157065e-04 + 2.360411e-04 1.332723e-04 +>ZXXI ROT=ZROT //14 +-3.394898e-03 2.217008e-04 1.632417e-05 -1.207428e-06 -1.131544e-07 -4.060221e-05 + 2.143004e-04 -1.605137e-03 -2.678399e-04 4.717080e-04 4.650930e-04 3.254077e-04 + 2.057098e-04 1.231239e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864731e+02 1.241543e+02 7.346954e+01 4.197589e+01 2.350538e+01 1.317151e+01 + 8.355431e+00 6.607560e+00 5.482276e+00 4.277882e+00 3.013954e+00 1.926436e+00 + 1.147664e+00 6.598874e-01 +>ZXYI ROT=ZROT //14 + 3.082091e+02 1.471615e+02 7.805631e+01 4.294172e+01 2.400291e+01 1.271872e+01 + 6.027173e+00 2.955385e+00 2.004543e+00 1.769538e+00 1.579554e+00 1.253764e+00 + 8.814654e-01 5.636849e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865869e+02 -1.241462e+02 -7.346918e+01 -4.197589e+01 -2.350538e+01 -1.317154e+01 +-8.354753e+00 -6.606161e+00 -5.488057e+00 -4.286666e+00 -3.021583e+00 -1.931799e+00 +-1.151006e+00 -6.618452e-01 +>ZYXI ROT=ZROT //14 +-3.082142e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400292e+01 -1.271868e+01 +-6.027700e+00 -2.951445e+00 -1.999128e+00 -1.768377e+00 -1.581175e+00 -1.256185e+00 +-8.835947e-01 -5.651941e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.604827e-03 9.862179e-05 7.012057e-07 1.844466e-07 1.063144e-07 -1.405530e-06 + 4.178980e-04 -8.456318e-04 -2.808715e-04 1.046438e-03 1.299241e-03 1.023607e-03 + 6.664466e-04 3.969256e-04 +>ZYYI ROT=ZROT //14 + 3.188958e-04 3.143517e-05 -4.012820e-07 -1.542505e-07 5.189226e-08 2.728834e-05 +-5.099093e-05 5.206764e-04 -1.128493e-03 -7.890291e-04 -5.590512e-05 3.085224e-04 + 3.609076e-04 2.819765e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.205276e-02 -1.029719e-04 -3.596677e-05 -6.800124e-07 1.709378e-08 -2.879046e-07 +-9.922701e-07 -2.847393e-05 6.340846e-05 1.091187e-04 8.915485e-05 5.875824e-05 + 3.528387e-05 2.029114e-05 +>TXI.EXP //14 +-6.188628e-04 5.589116e-06 5.088936e-06 1.210045e-06 6.221312e-10 -1.396623e-07 + 8.935335e-06 -3.916374e-05 -7.437489e-05 -1.424536e-05 2.356335e-05 3.025513e-05 + 2.442163e-05 1.647470e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.078967e-02 9.255296e-04 6.215094e-07 -1.121805e-06 9.869135e-09 6.332045e-08 + 3.946862e-05 1.813596e-04 -5.837984e-04 -7.805612e-04 -5.898063e-04 -3.784226e-04 +-2.248719e-04 -1.290808e-04 +>TYI.EXP //14 +-1.653980e-03 -1.106627e-04 -1.532221e-06 4.320865e-07 2.597625e-08 2.767648e-06 +-6.443643e-05 3.689467e-04 5.018239e-04 1.891002e-05 -1.944888e-04 -2.111810e-04 +-1.621524e-04 -1.070247e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par06.edi b/examples/data/NEConductor/par06.edi new file mode 100644 index 00000000..9f41d8e6 --- /dev/null +++ b/examples/data/NEConductor/par06.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par06" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par06" +REFLAT=-30:12:28.9892 +REFLONG=139:42:09.386 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par06" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.000833e-02 2.670884e-04 1.306865e-05 3.004494e-07 9.414815e-07 3.087130e-04 +-2.845592e-03 3.320658e-03 5.966584e-03 4.712432e-03 3.167961e-03 1.951242e-03 + 1.137038e-03 6.472305e-04 +>ZXXI ROT=ZROT //14 +-2.421041e-03 8.732759e-05 3.271245e-06 -3.508233e-07 -4.460340e-07 -6.782005e-05 +-9.322366e-04 -4.840046e-03 -7.116291e-04 1.237871e-03 1.559595e-03 1.291105e-03 + 8.978566e-04 5.651756e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865453e+02 1.241415e+02 7.346939e+01 4.197591e+01 2.350537e+01 1.317015e+01 + 8.363765e+00 6.593865e+00 5.466025e+00 4.265555e+00 3.005475e+00 1.921162e+00 + 1.144586e+00 6.581353e-01 +>ZXYI ROT=ZROT //14 + 3.082043e+02 1.471562e+02 7.805628e+01 4.294175e+01 2.400290e+01 1.271792e+01 + 6.034463e+00 2.967454e+00 2.004368e+00 1.765925e+00 1.575387e+00 1.250299e+00 + 8.790430e-01 5.621570e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865889e+02 -1.241461e+02 -7.346915e+01 -4.197590e+01 -2.350537e+01 -1.317038e+01 +-8.361394e+00 -6.595216e+00 -5.474753e+00 -4.276002e+00 -3.014074e+00 -1.927066e+00 +-1.148221e+00 -6.602542e-01 +>ZYXI ROT=ZROT //14 +-3.082116e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271795e+01 +-6.034104e+00 -2.960912e+00 -1.999551e+00 -1.765675e+00 -1.577714e+00 -1.253192e+00 +-8.814561e-01 -5.638278e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.151157e-03 -3.757559e-05 -3.608066e-07 2.293404e-07 -8.564409e-07 -2.459602e-04 + 2.234333e-03 -2.997728e-03 -3.717556e-03 -1.995510e-03 -8.974589e-04 -3.725976e-04 +-1.576311e-04 -7.441249e-05 +>ZYYI ROT=ZROT //14 + 1.939902e-04 -1.077593e-05 -1.597329e-07 -8.706837e-08 5.208184e-07 6.637837e-05 + 8.848366e-04 3.120289e-03 -5.490255e-04 -1.335584e-03 -9.781619e-04 -5.403543e-04 +-2.595666e-04 -1.185584e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.854769e-03 -1.743984e-04 -3.558269e-05 -4.527425e-07 7.946275e-09 5.965518e-07 +-2.821607e-05 -1.240150e-05 1.637587e-04 1.911817e-04 1.446298e-04 9.400417e-05 + 5.631213e-05 3.239579e-05 +>TXI.EXP //14 +-4.313193e-04 1.627219e-05 6.459090e-06 1.027506e-06 1.097793e-08 -1.690459e-06 + 1.837294e-05 -1.216745e-04 -1.034385e-04 4.017231e-06 4.873515e-05 5.195038e-05 + 4.014213e-05 2.666390e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.449065e-03 5.969612e-04 1.207166e-05 -7.184736e-07 -5.601215e-08 -1.270204e-05 + 2.236761e-04 -5.916814e-06 -1.156962e-03 -1.134705e-03 -7.957778e-04 -5.013457e-04 +-2.965016e-04 -1.699604e-04 +>TYI.EXP //14 +-3.648467e-04 -7.176944e-05 -4.765353e-06 -6.889737e-07 -2.521587e-08 6.926503e-06 +-7.444705e-05 8.633590e-04 5.404055e-04 -1.386700e-04 -3.269256e-04 -3.030613e-04 +-2.217977e-04 -1.435926e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par06ew.edi b/examples/data/NEConductor/par06ew.edi new file mode 100644 index 00000000..5abaa6fe --- /dev/null +++ b/examples/data/NEConductor/par06ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par06ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par06ew" +REFLAT=-30:12:44.3848 +REFLONG=139:40:44.2551 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par06ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.463683e-02 4.059226e-04 4.007507e-05 7.696341e-07 -2.461316e-08 1.899894e-05 +-7.915377e-04 7.359648e-04 2.074149e-03 1.394930e-03 7.950219e-04 4.481748e-04 + 2.514217e-04 1.410850e-04 +>ZXXI ROT=ZROT //14 +-3.509559e-03 1.849202e-04 1.239061e-05 -9.922508e-07 -1.204540e-07 -5.333661e-05 + 1.771663e-04 -1.852983e-03 -2.131421e-04 5.629188e-04 5.311597e-04 3.641963e-04 + 2.258956e-04 1.331643e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864882e+02 1.241511e+02 7.346952e+01 4.197589e+01 2.350538e+01 1.317141e+01 + 8.356275e+00 6.606447e+00 5.480684e+00 4.276679e+00 3.013124e+00 1.925918e+00 + 1.147361e+00 6.597149e-01 +>ZXYI ROT=ZROT //14 + 3.082065e+02 1.471602e+02 7.805631e+01 4.294173e+01 2.400291e+01 1.271873e+01 + 6.027516e+00 2.956728e+00 2.004590e+00 1.769202e+00 1.579154e+00 1.253428e+00 + 8.812287e-01 5.635350e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865890e+02 -1.241463e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317146e+01 +-8.355357e+00 -6.605291e+00 -5.487159e+00 -4.286081e+00 -3.021219e+00 -1.931589e+00 +-1.150888e+00 -6.617798e-01 +>ZYXI ROT=ZROT //14 +-3.082148e+02 -1.471550e+02 -7.805626e+01 -4.294174e+01 -2.400292e+01 -1.271869e+01 +-6.028048e+00 -2.952177e+00 -1.999009e+00 -1.768125e+00 -1.580947e+00 -1.256020e+00 +-8.834899e-01 -5.651321e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.941662e-03 7.571690e-05 5.856941e-07 1.961115e-07 9.890366e-08 -9.776167e-06 + 5.385111e-04 -1.021986e-03 -3.583637e-04 1.076353e-03 1.358226e-03 1.076505e-03 + 7.029614e-04 4.192043e-04 +>ZYYI ROT=ZROT //14 + 3.062675e-04 2.446762e-05 -3.528934e-07 -1.494842e-07 1.303340e-07 3.720975e-05 +-7.888692e-06 6.017608e-04 -1.230539e-03 -8.583820e-04 -7.620919e-05 3.162200e-04 + 3.770196e-04 2.963434e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.190051e-02 -9.998121e-05 -3.552955e-05 -6.755729e-07 1.848584e-08 -3.512615e-07 +-1.818072e-06 -2.651088e-05 6.438663e-05 1.072812e-04 8.760208e-05 5.787168e-05 + 3.480298e-05 2.002643e-05 +>TXI.EXP //14 +-6.079479e-04 5.297765e-06 4.999207e-06 1.196790e-06 8.307805e-10 -2.048115e-07 + 9.775154e-06 -4.151087e-05 -7.184235e-05 -1.316720e-05 2.323913e-05 2.973087e-05 + 2.403557e-05 1.623417e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 8.591210e-03 9.160698e-04 3.022270e-06 -1.323784e-06 1.122333e-08 -6.366434e-07 + 5.867315e-05 1.740454e-04 -6.761437e-04 -8.489006e-04 -6.330733e-04 -4.051129e-04 +-2.406111e-04 -1.381018e-04 +>TYI.EXP //14 +-1.409949e-03 -1.106892e-04 -2.642659e-06 3.150170e-07 2.334058e-08 3.717860e-06 +-7.391175e-05 4.453359e-04 5.247965e-04 -1.142262e-06 -2.170617e-04 -2.289569e-04 +-1.744520e-04 -1.148129e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par07.edi b/examples/data/NEConductor/par07.edi new file mode 100644 index 00000000..621f3035 --- /dev/null +++ b/examples/data/NEConductor/par07.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par07" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par07" +REFLAT=-30:12:12.7496 +REFLONG=139:42:09.5991 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par07" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-8.918612e-03 3.007274e-04 1.177420e-05 2.857907e-07 1.177211e-06 3.492946e-04 +-3.215981e-03 3.513783e-03 7.417020e-03 6.501983e-03 4.657716e-03 2.979302e-03 + 1.771555e-03 1.017423e-03 +>ZXXI ROT=ZROT //14 +-2.309069e-03 9.815935e-05 2.796329e-06 -3.290521e-07 -2.992284e-08 -5.781061e-05 +-1.004889e-03 -5.909401e-03 -1.562153e-03 1.165879e-03 1.947090e-03 1.787274e-03 + 1.315798e-03 8.558100e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865455e+02 1.241415e+02 7.346939e+01 4.197591e+01 2.350537e+01 1.317012e+01 + 8.363934e+00 6.593774e+00 5.465518e+00 4.264972e+00 3.004996e+00 1.920831e+00 + 1.144381e+00 6.580157e-01 +>ZXYI ROT=ZROT //14 + 3.082043e+02 1.471562e+02 7.805628e+01 4.294175e+01 2.400290e+01 1.271793e+01 + 6.034473e+00 2.967849e+00 2.004625e+00 1.765932e+00 1.575257e+00 1.250138e+00 + 8.789080e-01 5.620632e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865822e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350537e+01 -1.317036e+01 +-8.361538e+00 -6.595160e+00 -5.474345e+00 -4.275514e+00 -3.013674e+00 -1.926792e+00 +-1.148053e+00 -6.601564e-01 +>ZYXI ROT=ZROT //14 +-3.082073e+02 -1.471549e+02 -7.805628e+01 -4.294175e+01 -2.400290e+01 -1.271796e+01 +-6.034083e+00 -2.961238e+00 -1.999779e+00 -1.765686e+00 -1.577605e+00 -1.253057e+00 +-8.813438e-01 -5.637504e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.083504e-03 -4.172640e-05 -2.787069e-07 2.211922e-07 -1.198966e-06 -2.837689e-04 + 2.631484e-03 -3.187370e-03 -5.235131e-03 -3.871486e-03 -2.454635e-03 -1.444013e-03 +-8.177130e-04 -4.591997e-04 +>ZYYI ROT=ZROT //14 + 1.810430e-04 -1.193645e-05 -1.581053e-07 -8.935170e-08 1.953640e-07 6.351476e-05 + 9.301251e-04 4.250548e-03 3.483927e-04 -1.260975e-03 -1.387129e-03 -1.060693e-03 +-6.961201e-04 -4.214188e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.265129e-03 -2.615247e-04 -3.672536e-05 -2.096556e-07 1.882927e-08 2.837407e-06 +-6.867092e-05 -1.078431e-05 3.715644e-04 3.946409e-04 2.875621e-04 1.841303e-04 + 1.096305e-04 6.296591e-05 +>TXI.EXP //14 +-2.863966e-04 2.844774e-05 8.212243e-06 8.795923e-07 1.256098e-08 -3.000802e-06 + 3.167490e-05 -2.772031e-04 -1.997465e-04 2.881842e-05 1.072896e-04 1.063390e-04 + 7.999008e-05 5.248586e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.425887e-03 5.970842e-04 1.207138e-05 -7.200647e-07 -5.727802e-08 -1.298619e-05 + 2.331370e-04 -3.545469e-06 -1.207285e-03 -1.193296e-03 -8.405620e-04 -5.305660e-04 +-3.140192e-04 -1.800544e-04 +>TYI.EXP //14 +-3.687478e-04 -7.176800e-05 -4.763074e-06 -6.872319e-07 -2.353367e-08 7.524864e-06 +-7.992495e-05 9.017354e-04 5.710542e-04 -1.396198e-04 -3.417331e-04 -3.190715e-04 +-2.342406e-04 -1.518815e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par07ew.edi b/examples/data/NEConductor/par07ew.edi new file mode 100644 index 00000000..6db1476d --- /dev/null +++ b/examples/data/NEConductor/par07ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par07ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par07ew" +REFLAT=-30:12:44.6016 +REFLONG=139:41:05.8203 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par07ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.885810e-02 3.369516e-04 2.779418e-05 5.651679e-07 8.111378e-10 7.151529e-05 +-1.291082e-03 1.405911e-03 2.748403e-03 1.761312e-03 9.821535e-04 5.375863e-04 + 2.942643e-04 1.629939e-04 +>ZXXI ROT=ZROT //14 +-3.447703e-03 1.329298e-04 8.029467e-06 -6.943367e-07 -2.561939e-07 -8.003666e-05 +-1.605446e-05 -2.439272e-03 -6.851070e-05 7.937795e-04 7.033815e-04 4.673636e-04 + 2.803860e-04 1.606078e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865119e+02 1.241461e+02 7.346948e+01 4.197590e+01 2.350537e+01 1.317108e+01 + 8.358531e+00 6.603129e+00 5.476580e+00 4.273633e+00 3.011048e+00 1.924634e+00 + 1.146615e+00 6.592910e-01 +>ZXYI ROT=ZROT //14 + 3.082031e+02 1.471581e+02 7.805631e+01 4.294174e+01 2.400291e+01 1.271866e+01 + 6.028936e+00 2.959995e+00 2.004534e+00 1.768276e+00 1.578112e+00 1.252572e+00 + 8.806353e-01 5.631629e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865925e+02 -1.241464e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317118e+01 +-8.357035e+00 -6.602755e+00 -5.484286e+00 -4.283945e+00 -3.019774e+00 -1.930702e+00 +-1.150375e+00 -6.614888e-01 +>ZYXI ROT=ZROT //14 +-3.082157e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400292e+01 -1.271861e+01 +-6.029325e+00 -2.954343e+00 -1.998918e+00 -1.767456e+00 -1.580205e+00 -1.255419e+00 +-8.830771e-01 -5.648748e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.556012e-03 3.040186e-05 2.572323e-07 2.223820e-07 -4.541122e-08 -4.684973e-05 + 8.808587e-04 -1.494944e-03 -6.947541e-04 9.718520e-04 1.356987e-03 1.106177e-03 + 7.308906e-04 4.379139e-04 +>ZYYI ROT=ZROT //14 + 2.715377e-04 1.054345e-05 -2.509838e-07 -1.335512e-07 3.388180e-07 6.063838e-05 + 1.591896e-04 8.861410e-04 -1.401947e-03 -1.025389e-03 -1.661298e-04 2.858589e-04 + 3.755818e-04 3.032441e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.165046e-02 -9.498207e-05 -3.488241e-05 -6.680405e-07 2.024817e-08 -5.504971e-07 +-2.231912e-06 -2.011294e-05 5.204901e-05 8.875253e-05 7.391662e-05 4.939401e-05 + 2.986674e-05 1.721688e-05 +>TXI.EXP //14 +-5.910760e-04 4.814669e-06 4.864883e-06 1.175127e-06 3.433286e-09 -3.444234e-07 + 1.005305e-05 -3.579115e-05 -5.870664e-05 -1.228454e-05 1.847292e-05 2.472146e-05 + 2.032459e-05 1.383848e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 4.381229e-03 8.338165e-04 7.513680e-06 -1.389292e-06 2.057000e-11 -3.518560e-06 + 1.121990e-04 1.314052e-04 -8.725813e-04 -9.789072e-04 -7.112736e-04 -4.524227e-04 +-2.683172e-04 -1.539423e-04 +>TYI.EXP //14 +-9.607348e-04 -1.014299e-04 -4.235428e-06 -3.674137e-08 1.562170e-08 5.771404e-06 +-8.700969e-05 6.133348e-04 5.521438e-04 -5.090264e-05 -2.633425e-04 -2.626739e-04 +-1.969145e-04 -1.287702e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par08.edi b/examples/data/NEConductor/par08.edi new file mode 100644 index 00000000..a5d26c74 --- /dev/null +++ b/examples/data/NEConductor/par08.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par08" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par08" +REFLAT=-30:11:56.51 +REFLONG=139:42:09.812 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par08" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.774456e-03 3.326738e-04 1.041222e-05 2.697905e-07 1.553180e-06 3.677820e-04 +-3.434056e-03 3.526713e-03 8.486137e-03 7.906497e-03 5.848721e-03 3.808747e-03 + 2.285846e-03 1.318064e-03 +>ZXXI ROT=ZROT //14 +-2.176906e-03 1.088575e-04 2.312640e-06 -3.072389e-07 2.972358e-07 -5.453338e-05 +-9.881739e-04 -6.696977e-03 -2.295887e-03 1.062485e-03 2.233346e-03 2.176133e-03 + 1.649530e-03 1.089883e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865457e+02 1.241416e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317017e+01 + 8.363660e+00 6.594385e+00 5.466191e+00 4.265517e+00 3.005377e+00 1.921068e+00 + 1.144519e+00 6.580943e-01 +>ZXYI ROT=ZROT //14 + 3.082043e+02 1.471562e+02 7.805628e+01 4.294174e+01 2.400290e+01 1.271802e+01 + 6.034036e+00 2.967424e+00 2.004621e+00 1.766074e+00 1.575438e+00 1.250292e+00 + 8.790166e-01 5.621318e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865758e+02 -1.241457e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.317039e+01 +-8.361483e+00 -6.595644e+00 -5.474236e+00 -4.275097e+00 -3.013263e+00 -1.926489e+00 +-1.147860e+00 -6.600422e-01 +>ZYXI ROT=ZROT //14 +-3.082037e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400290e+01 -1.271805e+01 +-6.033674e+00 -2.961399e+00 -2.000223e+00 -1.765859e+00 -1.577571e+00 -1.252943e+00 +-8.812305e-01 -5.636660e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.073454e-03 -4.688663e-05 -1.696191e-07 2.205805e-07 -1.083666e-06 -3.062682e-04 + 2.952062e-03 -3.245548e-03 -6.623267e-03 -5.651337e-03 -3.950342e-03 -2.480387e-03 +-1.458620e-03 -8.334318e-04 +>ZYYI ROT=ZROT //14 + 1.768360e-04 -1.335171e-05 -1.586186e-07 -9.734831e-08 2.972441e-07 6.810237e-05 + 8.908783e-04 5.295461e-03 1.254518e-03 -1.152571e-03 -1.759774e-03 -1.553557e-03 +-1.115220e-03 -7.140666e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.626014e-03 -3.487801e-04 -3.746256e-05 4.944829e-08 3.816293e-08 4.617453e-06 +-1.032741e-04 -1.368576e-05 5.587052e-04 5.814505e-04 4.196131e-04 2.675529e-04 + 1.590128e-04 9.128502e-05 +>TXI.EXP //14 +-1.396640e-04 4.055116e-05 9.872924e-06 7.158701e-07 4.627522e-09 -4.245126e-06 + 4.507754e-05 -4.165593e-04 -2.906834e-04 4.948269e-05 1.604597e-04 1.563227e-04 + 1.167668e-04 7.636238e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.402946e-03 5.972399e-04 1.207108e-05 -7.215048e-07 -5.565714e-08 -1.228338e-05 + 2.302674e-04 8.531835e-06 -1.214037e-03 -1.216951e-03 -8.625420e-04 -5.457572e-04 +-3.233064e-04 -1.854432e-04 +>TYI.EXP //14 +-3.725204e-04 -7.177224e-05 -4.760946e-06 -6.856152e-07 -1.654497e-08 8.025740e-06 +-8.564561e-05 9.057731e-04 5.906831e-04 -1.317955e-04 -3.452027e-04 -3.258313e-04 +-2.402468e-04 -1.560967e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par08ew.edi b/examples/data/NEConductor/par08ew.edi new file mode 100644 index 00000000..f09ff2cf --- /dev/null +++ b/examples/data/NEConductor/par08ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par08ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par08ew" +REFLAT=-30:12:44.8362 +REFLONG=139:41:29.2607 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par08ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.613056e-02 3.030261e-04 2.280210e-05 4.747967e-07 1.159916e-07 1.163496e-04 +-1.610022e-03 1.854165e-03 3.181987e-03 2.013732e-03 1.118634e-03 6.063126e-04 + 3.287139e-04 1.810952e-04 +>ZXXI ROT=ZROT //14 +-3.202873e-03 1.124142e-04 6.379262e-06 -5.733139e-07 -4.204585e-07 -8.946541e-05 +-1.986513e-04 -2.787096e-03 1.572098e-05 9.368428e-04 8.167648e-04 5.386905e-04 + 3.198621e-04 1.813802e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865235e+02 1.241442e+02 7.346945e+01 4.197590e+01 2.350537e+01 1.317084e+01 + 8.359945e+00 6.600800e+00 5.473987e+00 4.271741e+00 3.009775e+00 1.923854e+00 + 1.146164e+00 6.590354e-01 +>ZXYI ROT=ZROT //14 + 3.082027e+02 1.471573e+02 7.805630e+01 4.294174e+01 2.400291e+01 1.271854e+01 + 6.030169e+00 2.961926e+00 2.004403e+00 1.767656e+00 1.577448e+00 1.252039e+00 + 8.802707e-01 5.629361e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865939e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350537e+01 -1.317097e+01 +-8.358161e+00 -6.600935e+00 -5.482070e+00 -4.282161e+00 -3.018514e+00 -1.929907e+00 +-1.149907e+00 -6.612214e-01 +>ZYXI ROT=ZROT //14 +-3.082160e+02 -1.471551e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271850e+01 +-6.030387e+00 -2.955922e+00 -1.998997e+00 -1.767010e+00 -1.579628e+00 -1.254918e+00 +-8.827185e-01 -5.646453e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.826437e-03 8.230862e-06 4.966289e-08 2.330623e-07 -2.335643e-07 -8.139684e-05 + 1.123192e-03 -1.817444e-03 -1.023267e-03 7.639459e-04 1.238611e-03 1.043712e-03 + 6.983402e-04 4.204242e-04 +>ZYYI ROT=ZROT //14 + 2.516867e-04 3.633650e-06 -2.091582e-07 -1.214244e-07 4.566417e-07 7.125519e-05 + 3.028344e-04 1.138298e-03 -1.445394e-03 -1.126823e-03 -2.540582e-04 2.274172e-04 + 3.416450e-04 2.846210e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.154879e-02 -9.291013e-05 -3.464195e-05 -6.648476e-07 1.996051e-08 -7.390624e-07 +-5.831525e-07 -1.652692e-05 3.394394e-05 6.786532e-05 5.884421e-05 3.993383e-05 + 2.430021e-05 1.403359e-05 +>TXI.EXP //14 +-5.845777e-04 4.618315e-06 4.815287e-06 1.166233e-06 5.172741e-09 -3.964197e-07 + 9.132799e-06 -2.370853e-05 -4.662589e-05 -1.320714e-05 1.278281e-05 1.910624e-05 + 1.617163e-05 1.114588e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 2.367326e-03 7.670694e-04 9.380637e-06 -1.254787e-06 -1.469821e-08 -5.847643e-06 + 1.446435e-04 9.468798e-05 -9.637110e-04 -1.028676e-03 -7.378864e-04 -4.677575e-04 +-2.771429e-04 -1.589573e-04 +>TYI.EXP //14 +-7.521427e-04 -9.319940e-05 -4.658627e-06 -2.500358e-07 8.192862e-09 6.537163e-06 +-8.741915e-05 6.939069e-04 5.508181e-04 -7.895472e-05 -2.836266e-04 -2.754519e-04 +-2.047478e-04 -1.334240e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par09.edi b/examples/data/NEConductor/par09.edi new file mode 100644 index 00000000..fab3dea5 --- /dev/null +++ b/examples/data/NEConductor/par09.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par09" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par09" +REFLAT=-30:11:40.2703 +REFLONG=139:42:10.025 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par09" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.587147e-03 3.624306e-04 9.001512e-06 2.538161e-07 1.831778e-06 3.611530e-04 +-3.466896e-03 3.337554e-03 9.050471e-03 8.777783e-03 6.618122e-03 4.354953e-03 + 2.627744e-03 1.518736e-03 +>ZXXI ROT=ZROT //14 +-2.029296e-03 1.193536e-04 1.830433e-06 -2.869892e-07 5.332797e-07 -5.906651e-05 +-8.764337e-04 -7.109584e-03 -2.845751e-03 9.318677e-04 2.385702e-03 2.416525e-03 + 1.864555e-03 1.243457e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865459e+02 1.241416e+02 7.346939e+01 4.197590e+01 2.350537e+01 1.317028e+01 + 8.362990e+00 6.595582e+00 5.467887e+00 4.267044e+00 3.006510e+00 1.921803e+00 + 1.144958e+00 6.583467e-01 +>ZXYI ROT=ZROT //14 + 3.082043e+02 1.471562e+02 7.805628e+01 4.294174e+01 2.400291e+01 1.271815e+01 + 6.033244e+00 2.966274e+00 2.004377e+00 1.766329e+00 1.575886e+00 1.250721e+00 + 8.793375e-01 5.623423e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865694e+02 -1.241460e+02 -7.346928e+01 -4.197589e+01 -2.350537e+01 -1.317047e+01 +-8.361219e+00 -6.596604e+00 -5.474447e+00 -4.274817e+00 -3.012904e+00 -1.926201e+00 +-1.147670e+00 -6.599284e-01 +>ZYXI ROT=ZROT //14 +-3.082009e+02 -1.471554e+02 -7.805633e+01 -4.294174e+01 -2.400291e+01 -1.271818e+01 +-6.032943e+00 -2.961358e+00 -2.000818e+00 -1.766170e+00 -1.577618e+00 -1.252870e+00 +-8.811333e-01 -5.635873e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.123122e-03 -5.324971e-05 -2.623454e-08 2.281238e-07 -8.922270e-07 -3.090499e-04 + 3.143219e-03 -3.136552e-03 -7.706197e-03 -7.127622e-03 -5.213695e-03 -3.364470e-03 +-2.008217e-03 -1.155084e-03 +>ZYYI ROT=ZROT //14 + 1.830370e-04 -1.507687e-05 -1.630532e-07 -1.118767e-07 6.626625e-08 8.033637e-05 + 7.605925e-04 6.120005e-03 2.077932e-03 -1.014265e-03 -2.049526e-03 -1.961302e-03 +-1.468878e-03 -9.633193e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.941059e-03 -4.339077e-04 -3.752089e-05 3.028323e-07 5.173458e-08 5.596289e-06 +-1.271991e-04 -2.447565e-05 7.073315e-04 7.369292e-04 5.310377e-04 3.382321e-04 + 2.009054e-04 1.153194e-04 +>TXI.EXP //14 + 9.433193e-06 5.228992e-05 1.130681e-05 5.446508e-07 1.089679e-09 -5.311539e-06 + 5.828520e-05 -5.255723e-04 -3.713080e-04 6.264695e-05 2.035855e-04 1.980021e-04 + 1.477258e-04 9.654446e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.379939e-03 5.974344e-04 1.207068e-05 -7.228100e-07 -5.249126e-08 -1.074331e-05 + 2.159479e-04 2.864787e-05 -1.179489e-03 -1.206043e-03 -8.613426e-04 -5.465084e-04 +-3.240787e-04 -1.859548e-04 +>TYI.EXP //14 +-3.762054e-04 -7.178287e-05 -4.758942e-06 -6.841219e-07 -8.414073e-09 8.282520e-06 +-9.065468e-05 8.770501e-04 5.984603e-04 -1.164679e-04 -3.378436e-04 -3.233927e-04 +-2.397230e-04 -1.561365e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par09ew.edi b/examples/data/NEConductor/par09ew.edi new file mode 100644 index 00000000..98578130 --- /dev/null +++ b/examples/data/NEConductor/par09ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par09ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par09ew" +REFLAT=-30:12:45.0696 +REFLONG=139:41:52.7013 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par09ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.353603e-02 2.681697e-04 1.833822e-05 3.915539e-07 3.872425e-07 1.768031e-04 +-1.975722e-03 2.387657e-03 3.704180e-03 2.339584e-03 1.305306e-03 7.055193e-04 + 3.806425e-04 2.090574e-04 +>ZXXI ROT=ZROT //14 +-2.883291e-03 9.379520e-05 4.961644e-06 -4.667142e-07 -6.008543e-07 -9.111736e-05 +-4.566426e-04 -3.182651e-03 9.782744e-05 1.099404e-03 9.551429e-04 6.307720e-04 + 3.735578e-04 2.109618e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865346e+02 1.241427e+02 7.346942e+01 4.197591e+01 2.350537e+01 1.317055e+01 + 8.361516e+00 6.597968e+00 5.471004e+00 4.269589e+00 3.008341e+00 1.922981e+00 + 1.145661e+00 6.587505e-01 +>ZXYI ROT=ZROT //14 + 3.082031e+02 1.471567e+02 7.805629e+01 4.294175e+01 2.400291e+01 1.271832e+01 + 6.031848e+00 2.964037e+00 2.004185e+00 1.766915e+00 1.576679e+00 1.251431e+00 + 8.798593e-01 5.626818e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865950e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350537e+01 -1.317072e+01 +-8.359509e+00 -6.598640e+00 -5.479149e+00 -4.279718e+00 -3.016759e+00 -1.928786e+00 +-1.149243e+00 -6.608405e-01 +>ZYXI ROT=ZROT //14 +-3.082164e+02 -1.471551e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271831e+01 +-6.031837e+00 -2.957942e+00 -1.999202e+00 -1.766470e+00 -1.578865e+00 -1.254233e+00 +-8.822192e-01 -5.643227e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.067638e-03 -1.339535e-05 -1.797692e-07 2.402036e-07 -5.473796e-07 -1.313469e-04 + 1.431974e-03 -2.222880e-03 -1.527568e-03 3.785033e-04 9.828300e-04 8.897868e-04 + 6.103432e-04 3.708302e-04 +>ZYYI ROT=ZROT //14 + 2.318837e-04 -3.179049e-06 -1.786166e-07 -1.064476e-07 5.469101e-07 7.714736e-05 + 5.046621e-04 1.512448e-03 -1.434392e-03 -1.243267e-03 -3.886975e-04 1.196457e-04 + 2.689640e-04 2.399384e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.146226e-02 -9.110104e-05 -3.444763e-05 -6.620824e-07 1.813683e-08 -1.057716e-06 + 3.627578e-06 -1.385734e-05 3.708880e-06 3.564579e-05 3.577470e-05 2.539442e-05 + 1.571714e-05 9.118012e-06 +>TXI.EXP //14 +-5.792252e-04 4.448882e-06 4.775188e-06 1.158570e-06 6.212030e-09 -4.140916e-07 + 7.398079e-06 -1.995908e-06 -2.977540e-05 -1.571235e-05 3.809160e-06 1.044845e-05 + 9.778662e-06 6.996460e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 4.159781e-04 6.871587e-04 1.090802e-05 -1.024369e-06 -3.420211e-08 -8.645902e-06 + 1.769077e-04 4.951766e-05 -1.034664e-03 -1.055520e-03 -7.476191e-04 -4.722079e-04 +-2.794667e-04 -1.602301e-04 +>TYI.EXP //14 +-5.525614e-04 -8.318244e-05 -4.829823e-06 -4.717459e-07 -4.292787e-09 6.798132e-06 +-8.175003e-05 7.591632e-04 5.348708e-04 -1.063603e-04 -2.980247e-04 -2.821205e-04 +-2.079055e-04 -1.349845e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par10.edi b/examples/data/NEConductor/par10.edi new file mode 100644 index 00000000..7ad07e91 --- /dev/null +++ b/examples/data/NEConductor/par10.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par10" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par10" +REFLAT=-30:14:06.6115 +REFLONG=139:42:26.8093 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par10" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.168294e-02 6.934503e-05 1.452273e-05 2.483032e-07 -2.174611e-07 4.959412e-05 +-7.801912e-04 1.791111e-03 -5.244095e-04 -2.798140e-03 -2.945131e-03 -2.221042e-03 +-1.424253e-03 -8.437092e-04 +>ZXXI ROT=ZROT //14 +-1.939031e-03 1.994656e-05 3.339728e-06 -3.319158e-07 -4.680273e-07 -6.781663e-05 +-2.998090e-04 -2.536262e-05 2.514004e-03 1.263760e-03 -1.728140e-04 -7.913793e-04 +-8.190015e-04 -6.168644e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865579e+02 1.241406e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.317100e+01 + 8.358364e+00 6.601275e+00 5.480650e+00 4.280213e+00 3.016876e+00 1.928771e+00 + 1.149204e+00 6.608104e-01 +>ZXYI ROT=ZROT //14 + 3.081992e+02 1.471557e+02 7.805626e+01 4.294175e+01 2.400291e+01 1.271855e+01 + 6.030056e+00 2.957023e+00 2.000163e+00 1.767187e+00 1.579237e+00 1.254384e+00 + 8.822609e-01 5.643249e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866497e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317097e+01 +-8.358598e+00 -6.601742e+00 -5.478445e+00 -4.276824e+00 -3.013878e+00 -1.926646e+00 +-1.147876e+00 -6.600317e-01 +>ZYXI ROT=ZROT //14 +-3.082581e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400292e+01 -1.271854e+01 +-6.029912e+00 -2.958547e+00 -2.002210e+00 -1.767680e+00 -1.578636e+00 -1.253444e+00 +-8.814229e-01 -5.637277e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.076263e-03 -5.481192e-05 -1.087621e-06 3.621730e-07 -5.202416e-08 -5.213510e-05 + 8.632011e-04 -1.741237e-03 5.377189e-06 2.134531e-03 2.369996e-03 1.810878e-03 + 1.166232e-03 6.918465e-04 +>ZYYI ROT=ZROT //14 + 3.405716e-04 -1.801454e-05 -1.225406e-07 -9.275340e-08 4.095866e-07 7.167066e-05 + 2.473632e-04 4.251448e-04 -2.158076e-03 -1.207995e-03 4.756322e-05 6.093002e-04 + 6.571113e-04 5.010332e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.790041e-02 2.336944e-04 -3.185369e-05 -7.122760e-07 5.201167e-09 -4.100074e-06 + 9.789351e-05 6.554334e-05 -6.577663e-04 -6.931713e-04 -4.941037e-04 -3.122211e-04 +-1.846937e-04 -1.059232e-04 +>TXI.EXP //14 +-1.280110e-03 -4.265582e-05 4.496554e-07 1.179115e-06 1.825747e-08 4.334129e-06 +-5.777343e-05 4.721846e-04 3.696175e-04 -5.825718e-05 -1.929268e-04 -1.853586e-04 +-1.371280e-04 -8.918608e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.445021e-03 4.979156e-04 1.287059e-05 -3.407537e-07 -2.319825e-08 -2.802046e-06 + 5.865451e-05 3.265324e-05 -3.821677e-04 -3.874084e-04 -2.699195e-04 -1.690376e-04 +-9.968624e-05 -5.706321e-05 +>TYI.EXP //14 +-1.492402e-04 -5.934850e-05 -4.516278e-06 -9.107016e-07 -1.126798e-08 2.496235e-06 +-3.122034e-05 2.733972e-04 2.032730e-04 -4.265901e-05 -1.111026e-04 -1.028786e-04 +-7.496108e-05 -4.834713e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par100.edi b/examples/data/NEConductor/par100.edi new file mode 100644 index 00000000..d6d9e12e --- /dev/null +++ b/examples/data/NEConductor/par100.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par100" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par100" +REFLAT=-30:14:08.242 +REFLONG=139:45:15.1333 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par100" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.716333e-02 1.176231e-04 -2.532417e-05 -4.962432e-07 8.585494e-07 1.733378e-04 +-2.420997e-03 1.719245e-03 7.232985e-03 7.399952e-03 5.659766e-03 3.751616e-03 + 2.272709e-03 1.315896e-03 +>ZXXI ROT=ZROT //14 + 1.775212e-03 -5.253336e-06 -1.014370e-05 3.257333e-07 -1.939359e-07 -1.101447e-04 +-2.950454e-05 -5.748897e-03 -2.890126e-03 5.306907e-04 1.925556e-03 2.029135e-03 + 1.590157e-03 1.068710e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866527e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317097e+01 + 8.358936e+00 6.601313e+00 5.478386e+00 4.277360e+00 3.014486e+00 1.927111e+00 + 1.148176e+00 6.602095e-01 +>ZXYI ROT=ZROT //14 + 3.082532e+02 1.471576e+02 7.805611e+01 4.294172e+01 2.400292e+01 1.271862e+01 + 6.029766e+00 2.958818e+00 2.001649e+00 1.767352e+00 1.578641e+00 1.253598e+00 + 8.815910e-01 5.638561e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866475e+02 -1.241514e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317094e+01 +-8.359089e+00 -6.601810e+00 -5.476312e+00 -4.274090e+00 -3.011551e+00 -1.925009e+00 +-1.146854e+00 -6.594324e-01 +>ZYXI ROT=ZROT //14 +-3.082609e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400292e+01 -1.271860e+01 +-6.029709e+00 -2.960204e+00 -2.003652e+00 -1.767875e+00 -1.578092e+00 -1.252692e+00 +-8.807693e-01 -5.632654e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.356350e-03 -2.558636e-04 -4.612574e-06 2.161731e-07 -6.148990e-07 -1.985222e-04 + 2.527207e-03 -1.652158e-03 -8.026770e-03 -8.526276e-03 -6.670192e-03 -4.484056e-03 +-2.737111e-03 -1.590085e-03 +>ZYYI ROT=ZROT //14 + 4.453632e-04 -9.563975e-05 -7.785817e-07 1.753825e-07 2.879463e-07 9.738871e-05 + 4.597567e-05 6.313354e-03 3.515097e-03 -3.845999e-04 -2.116131e-03 -2.339034e-03 +-1.874676e-03 -1.275151e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.805453e-02 2.373768e-04 -3.235300e-05 -7.209727e-07 9.814398e-09 -4.002816e-06 + 1.298912e-04 1.133854e-04 -9.182495e-04 -1.029144e-03 -7.553159e-04 -4.829724e-04 +-2.870389e-04 -1.648832e-04 +>TXI.EXP //14 +-1.308694e-03 -4.289678e-05 5.249265e-07 1.189660e-06 3.369378e-08 6.573117e-06 +-9.212709e-05 6.607826e-04 5.658764e-04 -4.899155e-05 -2.742085e-04 -2.773416e-04 +-2.093612e-04 -1.374654e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.681081e-02 -3.795889e-04 9.476988e-06 1.852033e-06 -3.479052e-08 3.023777e-06 +-1.059895e-04 -1.016470e-04 7.687802e-04 8.708467e-04 6.416973e-04 4.109934e-04 + 2.444329e-04 1.404284e-04 +>TYI.EXP //14 + 1.403461e-03 5.545285e-05 7.761415e-08 -1.642057e-06 -2.704130e-08 -5.522073e-06 + 7.970722e-05 -5.518998e-04 -4.831711e-04 3.645620e-05 2.303829e-04 2.348710e-04 + 1.778217e-04 1.169620e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par101.edi b/examples/data/NEConductor/par101.edi new file mode 100644 index 00000000..2c3cce3f --- /dev/null +++ b/examples/data/NEConductor/par101.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par101" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par101" +REFLAT=-30:13:52.0022 +REFLONG=139:45:15.3381 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par101" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.652532e-02 6.005179e-05 -2.443018e-05 -4.730846e-07 1.179915e-06 2.483447e-04 +-2.966116e-03 2.389580e-03 8.368770e-03 8.415102e-03 6.412992e-03 4.241531e-03 + 2.565923e-03 1.484685e-03 +>ZXXI ROT=ZROT //14 + 1.801597e-03 -2.397225e-05 -9.378254e-06 3.423092e-07 -7.514863e-08 -1.090720e-04 +-3.047041e-04 -6.630277e-03 -3.093124e-03 6.925237e-04 2.219942e-03 2.312271e-03 + 1.803444e-03 1.209023e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866514e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317074e+01 + 8.360320e+00 6.599305e+00 5.475294e+00 4.274559e+00 3.012396e+00 1.925749e+00 + 1.147359e+00 6.597391e-01 +>ZXYI ROT=ZROT //14 + 3.082557e+02 1.471577e+02 7.805611e+01 4.294172e+01 2.400291e+01 1.271850e+01 + 6.030900e+00 2.961052e+00 2.002169e+00 1.766913e+00 1.577832e+00 1.252815e+00 + 8.809992e-01 5.634660e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866324e+02 -1.241501e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317072e+01 +-8.360210e+00 -6.599734e+00 -5.474464e+00 -4.272970e+00 -3.010886e+00 -1.924637e+00 +-1.146650e+00 -6.593200e-01 +>ZYXI ROT=ZROT //14 +-3.082504e+02 -1.471574e+02 -7.805624e+01 -4.294172e+01 -2.400291e+01 -1.271846e+01 +-6.030915e+00 -2.961525e+00 -2.003250e+00 -1.767296e+00 -1.577622e+00 -1.252374e+00 +-8.805760e-01 -5.631543e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.681839e-03 -2.356891e-04 -4.231026e-06 1.941443e-07 -9.680998e-07 -2.752489e-04 + 3.017014e-03 -2.372915e-03 -8.876687e-03 -9.150238e-03 -7.087794e-03 -4.738177e-03 +-2.883331e-03 -1.672725e-03 +>ZYYI ROT=ZROT //14 + 4.005204e-04 -8.661542e-05 -7.044538e-07 1.699654e-07 1.959514e-07 8.381245e-05 + 3.764123e-04 6.971269e-03 3.492348e-03 -5.854155e-04 -2.335172e-03 -2.514583e-03 +-1.994010e-03 -1.348987e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.691757e-02 1.914090e-04 -3.193196e-05 -8.532431e-07 -6.748395e-09 -5.819431e-06 + 1.540281e-04 7.797071e-05 -9.633513e-04 -1.045108e-03 -7.623038e-04 -4.869575e-04 +-2.893785e-04 -1.662282e-04 +>TXI.EXP //14 +-1.163431e-03 -3.614399e-05 5.369124e-07 1.281965e-06 3.616629e-08 7.164908e-06 +-8.942752e-05 7.064032e-04 5.514240e-04 -6.575686e-05 -2.824996e-04 -2.815170e-04 +-2.116609e-04 -1.387721e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.676950e-02 -3.782681e-04 9.501736e-06 1.848498e-06 -2.283812e-08 5.127902e-06 +-1.396015e-04 -7.794926e-05 8.895033e-04 9.682252e-04 7.065491e-04 4.514538e-04 + 2.683288e-04 1.541262e-04 +>TYI.EXP //14 + 1.393972e-03 5.535737e-05 7.572955e-08 -1.640532e-06 -2.636272e-08 -6.623897e-06 + 8.464521e-05 -6.503117e-04 -5.144684e-04 5.945861e-05 2.612325e-04 2.607425e-04 + 1.961503e-04 1.286833e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1010.edi b/examples/data/NEConductor/par1010.edi new file mode 100644 index 00000000..77183242 --- /dev/null +++ b/examples/data/NEConductor/par1010.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1010" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1010" +REFLAT=-30:11:25.8429 +REFLONG=139:45:17.1791 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1010" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.639647e-03 -4.089267e-04 -1.207247e-05 -2.421447e-07 2.319648e-06 4.011304e-04 +-2.597256e-03 4.193894e-03 3.761921e-03 1.303888e-03 1.761374e-04 -1.604833e-04 +-1.803421e-04 -1.247855e-04 +>ZXXI ROT=ZROT //14 + 1.062839e-03 -1.809450e-04 -4.700658e-07 4.697849e-07 2.030860e-07 5.491501e-05 +-1.806194e-03 -3.036036e-03 1.483387e-03 1.751490e-03 9.546326e-04 3.505615e-04 + 6.315645e-05 -2.835131e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866480e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317000e+01 + 8.363611e+00 6.592803e+00 5.467911e+00 4.268560e+00 3.008161e+00 1.923082e+00 + 1.145792e+00 6.588442e-01 +>ZXYI ROT=ZROT //14 + 3.082594e+02 1.471577e+02 7.805612e+01 4.294172e+01 2.400290e+01 1.271775e+01 + 6.035593e+00 2.965766e+00 2.002338e+00 1.765399e+00 1.575881e+00 1.251125e+00 + 8.797930e-01 5.626963e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865590e+02 -1.241463e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.317013e+01 +-8.362309e+00 -6.593802e+00 -5.471683e+00 -4.272563e+00 -3.011326e+00 -1.925218e+00 +-1.147097e+00 -6.596028e-01 +>ZYXI ROT=ZROT //14 +-3.082039e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400290e+01 -1.271771e+01 +-6.035405e+00 -2.962819e+00 -2.000776e+00 -1.765566e+00 -1.576866e+00 -1.252230e+00 +-8.806837e-01 -5.633035e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.018040e-03 -1.502823e-04 -2.722173e-06 1.664568e-09 -2.599647e-06 -3.915775e-04 + 2.276348e-03 -4.110677e-03 -2.685546e-03 -5.308206e-05 8.641158e-04 8.845268e-04 + 6.300532e-04 3.879795e-04 +>ZYYI ROT=ZROT //14 + 1.087987e-04 -4.598552e-05 -4.396871e-08 2.383781e-07 -1.043651e-06 -9.184458e-05 + 1.936746e-03 2.146372e-03 -2.070086e-03 -1.784511e-03 -6.854383e-04 -6.208861e-06 + 2.295713e-04 2.333166e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.212845e-03 -5.157038e-04 -3.675462e-05 5.375491e-07 4.957567e-08 5.396668e-06 +-8.293665e-05 6.793635e-06 4.319392e-04 3.935893e-04 2.634531e-04 1.625635e-04 + 9.536707e-05 5.446001e-05 +>TXI.EXP //14 + 1.681076e-04 6.341574e-05 1.242151e-05 3.719703e-07 1.253550e-09 -1.936237e-06 + 2.180345e-05 -3.185048e-04 -1.804614e-04 6.856504e-05 1.202514e-04 1.038271e-04 + 7.353650e-05 4.684224e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.652667e-02 -3.695464e-04 9.660445e-06 1.827973e-06 1.587066e-09 9.582094e-06 +-1.570428e-04 1.535124e-05 7.849508e-04 7.650428e-04 5.375668e-04 3.390629e-04 + 2.006040e-04 1.150406e-04 +>TYI.EXP //14 + 1.339456e-03 5.467151e-05 5.536568e-08 -1.633921e-06 -4.079337e-09 -4.570302e-06 + 4.566840e-05 -5.882769e-04 -3.575280e-04 9.485881e-05 2.204959e-04 2.046456e-04 + 1.499374e-04 9.722247e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par102.edi b/examples/data/NEConductor/par102.edi new file mode 100644 index 00000000..5da76f15 --- /dev/null +++ b/examples/data/NEConductor/par102.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par102" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par102" +REFLAT=-30:13:35.7623 +REFLONG=139:45:15.5428 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par102" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.574203e-02 3.164002e-06 -2.346451e-05 -4.478234e-07 1.572899e-06 3.355188e-04 +-3.522919e-03 3.148426e-03 9.462791e-03 9.333021e-03 7.074996e-03 4.665385e-03 + 2.817463e-03 1.628944e-03 +>ZXXI ROT=ZROT //14 + 1.797895e-03 -4.359510e-05 -8.564399e-06 3.591048e-07 1.210787e-07 -9.478626e-05 +-6.652878e-04 -7.461049e-03 -3.206598e-03 8.844568e-04 2.502501e-03 2.568837e-03 + 1.991480e-03 1.330907e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866505e+02 1.241454e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317048e+01 + 8.361821e+00 6.597007e+00 5.471779e+00 4.271352e+00 3.009997e+00 1.924183e+00 + 1.146420e+00 6.591976e-01 +>ZXYI ROT=ZROT //14 + 3.082574e+02 1.471577e+02 7.805611e+01 4.294173e+01 2.400291e+01 1.271833e+01 + 6.032289e+00 2.963537e+00 2.002773e+00 1.766423e+00 1.576909e+00 1.251918e+00 + 8.803197e-01 5.630175e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866200e+02 -1.241489e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317049e+01 +-8.361306e+00 -6.597500e+00 -5.472627e+00 -4.271918e+00 -3.010294e+00 -1.924320e+00 +-1.146483e+00 -6.592293e-01 +>ZYXI ROT=ZROT //14 +-3.082414e+02 -1.471567e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271826e+01 +-6.032338e+00 -2.962759e+00 -2.002750e+00 -1.766677e+00 -1.577153e+00 -1.252074e+00 +-8.804027e-01 -5.630589e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.067754e-03 -2.179483e-04 -3.893734e-06 1.730117e-07 -1.438433e-06 -3.599187e-04 + 3.473399e-03 -3.152255e-03 -9.555879e-03 -9.537107e-03 -7.299921e-03 -4.847327e-03 +-2.939049e-03 -1.702304e-03 +>ZYYI ROT=ZROT //14 + 3.499374e-04 -7.860497e-05 -6.307340e-07 1.659020e-07 -8.468833e-09 5.355090e-05 + 7.957959e-04 7.471647e-03 3.324064e-03 -8.144356e-04 -2.510364e-03 -2.624944e-03 +-2.055855e-03 -1.382001e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.567202e-02 1.343074e-04 -3.195638e-05 -9.163577e-07 -2.511883e-08 -7.562355e-06 + 1.722552e-04 4.083682e-05 -9.725068e-04 -1.028082e-03 -7.466850e-04 -4.767689e-04 +-2.833428e-04 -1.627721e-04 +>TXI.EXP //14 +-1.018268e-03 -2.775714e-05 1.023225e-06 1.319582e-06 3.412226e-08 7.340740e-06 +-8.197826e-05 7.238692e-04 5.214307e-04 -7.740967e-05 -2.810294e-04 -2.769571e-04 +-2.076402e-04 -1.360035e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.673190e-02 -3.770523e-04 9.524539e-06 1.845260e-06 -9.744880e-09 7.786465e-06 +-1.762359e-04 -4.726074e-05 1.010007e-03 1.061624e-03 7.677134e-04 4.893618e-04 + 2.906612e-04 1.669159e-04 +>TYI.EXP //14 + 1.385342e-03 5.526876e-05 7.382782e-08 -1.639170e-06 -2.105440e-08 -7.507557e-06 + 8.602341e-05 -7.487647e-04 -5.404350e-04 8.433637e-05 2.916646e-04 2.855348e-04 + 2.134876e-04 1.397004e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par103.edi b/examples/data/NEConductor/par103.edi new file mode 100644 index 00000000..a75ca555 --- /dev/null +++ b/examples/data/NEConductor/par103.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par103" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par103" +REFLAT=-30:13:19.5224 +REFLONG=139:45:15.7475 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par103" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.482433e-02 -5.307997e-05 -2.241504e-05 -4.224024e-07 2.081668e-06 4.277887e-04 +-4.035574e-03 3.941279e-03 1.038194e-02 1.001422e-02 7.535522e-03 4.949114e-03 + 2.982256e-03 1.722536e-03 +>ZXXI ROT=ZROT //14 + 1.764559e-03 -6.356197e-05 -7.701727e-06 3.774071e-07 5.005632e-07 -6.568731e-05 +-1.091446e-03 -8.138996e-03 -3.183224e-03 1.099041e-03 2.738129e-03 2.759975e-03 + 2.123210e-03 1.413308e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866499e+02 1.241454e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317020e+01 + 8.363348e+00 6.594535e+00 5.468042e+00 4.267935e+00 3.007438e+00 1.922510e+00 + 1.145416e+00 6.586192e-01 +>ZXYI ROT=ZROT //14 + 3.082583e+02 1.471577e+02 7.805611e+01 4.294173e+01 2.400291e+01 1.271809e+01 + 6.033868e+00 2.966124e+00 2.003410e+00 1.765902e+00 1.575927e+00 1.250962e+00 + 8.795949e-01 5.625389e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866095e+02 -1.241478e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.317027e+01 +-8.362297e+00 -6.595245e+00 -5.470921e+00 -4.271010e+00 -3.009822e+00 -1.924088e+00 +-1.146368e+00 -6.591691e-01 +>ZYXI ROT=ZROT //14 +-3.082337e+02 -1.471561e+02 -7.805625e+01 -4.294173e+01 -2.400291e+01 -1.271802e+01 +-6.033890e+00 -2.963825e+00 -2.002175e+00 -1.766051e+00 -1.576714e+00 -1.251813e+00 +-8.802633e-01 -5.629871e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.508413e-03 -2.024825e-04 -3.599870e-06 1.523874e-07 -2.031732e-06 -4.436428e-04 + 3.837056e-03 -3.922814e-03 -9.935530e-03 -9.557617e-03 -7.205778e-03 -4.744291e-03 +-2.863529e-03 -1.655246e-03 +>ZYYI ROT=ZROT //14 + 2.974248e-04 -7.154194e-05 -5.582140e-07 1.636862e-07 -3.781534e-07 6.609110e-06 + 1.273751e-03 7.717727e-03 2.973461e-03 -1.060935e-03 -2.607800e-03 -2.633991e-03 +-2.031770e-03 -1.355054e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.433495e-02 6.750274e-05 -3.245264e-05 -9.030827e-07 -4.529857e-08 -8.829498e-06 + 1.797684e-04 7.101772e-06 -9.329537e-04 -9.684951e-04 -7.022263e-04 -4.485618e-04 +-2.666726e-04 -1.532230e-04 +>TXI.EXP //14 +-8.731753e-04 -1.803685e-05 1.944674e-06 1.306657e-06 2.278274e-08 7.035485e-06 +-7.046569e-05 7.026605e-04 4.740539e-04 -8.113660e-05 -2.665915e-04 -2.611010e-04 +-1.955266e-04 -1.280396e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.669764e-02 -3.759277e-04 9.545594e-06 1.842302e-06 2.156789e-09 1.078440e-05 +-2.124880e-04 -1.219272e-05 1.119620e-03 1.142330e-03 8.193324e-04 5.210558e-04 + 3.092673e-04 1.775579e-04 +>TYI.EXP //14 + 1.377500e-03 5.518585e-05 7.188898e-08 -1.637968e-06 -1.154459e-08 -8.008177e-06 + 8.344652e-05 -8.384748e-04 -5.583992e-04 1.090985e-04 3.189330e-04 3.069207e-04 + 2.281788e-04 1.489537e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par104.edi b/examples/data/NEConductor/par104.edi new file mode 100644 index 00000000..22ebafb9 --- /dev/null +++ b/examples/data/NEConductor/par104.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par104" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par104" +REFLAT=-30:13:03.2825 +REFLONG=139:45:15.9522 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par104" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.378350e-02 -1.086367e-04 -2.126957e-05 -3.975638e-07 2.446273e-06 5.138072e-04 +-4.434573e-03 4.683740e-03 1.096273e-02 1.029675e-02 7.669095e-03 5.009208e-03 + 3.009706e-03 1.736178e-03 +>ZXXI ROT=ZROT //14 + 1.704341e-03 -8.336046e-05 -6.790532e-06 3.963583e-07 7.963166e-07 -2.408342e-05 +-1.539543e-03 -8.543816e-03 -2.977650e-03 1.321385e-03 2.883884e-03 2.840513e-03 + 2.163213e-03 1.432428e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866496e+02 1.241454e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.316994e+01 + 8.364761e+00 6.592108e+00 5.464450e+00 4.264655e+00 3.004984e+00 1.920908e+00 + 1.144455e+00 6.580652e-01 +>ZXYI ROT=ZROT //14 + 3.082589e+02 1.471577e+02 7.805611e+01 4.294173e+01 2.400290e+01 1.271782e+01 + 6.035495e+00 2.968562e+00 2.004001e+00 1.765393e+00 1.574981e+00 1.250044e+00 + 8.788998e-01 5.620801e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866005e+02 -1.241470e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.317007e+01 +-8.363103e+00 -6.593169e+00 -5.469490e+00 -4.270326e+00 -3.009515e+00 -1.923962e+00 +-1.146317e+00 -6.591460e-01 +>ZYXI ROT=ZROT //14 +-3.082270e+02 -1.471555e+02 -7.805625e+01 -4.294174e+01 -2.400290e+01 -1.271775e+01 +-6.035416e+00 -2.964642e+00 -2.001573e+00 -1.765471e+00 -1.576342e+00 -1.251615e+00 +-8.801706e-01 -5.629463e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.001025e-03 -1.891778e-04 -3.348242e-06 1.318824e-07 -2.700072e-06 -5.147357e-04 + 4.048591e-03 -4.596102e-03 -9.890557e-03 -9.097220e-03 -6.719593e-03 -4.373197e-03 +-2.623326e-03 -1.512299e-03 +>ZYYI ROT=ZROT //14 + 2.458085e-04 -6.538082e-05 -4.866541e-07 1.640403e-07 -8.309227e-07 -5.158206e-05 + 1.754962e-03 7.622965e-03 2.420566e-03 -1.307296e-03 -2.594362e-03 -2.509572e-03 +-1.897465e-03 -1.252153e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.291952e-02 -7.350850e-06 -3.335889e-05 -8.147596e-07 -4.155719e-08 -9.174801e-06 + 1.723051e-04 -1.782030e-05 -8.351610e-04 -8.594137e-04 -6.243775e-04 -3.995138e-04 +-2.377056e-04 -1.366288e-04 +>TXI.EXP //14 +-7.279684e-04 -7.274997e-06 3.230379e-06 1.249270e-06 1.070841e-08 6.275674e-06 +-5.641445e-05 6.349919e-04 4.086525e-04 -7.473560e-05 -2.368249e-04 -2.320723e-04 +-1.740193e-04 -1.140578e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.666640e-02 -3.748809e-04 9.565108e-06 1.839611e-06 1.199312e-08 1.370460e-05 +-2.436006e-04 2.268483e-05 1.204683e-03 1.199716e-03 8.544186e-04 5.422114e-04 + 3.216033e-04 1.845962e-04 +>TYI.EXP //14 + 1.370374e-03 5.510749e-05 6.989097e-08 -1.636921e-06 -1.008813e-09 -8.041317e-06 + 7.745161e-05 -9.084202e-04 -5.657373e-04 1.308991e-04 3.395558e-04 3.220630e-04 + 2.382437e-04 1.551871e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par106.edi b/examples/data/NEConductor/par106.edi new file mode 100644 index 00000000..4e4a8053 --- /dev/null +++ b/examples/data/NEConductor/par106.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par106" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par106" +REFLAT=-30:12:30.8027 +REFLONG=139:45:16.3613 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par106" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.137828e-02 -2.168041e-04 -1.865114e-05 -3.498954e-07 3.340951e-06 6.136425e-04 +-4.630127e-03 5.610659e-03 1.051059e-02 9.130761e-03 6.557894e-03 4.199178e-03 + 2.496996e-03 1.433935e-03 +>ZXXI ROT=ZROT //14 + 1.523631e-03 -1.208645e-04 -4.830584e-06 4.341689e-07 1.375949e-06 6.453176e-05 +-2.240489e-03 -8.118990e-03 -1.929704e-03 1.699730e-03 2.749827e-03 2.520391e-03 + 1.855296e-03 1.206495e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866490e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316960e+01 + 8.366545e+00 6.588671e+00 5.459737e+00 4.260448e+00 3.001871e+00 1.918887e+00 + 1.143247e+00 6.573701e-01 +>ZXYI ROT=ZROT //14 + 3.082594e+02 1.471577e+02 7.805611e+01 4.294172e+01 2.400290e+01 1.271737e+01 + 6.037969e+00 2.971637e+00 2.004621e+00 1.764658e+00 1.573738e+00 1.248865e+00 + 8.780167e-01 5.615007e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865852e+02 -1.241458e+02 -7.346916e+01 -4.197589e+01 -2.350537e+01 -1.316984e+01 +-8.363930e+00 -6.590456e+00 -5.468022e+00 -4.269885e+00 -3.009494e+00 -1.924067e+00 +-1.146419e+00 -6.592147e-01 +>ZYXI ROT=ZROT //14 +-3.082163e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400290e+01 -1.271732e+01 +-6.037604e+00 -2.965293e+00 -2.000571e+00 -1.764698e+00 -1.575948e+00 -1.251480e+00 +-8.801572e-01 -5.629689e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.131163e-03 -1.686540e-04 -2.972362e-06 8.985256e-08 -3.635897e-06 -5.780353e-04 + 3.888465e-03 -5.314522e-03 -8.308837e-03 -6.627848e-03 -4.524915e-03 -2.809386e-03 +-1.642600e-03 -9.362045e-04 +>ZYYI ROT=ZROT //14 + 1.561841e-04 -5.562479e-05 -3.465564e-07 1.730671e-07 -1.817534e-06 -1.552637e-04 + 2.445989e-03 6.308655e-03 8.026036e-04 -1.708805e-03 -2.176087e-03 -1.829489e-03 +-1.284324e-03 -8.127141e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.891759e-03 -1.738181e-04 -3.580912e-05 -4.507316e-07 -1.867159e-08 -6.088877e-06 + 1.072635e-04 -2.883871e-05 -4.669544e-04 -4.957000e-04 -3.697542e-04 -2.394074e-04 +-1.431159e-04 -8.242547e-05 +>TXI.EXP //14 +-4.358854e-04 1.624623e-05 6.502295e-06 1.028714e-06 3.681127e-09 3.867065e-06 +-2.772385e-05 3.616950e-04 2.300364e-04 -3.156104e-05 -1.321713e-04 -1.350683e-04 +-1.031232e-04 -6.818946e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.661184e-02 -3.729703e-04 9.600315e-06 1.834963e-06 1.415078e-08 1.713073e-05 +-2.701662e-04 6.867767e-05 1.246673e-03 1.204162e-03 8.490892e-04 5.370522e-04 + 3.181791e-04 1.825567e-04 +>TYI.EXP //14 + 1.358036e-03 5.496006e-05 6.562371e-08 -1.635254e-06 9.554315e-09 -7.045097e-06 + 6.175080e-05 -9.459626e-04 -5.412857e-04 1.530941e-04 3.471029e-04 3.228451e-04 + 2.371232e-04 1.539665e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par107.edi b/examples/data/NEConductor/par107.edi new file mode 100644 index 00000000..13820a82 --- /dev/null +++ b/examples/data/NEConductor/par107.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par107" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par107" +REFLAT=-30:12:14.5627 +REFLONG=139:45:16.5658 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par107" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.003832e-02 -2.686192e-04 -1.716977e-05 -3.257826e-07 3.587748e-06 6.077540e-04 +-4.362001e-03 5.637668e-03 9.353020e-03 7.615867e-03 5.278573e-03 3.311368e-03 + 1.947680e-03 1.113129e-03 +>ZXXI ROT=ZROT //14 + 1.414441e-03 -1.380195e-04 -3.788503e-06 4.501318e-07 1.388992e-06 9.076219e-05 +-2.369803e-03 -7.218585e-03 -1.126181e-03 1.810079e-03 2.438494e-03 2.101038e-03 + 1.497128e-03 9.559856e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866488e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316956e+01 + 8.366622e+00 6.588279e+00 5.459560e+00 4.260406e+00 3.001882e+00 1.918910e+00 + 1.143266e+00 6.573827e-01 +>ZXYI ROT=ZROT //14 + 3.082595e+02 1.471577e+02 7.805611e+01 4.294172e+01 2.400290e+01 1.271729e+01 + 6.038346e+00 2.971670e+00 2.004471e+00 1.764553e+00 1.573689e+00 1.248852e+00 + 8.780187e-01 5.615064e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865784e+02 -1.241456e+02 -7.346917e+01 -4.197590e+01 -2.350537e+01 -1.316982e+01 +-8.363903e+00 -6.590189e+00 -5.468169e+00 -4.270172e+00 -3.009773e+00 -1.924277e+00 +-1.146555e+00 -6.592954e-01 +>ZYXI ROT=ZROT //14 +-3.082122e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400290e+01 -1.271724e+01 +-6.037911e+00 -2.965087e+00 -2.000313e+00 -1.764609e+00 -1.575976e+00 -1.251557e+00 +-8.802353e-01 -5.630277e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.769966e-03 -1.612752e-04 -2.847201e-06 6.859016e-08 -3.458482e-06 -5.622794e-04 + 3.551390e-03 -5.280354e-03 -6.915587e-03 -4.844655e-03 -3.018840e-03 -1.761417e-03 +-9.929686e-04 -5.564709e-04 +>ZYYI ROT=ZROT //14 + 1.236744e-04 -5.198303e-05 -2.759862e-07 1.819284e-07 -2.231843e-06 -1.765199e-04 + 2.547415e-03 5.230265e-03 -1.102062e-04 -1.824041e-03 -1.808171e-03 -1.336047e-03 +-8.620270e-04 -5.168181e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.293179e-03 -2.614426e-04 -3.693012e-05 -2.057900e-07 -3.612676e-09 -2.967457e-06 + 5.610759e-05 -1.780612e-05 -2.246679e-04 -2.631679e-04 -2.068939e-04 -1.367416e-04 +-8.237443e-05 -4.759732e-05 +>TXI.EXP //14 +-2.881476e-04 2.845170e-05 8.255706e-06 8.797488e-07 1.420716e-08 2.436253e-06 +-1.499229e-05 1.783336e-04 1.248609e-04 -7.384802e-07 -6.463291e-05 -7.286255e-05 +-5.765350e-05 -3.874845e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.658797e-02 -3.720825e-04 9.616404e-06 1.832954e-06 1.664361e-08 1.682359e-05 +-2.594254e-04 7.117994e-05 1.188440e-03 1.140920e-03 8.023351e-04 5.069347e-04 + 3.002105e-04 1.722214e-04 +>TYI.EXP //14 + 1.352706e-03 5.488880e-05 6.330799e-08 -1.634666e-06 9.482982e-09 -6.388125e-06 + 5.561788e-05 -9.018593e-04 -5.089336e-04 1.495054e-04 3.302700e-04 3.057331e-04 + 2.241195e-04 1.453924e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par108.edi b/examples/data/NEConductor/par108.edi new file mode 100644 index 00000000..ef12b22a --- /dev/null +++ b/examples/data/NEConductor/par108.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par108" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par108" +REFLAT=-30:11:58.3228 +REFLONG=139:45:16.7703 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par108" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 8.625003e-03 -3.182560e-04 -1.557593e-05 -3.002082e-07 3.469109e-06 5.634775e-04 +-3.879956e-03 5.356454e-03 7.684390e-03 5.634207e-03 3.650201e-03 2.194992e-03 + 1.260935e-03 7.130325e-04 +>ZXXI ROT=ZROT //14 + 1.298949e-03 -1.538492e-04 -2.710642e-06 4.619801e-07 1.113039e-06 9.563813e-05 +-2.316461e-03 -5.953336e-03 -2.251030e-04 1.850555e-03 1.993955e-03 1.551726e-03 + 1.040115e-03 6.400429e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866486e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316962e+01 + 8.366091e+00 6.588954e+00 5.461075e+00 4.261954e+00 3.003096e+00 1.919726e+00 + 1.143762e+00 6.576706e-01 +>ZXYI ROT=ZROT //14 + 3.082595e+02 1.471577e+02 7.805611e+01 4.294172e+01 2.400290e+01 1.271734e+01 + 6.038001e+00 2.970557e+00 2.003985e+00 1.764662e+00 1.574085e+00 1.249282e+00 + 8.783612e-01 5.617384e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865718e+02 -1.241456e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.316987e+01 +-8.363598e+00 -6.590733e+00 -5.468901e+00 -4.270762e+00 -3.010202e+00 -1.924558e+00 +-1.146724e+00 -6.593934e-01 +>ZYXI ROT=ZROT //14 +-3.082087e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400290e+01 -1.271730e+01 +-6.037588e+00 -2.964562e+00 -2.000272e+00 -1.764745e+00 -1.576157e+00 -1.251721e+00 +-8.803579e-01 -5.631086e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.463502e-03 -1.557632e-04 -2.762415e-06 4.694551e-08 -4.049105e-06 -5.200455e-04 + 3.124895e-03 -5.017992e-03 -5.373866e-03 -3.002623e-03 -1.496643e-03 -7.135520e-04 +-3.468747e-04 -1.796670e-04 +>ZYYI ROT=ZROT //14 + 1.029846e-04 -4.915687e-05 -2.021234e-07 1.952023e-07 -2.158365e-06 -1.685658e-04 + 2.470733e-03 4.074281e-03 -9.488176e-04 -1.870254e-03 -1.400420e-03 -8.254666e-04 +-4.345778e-04 -2.203141e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.644759e-03 -3.491587e-04 -3.764382e-05 5.520380e-08 1.545581e-08 4.515840e-07 + 2.093962e-06 -3.561452e-06 2.306266e-05 -2.321275e-05 -3.744182e-05 -2.949524e-05 +-1.881753e-05 -1.113152e-05 +>TXI.EXP //14 +-1.386086e-04 4.058033e-05 9.916477e-06 7.149168e-07 2.656673e-08 9.586901e-07 +-3.004395e-06 -9.774588e-06 1.707237e-05 2.936553e-05 4.410492e-06 -8.499885e-06 +-1.033537e-05 -8.019793e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.656602e-02 -3.712238e-04 9.631696e-06 1.831125e-06 1.741513e-08 1.515334e-05 +-2.336706e-04 5.986129e-05 1.081929e-03 1.038432e-03 7.293188e-04 4.604592e-04 + 2.725964e-04 1.563612e-04 +>TYI.EXP //14 + 1.347868e-03 5.481769e-05 6.084370e-08 -1.634255e-06 9.910547e-09 -5.784861e-06 + 5.153996e-05 -8.195483e-04 -4.652834e-04 1.366332e-04 3.009348e-04 2.781271e-04 + 2.036953e-04 1.320815e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par109.edi b/examples/data/NEConductor/par109.edi new file mode 100644 index 00000000..b73e2f0c --- /dev/null +++ b/examples/data/NEConductor/par109.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par109" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par109" +REFLAT=-30:11:42.0828 +REFLONG=139:45:16.9747 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par109" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.153485e-03 -3.651925e-04 -1.387463e-05 -2.724240e-07 3.019865e-06 4.900335e-04 +-3.260057e-03 4.837363e-03 5.729735e-03 3.435607e-03 1.874659e-03 9.873732e-04 + 5.208940e-04 2.825726e-04 +>ZXXI ROT=ZROT //14 + 1.180687e-03 -1.681998e-04 -1.602351e-06 4.687797e-07 6.669966e-07 8.090008e-05 +-2.108267e-03 -4.492745e-03 6.762275e-04 1.825476e-03 1.475509e-03 9.419285e-04 + 5.410534e-04 2.976148e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866483e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316978e+01 + 8.365030e+00 6.590563e+00 5.464033e+00 4.264840e+00 3.005318e+00 1.921202e+00 + 1.144656e+00 6.581879e-01 +>ZXYI ROT=ZROT //14 + 3.082595e+02 1.471577e+02 7.805612e+01 4.294172e+01 2.400290e+01 1.271751e+01 + 6.037011e+00 2.968473e+00 2.003234e+00 1.764963e+00 1.574861e+00 1.250087e+00 + 8.789892e-01 5.621595e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865654e+02 -1.241458e+02 -7.346928e+01 -4.197590e+01 -2.350537e+01 -1.316998e+01 +-8.363051e+00 -6.591999e+00 -5.470119e+00 -4.271586e+00 -3.010735e+00 -1.924880e+00 +-1.146909e+00 -6.594982e-01 +>ZYXI ROT=ZROT //14 +-3.082060e+02 -1.471555e+02 -7.805633e+01 -4.294174e+01 -2.400290e+01 -1.271747e+01 +-6.036700e+00 -2.963783e+00 -2.000441e+00 -1.765081e+00 -1.576465e+00 -1.251953e+00 +-8.805118e-01 -5.632030e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.213653e-03 -1.521106e-04 -2.719083e-06 2.495290e-08 -2.956793e-06 -4.602331e-04 + 2.682175e-03 -4.601513e-03 -3.907994e-03 -1.348788e-03 -1.580515e-04 1.980881e-04 + 2.121723e-04 1.456095e-04 +>ZYYI ROT=ZROT //14 + 9.693763e-05 -4.715565e-05 -1.240323e-07 2.137604e-07 -1.489528e-06 -1.371134e-04 + 2.249482e-03 3.007501e-03 -1.619213e-03 -1.852640e-03 -1.011500e-03 -3.664205e-04 +-5.821553e-05 3.817720e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.950233e-03 -4.347054e-04 -3.767617e-05 3.104533e-07 2.915241e-08 3.424276e-06 +-4.641056e-05 6.460612e-06 2.489239e-04 2.017854e-04 1.235816e-04 7.296445e-05 + 4.202857e-05 2.380603e-05 +>TXI.EXP //14 + 1.328501e-05 5.233913e-05 1.135009e-05 5.425258e-07 1.316086e-08 -5.162236e-07 + 9.110698e-06 -1.809651e-04 -8.667019e-05 5.358907e-05 6.786978e-05 5.203614e-05 + 3.458981e-05 2.128525e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.654568e-02 -3.703823e-04 9.646325e-06 1.829466e-06 1.377511e-08 1.254321e-05 +-1.975272e-04 3.920158e-05 9.413721e-04 9.082563e-04 6.377898e-04 4.024607e-04 + 2.381897e-04 1.366108e-04 +>TYI.EXP //14 + 1.343466e-03 5.474562e-05 5.820404e-08 -1.634009e-06 5.844437e-09 -5.205492e-06 + 4.867716e-05 -7.102445e-04 -4.135377e-04 1.172296e-04 2.627802e-04 2.431221e-04 + 1.780420e-04 1.154337e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par10ew.edi b/examples/data/NEConductor/par10ew.edi new file mode 100644 index 00000000..2e83e27c --- /dev/null +++ b/examples/data/NEConductor/par10ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par10ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par10ew" +REFLAT=-30:12:45.2288 +REFLONG=139:42:09.173 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par10ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.103347e-02 2.322944e-04 1.428398e-05 3.133596e-07 8.855597e-07 2.536845e-04 +-2.385585e-03 3.009532e-03 4.340172e-03 2.770322e-03 1.568345e-03 8.532812e-04 + 4.612122e-04 2.533945e-04 +>ZXXI ROT=ZROT //14 +-2.507513e-03 7.640969e-05 3.723986e-06 -3.715587e-07 -6.904337e-07 -7.983200e-05 +-8.000953e-04 -3.640142e-03 1.629784e-04 1.280288e-03 1.125346e-03 7.523280e-04 + 4.488200e-04 2.544642e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865452e+02 1.241415e+02 7.346939e+01 4.197591e+01 2.350537e+01 1.317024e+01 + 8.363182e+00 6.594649e+00 5.467653e+00 4.267201e+00 3.006762e+00 1.922025e+00 + 1.145111e+00 6.584401e-01 +>ZXYI ROT=ZROT //14 + 3.082042e+02 1.471562e+02 7.805628e+01 4.294174e+01 2.400291e+01 1.271799e+01 + 6.034004e+00 2.966287e+00 2.003876e+00 1.766055e+00 1.575813e+00 1.250757e+00 + 8.794062e-01 5.624028e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865960e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350537e+01 -1.317044e+01 +-8.361073e+00 -6.595806e+00 -5.475417e+00 -4.276509e+00 -3.014421e+00 -1.927280e+00 +-1.148346e+00 -6.603252e-01 +>ZYXI ROT=ZROT //14 +-3.082167e+02 -1.471551e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271800e+01 +-6.033733e+00 -2.960457e+00 -1.999562e+00 -1.765826e+00 -1.577888e+00 -1.253334e+00 +-8.815550e-01 -5.638899e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.277187e-03 -3.431206e-05 -4.257336e-07 2.431174e-07 -1.017772e-06 -2.001016e-04 + 1.824063e-03 -2.736139e-03 -2.274507e-03 -2.573284e-04 5.308940e-04 6.043820e-04 + 4.423484e-04 2.748444e-04 +>ZYYI ROT=ZROT //14 + 2.132159e-04 -9.844783e-06 -1.615960e-07 -8.866058e-08 5.436905e-07 7.327878e-05 + 7.818626e-04 2.055588e-03 -1.342639e-03 -1.376893e-03 -5.875393e-04 -5.772356e-05 + 1.409808e-04 1.578346e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.139039e-02 -8.954933e-05 -3.429430e-05 -6.597409e-07 1.449474e-08 -1.598466e-06 + 1.172638e-05 -1.347738e-05 -4.217829e-05 -1.089991e-05 2.598365e-06 4.427244e-06 + 3.313679e-06 2.007745e-06 +>TXI.EXP //14 +-5.749468e-04 4.305242e-06 4.743479e-06 1.152107e-06 5.614411e-09 -3.810570e-07 + 4.984470e-06 3.224753e-05 -7.377341e-06 -2.038774e-05 -9.353402e-06 -2.065753e-06 + 5.492187e-07 1.001812e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.472788e-03 5.968662e-04 1.207201e-05 -7.167115e-07 -5.402467e-08 -1.150524e-05 + 2.032508e-04 6.605221e-07 -1.067569e-03 -1.045739e-03 -7.316206e-04 -4.603418e-04 +-2.721038e-04 -1.559406e-04 +>TYI.EXP //14 +-3.607756e-04 -7.177603e-05 -4.767813e-06 -6.908473e-07 -2.201014e-08 6.324648e-06 +-6.954785e-05 7.943495e-04 5.006050e-04 -1.293092e-04 -3.019951e-04 -2.790485e-04 +-2.038799e-04 -1.318699e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par11.edi b/examples/data/NEConductor/par11.edi new file mode 100644 index 00000000..fda380e9 --- /dev/null +++ b/examples/data/NEConductor/par11.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par11" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par11" +REFLAT=-30:13:50.3719 +REFLONG=139:42:27.0217 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par11" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.120389e-02 9.300798e-05 1.380778e-05 2.491291e-07 -2.787600e-08 8.401431e-05 +-1.015079e-03 2.032543e-03 -5.927187e-05 -2.353622e-03 -2.613740e-03 -2.005724e-03 +-1.295426e-03 -7.695492e-04 +>ZXXI ROT=ZROT //14 +-2.047485e-03 2.774175e-05 3.341760e-06 -3.301832e-07 -6.891038e-07 -7.973285e-05 +-4.102913e-04 -3.703177e-04 2.392361e-03 1.319771e-03 -4.735911e-05 -6.680582e-04 +-7.256339e-04 -5.553274e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865565e+02 1.241406e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.317078e+01 + 8.359612e+00 6.599387e+00 5.477771e+00 4.277597e+00 3.014922e+00 1.927495e+00 + 1.148439e+00 6.603699e-01 +>ZXYI ROT=ZROT //14 + 3.082022e+02 1.471557e+02 7.805627e+01 4.294175e+01 2.400291e+01 1.271841e+01 + 6.031169e+00 2.959074e+00 2.000646e+00 1.766781e+00 1.578482e+00 1.253652e+00 + 8.817074e-01 5.639598e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866351e+02 -1.241504e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317078e+01 +-8.359591e+00 -6.599802e+00 -5.476843e+00 -4.275934e+00 -3.013390e+00 -1.926391e+00 +-1.147744e+00 -6.599606e-01 +>ZYXI ROT=ZROT //14 +-3.082473e+02 -1.471573e+02 -7.805624e+01 -4.294172e+01 -2.400291e+01 -1.271840e+01 +-6.031070e+00 -2.959670e+00 -2.001754e+00 -1.767128e+00 -1.578229e+00 -1.253190e+00 +-8.812796e-01 -5.636502e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.633585e-03 -5.341084e-05 -9.875588e-07 3.322580e-07 -2.205924e-07 -8.221749e-05 + 1.029471e-03 -1.995156e-03 -1.223965e-04 2.136110e-03 2.419612e-03 1.862780e-03 + 1.203853e-03 7.151999e-04 +>ZYYI ROT=ZROT //14 + 3.094380e-04 -1.720653e-05 -1.479509e-07 -8.821332e-08 5.669432e-07 8.035300e-05 + 3.808433e-04 5.144409e-04 -2.274789e-03 -1.300524e-03 1.054471e-05 6.090474e-04 + 6.705722e-04 5.149057e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.677086e-02 1.885189e-04 -3.145936e-05 -8.455624e-07 -3.653490e-09 -5.346407e-06 + 1.077910e-04 3.596796e-05 -6.469117e-04 -6.532391e-04 -4.597857e-04 -2.893951e-04 +-1.709658e-04 -9.800876e-05 +>TXI.EXP //14 +-1.138356e-03 -3.596423e-05 4.636301e-07 1.271806e-06 1.585440e-08 4.101786e-06 +-5.010555e-05 4.724644e-04 3.311335e-04 -6.989769e-05 -1.860261e-04 -1.743445e-04 +-1.278598e-04 -8.284159e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.411812e-03 4.980807e-04 1.287119e-05 -3.438898e-07 -3.053846e-08 -4.344413e-06 + 8.289187e-05 2.524071e-05 -4.942215e-04 -4.897228e-04 -3.399876e-04 -2.128368e-04 +-1.255192e-04 -7.185844e-05 +>TYI.EXP //14 +-1.552660e-04 -5.933996e-05 -4.513263e-06 -9.077668e-07 -1.363976e-08 3.102488e-06 +-3.700086e-05 3.592594e-04 2.471973e-04 -5.942833e-05 -1.417887e-04 -1.301095e-04 +-9.456355e-05 -6.094641e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par110.edi b/examples/data/NEConductor/par110.edi new file mode 100644 index 00000000..c739ebb7 --- /dev/null +++ b/examples/data/NEConductor/par110.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par110" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par110" +REFLAT=-30:11:24.2152 +REFLONG=139:42:28.9318 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par110" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.162828e-03 3.109569e-04 5.405479e-06 1.933032e-07 2.392142e-06 4.336224e-04 +-3.845911e-03 3.868086e-03 9.972359e-03 9.670450e-03 7.300226e-03 4.804646e-03 + 2.898671e-03 1.675134e-03 +>ZXXI ROT=ZROT //14 +-1.589939e-03 1.001280e-04 1.084685e-06 -1.971852e-07 9.170599e-07 -2.204268e-05 +-1.209884e-03 -7.754519e-03 -3.069303e-03 1.032481e-03 2.630382e-03 2.666034e-03 + 2.057213e-03 1.371784e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865560e+02 1.241408e+02 7.346937e+01 4.197591e+01 2.350537e+01 1.317015e+01 + 8.363447e+00 6.594219e+00 5.467614e+00 4.267511e+00 3.007085e+00 1.922258e+00 + 1.145256e+00 6.585249e-01 +>ZXYI ROT=ZROT //14 + 3.082061e+02 1.471558e+02 7.805627e+01 4.294175e+01 2.400290e+01 1.271801e+01 + 6.034205e+00 2.966360e+00 2.003490e+00 1.765871e+00 1.575830e+00 1.250845e+00 + 8.794938e-01 5.624669e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865640e+02 -1.241464e+02 -7.346937e+01 -4.197591e+01 -2.350537e+01 -1.317029e+01 +-8.362356e+00 -6.595221e+00 -5.471087e+00 -4.271236e+00 -3.010065e+00 -1.924288e+00 +-1.146504e+00 -6.592519e-01 +>ZYXI ROT=ZROT //14 +-3.081992e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400290e+01 -1.271806e+01 +-6.033770e+00 -2.963755e+00 -2.002054e+00 -1.765998e+00 -1.576725e+00 -1.251873e+00 +-8.803335e-01 -5.630438e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.335142e-03 -7.889154e-05 -1.015625e-07 2.417770e-07 -1.633062e-06 -3.955510e-04 + 3.801631e-03 -3.735098e-03 -9.635321e-03 -9.245543e-03 -6.914135e-03 -4.518731e-03 +-2.715011e-03 -1.566083e-03 +>ZYYI ROT=ZROT //14 + 1.828109e-04 -2.219198e-05 -1.252355e-07 -1.093152e-07 -1.038251e-09 6.930305e-05 + 1.012683e-03 7.566514e-03 2.899162e-03 -1.066808e-03 -2.557871e-03 -2.548895e-03 +-1.947315e-03 -1.290909e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.185411e-03 -5.124338e-04 -3.656563e-05 5.300159e-07 7.079411e-08 8.538445e-06 +-1.732039e-04 -1.051501e-05 9.153187e-04 9.299933e-04 6.644328e-04 4.219357e-04 + 2.503496e-04 1.436540e-04 +>TXI.EXP //14 + 1.603352e-04 6.314808e-05 1.236602e-05 3.706738e-07 -1.314881e-08 -6.619333e-06 + 6.820590e-05 -6.839315e-04 -4.552557e-04 9.221664e-05 2.608150e-04 2.494978e-04 + 1.850285e-04 1.205978e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.177805e-03 5.001627e-04 1.288033e-05 -3.614601e-07 -6.434826e-08 -1.103486e-05 + 2.141131e-04 8.457585e-06 -1.119439e-03 -1.140852e-03 -8.166970e-04 -5.190125e-04 +-3.080039e-04 -1.767830e-04 +>TYI.EXP //14 +-1.959698e-04 -5.941347e-05 -4.494689e-06 -8.906406e-07 -1.219307e-08 7.993333e-06 +-8.217552e-05 8.379998e-04 5.571409e-04 -1.108985e-04 -3.192599e-04 -3.062946e-04 +-2.274280e-04 -1.482698e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1101.edi b/examples/data/NEConductor/par1101.edi new file mode 100644 index 00000000..fb62f687 --- /dev/null +++ b/examples/data/NEConductor/par1101.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1101" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1101" +REFLAT=-30:12:25.514 +REFLONG=139:41:53.5699 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1101" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.229165e-02 3.124998e-04 1.683077e-05 3.730088e-07 4.643931e-07 2.173291e-04 +-2.348005e-03 2.568516e-03 5.116967e-03 4.081170e-03 2.752328e-03 1.702968e-03 + 9.959337e-04 5.679543e-04 +>ZXXI ROT=ZROT //14 +-2.772646e-03 1.073598e-04 4.341860e-06 -4.431173e-07 -4.199258e-07 -8.927332e-05 +-5.158257e-04 -4.227529e-03 -7.334055e-04 1.031178e-03 1.333557e-03 1.113398e-03 + 7.794145e-04 4.929595e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865348e+02 1.241427e+02 7.346942e+01 4.197591e+01 2.350537e+01 1.317048e+01 + 8.361977e+00 6.597423e+00 5.469714e+00 4.268250e+00 3.007282e+00 1.922267e+00 + 1.145225e+00 6.584976e-01 +>ZXYI ROT=ZROT //14 + 3.082032e+02 1.471567e+02 7.805630e+01 4.294175e+01 2.400291e+01 1.271829e+01 + 6.032139e+00 2.964982e+00 2.004626e+00 1.766835e+00 1.576342e+00 1.251059e+00 + 8.795611e-01 5.624788e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865879e+02 -1.241460e+02 -7.346916e+01 -4.197590e+01 -2.350537e+01 -1.317068e+01 +-8.359761e+00 -6.598218e+00 -5.478655e+00 -4.279337e+00 -3.016497e+00 -1.928623e+00 +-1.149148e+00 -6.607864e-01 +>ZYXI ROT=ZROT //14 +-3.082112e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271828e+01 +-6.032079e+00 -2.958295e+00 -1.999202e+00 -1.766361e+00 -1.578737e+00 -1.254126e+00 +-8.821446e-01 -5.642755e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.959439e-03 -1.744310e-05 -1.262022e-07 2.262032e-07 -3.525205e-07 -1.649823e-04 + 1.768161e-03 -2.371356e-03 -2.802279e-03 -1.207216e-03 -3.319099e-04 -1.353923e-05 + 5.429125e-05 4.681129e-05 +>ZYYI ROT=ZROT //14 + 2.137159e-04 -4.564177e-06 -1.829075e-07 -1.045854e-07 4.522705e-07 7.803580e-05 + 5.443023e-04 2.455136e-03 -6.673695e-04 -1.177867e-03 -7.348396e-04 -3.201371e-04 +-9.942312e-05 -1.537364e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.919999e-03 -1.761794e-04 -3.572346e-05 -4.550237e-07 1.243203e-08 3.179282e-07 +-2.579538e-05 -2.070483e-05 1.718790e-04 2.071364e-04 1.576830e-04 1.025465e-04 + 6.141567e-05 3.533058e-05 +>TXI.EXP //14 +-4.344877e-04 1.643968e-05 6.488451e-06 1.033849e-06 1.154179e-08 -1.584593e-06 + 2.068649e-05 -1.260650e-04 -1.159454e-04 1.295903e-06 5.206558e-05 5.635212e-05 + 4.369446e-05 2.905561e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 4.383168e-04 6.871310e-04 1.090633e-05 -1.026022e-06 -3.584961e-08 -9.451933e-06 + 1.926846e-04 4.725168e-05 -1.109985e-03 -1.132587e-03 -8.035828e-04 -5.080383e-04 +-3.007966e-04 -1.724889e-04 +>TYI.EXP //14 +-5.563039e-04 -8.316263e-05 -4.826973e-06 -4.698400e-07 -5.920587e-09 7.368343e-06 +-8.715690e-05 8.169276e-04 5.711407e-04 -1.132687e-04 -3.192919e-04 -3.029293e-04 +-2.235102e-04 -1.452147e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1102.edi b/examples/data/NEConductor/par1102.edi new file mode 100644 index 00000000..34f2c5a2 --- /dev/null +++ b/examples/data/NEConductor/par1102.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1102" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1102" +REFLAT=-30:12:23.4573 +REFLONG=139:41:37.2466 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1102" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.466563e-02 3.574392e-04 2.098168e-05 4.506108e-07 2.028772e-07 1.445130e-04 +-1.898498e-03 1.930241e-03 4.377215e-03 3.537405e-03 2.395566e-03 1.490144e-03 + 8.750616e-04 5.000668e-04 +>ZXXI ROT=ZROT //14 +-3.063871e-03 1.285034e-04 5.577010e-06 -5.470295e-07 -2.961919e-07 -9.329263e-05 +-2.076880e-04 -3.668820e-03 -7.518253e-04 8.508285e-04 1.138293e-03 9.604919e-04 + 6.777116e-04 4.310245e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865237e+02 1.241442e+02 7.346945e+01 4.197590e+01 2.350537e+01 1.317079e+01 + 8.360297e+00 6.600436e+00 5.472977e+00 4.270661e+00 3.008913e+00 1.923270e+00 + 1.145806e+00 6.588273e-01 +>ZXYI ROT=ZROT //14 + 3.082028e+02 1.471573e+02 7.805630e+01 4.294174e+01 2.400291e+01 1.271852e+01 + 6.030339e+00 2.962679e+00 2.004793e+00 1.767613e+00 1.577184e+00 1.251739e+00 + 8.800277e-01 5.627701e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865866e+02 -1.241460e+02 -7.346916e+01 -4.197590e+01 -2.350537e+01 -1.317094e+01 +-8.358356e+00 -6.600640e+00 -5.481701e+00 -4.281871e+00 -3.018314e+00 -1.929781e+00 +-1.149834e+00 -6.611794e-01 +>ZYXI ROT=ZROT //14 +-3.082108e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271849e+01 +-6.030540e+00 -2.956199e+00 -1.999006e+00 -1.766933e+00 -1.579533e+00 -1.254837e+00 +-8.826612e-01 -5.646091e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.733988e-03 3.485951e-06 9.102214e-08 2.183602e-07 -8.049597e-08 -1.046443e-04 + 1.386531e-03 -1.874024e-03 -2.117121e-03 -6.430387e-04 6.200224e-05 2.318743e-04 + 1.975093e-04 1.283035e-04 +>ZYYI ROT=ZROT //14 + 2.345793e-04 1.815474e-06 -2.195963e-07 -1.190705e-07 2.969307e-07 7.627536e-05 + 2.990915e-04 1.944973e-03 -7.279699e-04 -1.044768e-03 -5.524106e-04 -1.623657e-04 + 1.222748e-05 5.537518e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.998519e-03 -1.782708e-04 -3.590204e-05 -4.576875e-07 1.494995e-08 5.036539e-08 +-2.148209e-05 -2.871742e-05 1.693754e-04 2.120558e-04 1.625635e-04 1.057939e-04 + 6.334993e-05 3.643996e-05 +>TXI.EXP //14 +-4.384623e-04 1.663807e-05 6.525720e-06 1.041382e-06 1.020065e-08 -1.356135e-06 + 2.145615e-05 -1.218768e-04 -1.231172e-04 -2.201698e-06 5.244931e-05 5.776489e-05 + 4.496601e-05 2.993834e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 2.388089e-03 7.669148e-04 9.377841e-06 -1.256328e-06 -1.587398e-08 -6.345303e-06 + 1.562882e-04 9.583182e-05 -1.025729e-03 -1.094279e-03 -7.859123e-04 -4.985666e-04 +-2.954931e-04 -1.695052e-04 +>TYI.EXP //14 +-7.555361e-04 -9.316565e-05 -4.655451e-06 -2.481301e-07 7.445428e-09 7.030406e-06 +-9.283859e-05 7.409674e-04 5.833695e-04 -8.366331e-05 -3.014123e-04 -2.931767e-04 +-2.181153e-04 -1.422076e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1103.edi b/examples/data/NEConductor/par1103.edi new file mode 100644 index 00000000..00d60c3a --- /dev/null +++ b/examples/data/NEConductor/par1103.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1103" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1103" +REFLAT=-30:12:20.4258 +REFLONG=139:41:18.2114 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1103" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.535900e-02 4.655654e-04 2.330882e-05 5.003685e-07 3.010192e-07 1.042761e-04 +-1.681488e-03 1.358258e-03 4.654070e-03 4.313361e-03 3.147412e-03 2.044896e-03 + 1.228705e-03 7.092192e-04 +>ZXXI ROT=ZROT //14 +-3.067547e-03 1.696568e-04 5.966439e-06 -6.353803e-07 -2.058894e-07 -9.090131e-05 + 3.932379e-05 -3.827918e-03 -1.442869e-03 5.885413e-04 1.219655e-03 1.173068e-03 + 8.865329e-04 5.858254e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865125e+02 1.241461e+02 7.346947e+01 4.197590e+01 2.350537e+01 1.317104e+01 + 8.358866e+00 6.602897e+00 5.475497e+00 4.272393e+00 3.010034e+00 1.923937e+00 + 1.146185e+00 6.590401e-01 +>ZXYI ROT=ZROT //14 + 3.082032e+02 1.471581e+02 7.805630e+01 4.294174e+01 2.400291e+01 1.271866e+01 + 6.029006e+00 2.960819e+00 2.005066e+00 1.768281e+00 1.577831e+00 1.252229e+00 + 8.803498e-01 5.629653e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865782e+02 -1.241457e+02 -7.346917e+01 -4.197590e+01 -2.350537e+01 -1.317116e+01 +-8.357247e+00 -6.602551e+00 -5.483740e+00 -4.283377e+00 -3.019328e+00 -1.930402e+00 +-1.150193e+00 -6.613829e-01 +>ZYXI ROT=ZROT //14 +-3.082061e+02 -1.471548e+02 -7.805628e+01 -4.294174e+01 -2.400291e+01 -1.271862e+01 +-6.029384e+00 -2.954770e+00 -1.999115e+00 -1.767423e+00 -1.580061e+00 -1.255262e+00 +-8.829514e-01 -5.647896e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.449706e-03 1.950047e-05 3.435854e-07 1.959351e-07 -1.220131e-07 -7.479481e-05 + 1.272384e-03 -1.435449e-03 -2.592909e-03 -1.577011e-03 -7.989461e-04 -3.900501e-04 +-1.949677e-04 -1.028368e-04 +>ZYYI ROT=ZROT //14 + 2.447352e-04 6.131285e-06 -2.904853e-07 -1.317472e-07 2.488613e-07 7.368138e-05 + 7.893483e-05 2.275954e-03 -2.256956e-05 -8.221316e-04 -6.859453e-04 -4.193095e-04 +-2.275245e-04 -1.188034e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.475328e-03 -2.686245e-04 -3.721462e-05 -2.173509e-07 1.386360e-08 2.549303e-07 +-3.073083e-05 -5.061857e-05 2.670253e-04 3.287255e-04 2.485859e-04 1.606332e-04 + 9.587447e-05 5.510042e-05 +>TXI.EXP //14 +-2.941464e-04 2.912874e-05 8.315569e-06 9.016844e-07 2.284037e-09 -1.795755e-06 + 3.154218e-05 -1.880506e-04 -1.927619e-04 3.876112e-07 8.297787e-05 8.917727e-05 + 6.870722e-05 4.551516e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 4.418969e-03 8.332864e-04 7.506786e-06 -1.392004e-06 -1.117781e-09 -3.766156e-06 + 1.233165e-04 1.405340e-04 -9.489367e-04 -1.068655e-03 -7.790252e-04 -4.962800e-04 +-2.945139e-04 -1.690152e-04 +>TYI.EXP //14 +-9.666858e-04 -1.013394e-04 -4.228805e-06 -3.315585e-08 1.600508e-08 6.381713e-06 +-9.561977e-05 6.695560e-04 6.016139e-04 -5.248370e-05 -2.862886e-04 -2.870677e-04 +-2.156941e-04 -1.412169e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1104.edi b/examples/data/NEConductor/par1104.edi new file mode 100644 index 00000000..14261d51 --- /dev/null +++ b/examples/data/NEConductor/par1104.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1104" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1104" +REFLAT=-30:12:16.4464 +REFLONG=139:40:59.1892 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1104" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.774230e-02 5.235681e-04 2.821423e-05 5.845546e-07 1.502536e-07 6.049587e-05 +-1.300974e-03 8.955424e-04 3.951553e-03 3.741337e-03 2.744419e-03 1.791400e-03 + 1.079911e-03 6.243287e-04 +>ZXXI ROT=ZROT //14 +-3.116418e-03 1.981836e-04 7.449686e-06 -7.721613e-07 -2.199672e-07 -7.869938e-05 + 1.840603e-04 -3.254799e-03 -1.374663e-03 4.568968e-04 1.037613e-03 1.013318e-03 + 7.721633e-04 5.127999e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865007e+02 1.241484e+02 7.346950e+01 4.197590e+01 2.350537e+01 1.317124e+01 + 8.357550e+00 6.604866e+00 5.477945e+00 4.274259e+00 3.011324e+00 1.924741e+00 + 1.146655e+00 6.593079e-01 +>ZXYI ROT=ZROT //14 + 3.082043e+02 1.471591e+02 7.805631e+01 4.294173e+01 2.400291e+01 1.271872e+01 + 6.028099e+00 2.958913e+00 2.005057e+00 1.768811e+00 1.578455e+00 1.252753e+00 + 8.807181e-01 5.631980e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865763e+02 -1.241456e+02 -7.346918e+01 -4.197590e+01 -2.350537e+01 -1.317132e+01 +-8.356267e+00 -6.604052e+00 -5.485501e+00 -4.284735e+00 -3.020265e+00 -1.930985e+00 +-1.150533e+00 -6.615764e-01 +>ZYXI ROT=ZROT //14 +-3.082056e+02 -1.471548e+02 -7.805629e+01 -4.294174e+01 -2.400291e+01 -1.271867e+01 +-6.028591e+00 -2.953465e+00 -1.999116e+00 -1.767808e+00 -1.580518e+00 -1.255643e+00 +-8.832187e-01 -5.649582e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.173566e-03 4.121727e-05 4.975827e-07 1.803397e-07 -2.236071e-08 -4.116749e-05 + 9.749400e-04 -1.087009e-03 -2.060692e-03 -1.131159e-03 -4.842728e-04 -1.929052e-04 +-7.961984e-05 -3.713568e-05 +>ZYYI ROT=ZROT //14 + 2.651540e-04 1.240175e-05 -3.544990e-07 -1.389191e-07 1.571084e-07 6.129586e-05 +-4.009514e-05 1.852367e-03 -8.661046e-05 -7.258645e-04 -5.448701e-04 -2.946976e-04 +-1.384671e-04 -6.208214e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.570147e-03 -2.717508e-04 -3.746002e-05 -2.205755e-07 1.095029e-08 -9.167558e-08 +-2.128900e-05 -5.677329e-05 2.313905e-04 3.011554e-04 2.303633e-04 1.491759e-04 + 8.906907e-05 5.118957e-05 +>TXI.EXP //14 +-2.979503e-04 2.943378e-05 8.368068e-06 9.114371e-07 1.624944e-09 -1.320596e-06 + 2.831890e-05 -1.580516e-04 -1.841345e-04 -6.724356e-06 7.420637e-05 8.189959e-05 + 6.353014e-05 4.218992e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 6.491140e-03 8.836768e-04 5.355369e-06 -1.416901e-06 7.629016e-09 -1.883190e-06 + 9.044297e-05 1.684396e-04 -8.350966e-04 -9.916680e-04 -7.318450e-04 -4.675488e-04 +-2.776551e-04 -1.593704e-04 +>TYI.EXP //14 +-1.184805e-03 -1.073044e-04 -3.550607e-06 1.591921e-07 2.036640e-08 5.199327e-06 +-8.926051e-05 5.720625e-04 5.857168e-04 -2.441473e-05 -2.592684e-04 -2.669712e-04 +-2.021644e-04 -1.327657e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1105.edi b/examples/data/NEConductor/par1105.edi new file mode 100644 index 00000000..aa94dbbf --- /dev/null +++ b/examples/data/NEConductor/par1105.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1105" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1105" +REFLAT=-30:12:13.3584 +REFLONG=139:40:34.7055 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1105" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.013472e-02 5.880119e-04 3.402413e-05 6.731289e-07 3.821287e-08 3.104630e-05 +-9.894612e-04 5.388214e-04 3.352551e-03 3.249106e-03 2.395167e-03 1.570291e-03 + 9.495954e-04 5.498370e-04 +>ZXXI ROT=ZROT //14 +-2.945143e-03 2.327083e-04 9.319646e-06 -9.354360e-07 -2.250302e-07 -6.386814e-05 + 2.631918e-04 -2.750871e-03 -1.301774e-03 3.498034e-04 8.837173e-04 8.762386e-04 + 6.730937e-04 4.491683e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864889e+02 1.241512e+02 7.346952e+01 4.197589e+01 2.350538e+01 1.317140e+01 + 8.356451e+00 6.606393e+00 5.480010e+00 4.275850e+00 3.012432e+00 1.925437e+00 + 1.147063e+00 6.595405e-01 +>ZXYI ROT=ZROT //14 + 3.082064e+02 1.471602e+02 7.805630e+01 4.294173e+01 2.400291e+01 1.271874e+01 + 6.027509e+00 2.957240e+00 2.004995e+00 1.769238e+00 1.578978e+00 1.253199e+00 + 8.810342e-01 5.633990e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865742e+02 -1.241456e+02 -7.346918e+01 -4.197590e+01 -2.350537e+01 -1.317145e+01 +-8.355474e+00 -6.605217e+00 -5.486807e+00 -4.285683e+00 -3.020897e+00 -1.931369e+00 +-1.150754e+00 -6.617015e-01 +>ZYXI ROT=ZROT //14 +-3.082050e+02 -1.471548e+02 -7.805629e+01 -4.294174e+01 -2.400291e+01 -1.271869e+01 +-6.028049e+00 -2.952455e+00 -1.999179e+00 -1.768123e+00 -1.580854e+00 -1.255910e+00 +-8.833996e-01 -5.650700e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.871858e-03 6.327950e-05 6.153267e-07 1.645314e-07 1.240229e-08 -1.949509e-05 + 7.399105e-04 -8.198320e-04 -1.650726e-03 -7.973086e-04 -2.525981e-04 -4.944507e-05 + 3.717083e-06 1.017059e-05 +>ZYYI ROT=ZROT //14 + 2.829149e-04 1.871825e-05 -4.204663e-07 -1.429549e-07 7.821564e-08 4.809265e-05 +-1.102817e-04 1.515024e-03 -1.288993e-04 -6.470437e-04 -4.364864e-04 -2.014182e-04 +-7.287379e-05 -2.073110e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.676982e-03 -2.753155e-04 -3.775742e-05 -2.239874e-07 9.121509e-09 -2.662133e-07 +-1.394436e-05 -5.977607e-05 1.985109e-04 2.741899e-04 2.121298e-04 1.376214e-04 + 8.218748e-05 4.723134e-05 +>TXI.EXP //14 +-3.025039e-04 2.978739e-05 8.432947e-06 9.224056e-07 2.466071e-09 -9.198381e-07 + 2.455475e-05 -1.307315e-04 -1.741112e-04 -1.254449e-05 6.595718e-05 7.477068e-05 + 5.837182e-05 3.885115e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 8.621239e-03 9.150170e-04 3.014032e-06 -1.326328e-06 1.065370e-08 -6.416693e-07 + 6.345030e-05 1.851814e-04 -7.247899e-04 -9.116741e-04 -6.812821e-04 -4.363988e-04 +-2.593017e-04 -1.488550e-04 +>TYI.EXP //14 +-1.414379e-03 -1.105389e-04 -2.635880e-06 3.184162e-07 2.356021e-08 4.018041e-06 +-7.992682e-05 4.792714e-04 5.625345e-04 2.480528e-07 -2.324868e-04 -2.460658e-04 +-1.877602e-04 -1.236649e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1106.edi b/examples/data/NEConductor/par1106.edi new file mode 100644 index 00000000..a78f6ef7 --- /dev/null +++ b/examples/data/NEConductor/par1106.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1106" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1106" +REFLAT=-30:12:10.3336 +REFLONG=139:40:16.5797 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1106" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.399859e-02 6.635016e-04 4.296942e-05 8.200482e-07 -3.346959e-08 1.236347e-05 +-7.402863e-04 2.701442e-04 2.845155e-03 2.828769e-03 2.095138e-03 1.379227e-03 + 8.365618e-04 4.851083e-04 +>ZXXI ROT=ZROT //14 +-2.639144e-03 2.804250e-04 1.256864e-05 -1.168948e-06 -2.059335e-07 -4.921978e-05 + 2.964856e-04 -2.313136e-03 -1.227436e-03 2.631256e-04 7.544807e-04 7.595453e-04 + 5.880216e-04 3.942297e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864738e+02 1.241544e+02 7.346953e+01 4.197589e+01 2.350538e+01 1.317150e+01 + 8.355555e+00 6.607554e+00 5.481744e+00 4.277201e+00 3.013379e+00 1.926035e+00 + 1.147415e+00 6.597415e-01 +>ZXYI ROT=ZROT //14 + 3.082090e+02 1.471615e+02 7.805630e+01 4.294172e+01 2.400291e+01 1.271873e+01 + 6.027152e+00 2.955786e+00 2.004895e+00 1.769581e+00 1.579414e+00 1.253577e+00 + 8.813041e-01 5.635716e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865717e+02 -1.241455e+02 -7.346918e+01 -4.197590e+01 -2.350537e+01 -1.317154e+01 +-8.354838e+00 -6.606123e+00 -5.487773e+00 -4.286330e+00 -3.021307e+00 -1.931610e+00 +-1.150890e+00 -6.617774e-01 +>ZYXI ROT=ZROT //14 +-3.082043e+02 -1.471547e+02 -7.805628e+01 -4.294174e+01 -2.400291e+01 -1.271869e+01 +-6.027689e+00 -2.951667e+00 -1.999284e+00 -1.768384e+00 -1.581100e+00 -1.256093e+00 +-8.835175e-01 -5.651407e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.548972e-03 8.556784e-05 6.957059e-07 1.510896e-07 1.105150e-08 -6.362162e-06 + 5.562640e-04 -6.153882e-04 -1.335193e-03 -5.496318e-04 -8.454244e-05 5.301574e-05 + 6.266525e-05 4.347805e-05 +>ZYYI ROT=ZROT //14 + 2.967785e-04 2.506729e-05 -4.807848e-07 -1.447861e-07 2.382710e-08 3.595452e-05 +-1.467678e-04 1.246109e-03 -1.545239e-04 -5.818687e-04 -3.534202e-04 -1.322570e-04 +-2.525772e-05 8.880151e-06 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.799063e-03 -2.794155e-04 -3.812972e-05 -2.277154e-07 8.501506e-09 -3.282043e-07 +-8.483838e-06 -6.024087e-05 1.689525e-04 2.487052e-04 1.946143e-04 1.264624e-04 + 7.552922e-05 4.339924e-05 +>TXI.EXP //14 +-3.080629e-04 3.019866e-05 8.514020e-06 9.349848e-07 4.175476e-09 -6.061961e-07 + 2.070528e-05 -1.066209e-04 -1.633696e-04 -1.719898e-05 5.840361e-05 6.803056e-05 + 5.343346e-05 3.563697e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.081552e-02 9.242140e-04 6.134230e-07 -1.124438e-06 9.462533e-09 9.761733e-08 + 4.241254e-05 1.923187e-04 -6.224018e-04 -8.330944e-04 -6.305208e-04 -4.048751e-04 +-2.406743e-04 -1.381716e-04 +>TYI.EXP //14 +-1.657614e-03 -1.104817e-04 -1.525842e-06 4.354540e-07 2.617217e-08 2.966168e-06 +-6.925225e-05 3.949395e-04 5.346445e-04 2.116183e-05 -2.071324e-04 -2.255262e-04 +-1.733681e-04 -1.144977e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1107.edi b/examples/data/NEConductor/par1107.edi new file mode 100644 index 00000000..6fcc92b2 --- /dev/null +++ b/examples/data/NEConductor/par1107.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1107" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1107" +REFLAT=-30:12:07.2803 +REFLONG=139:39:55.7296 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1107" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.010284e-02 7.550122e-04 5.611314e-05 1.057901e-06 -7.077556e-08 1.342764e-06 +-5.447496e-04 7.257963e-05 2.416670e-03 2.471089e-03 1.838531e-03 1.214926e-03 + 7.390181e-04 4.291559e-04 +>ZXXI ROT=ZROT //14 +-2.249877e-03 3.442038e-04 1.760223e-05 -1.504355e-06 -1.689094e-07 -3.625757e-05 + 2.996645e-04 -1.936328e-03 -1.153744e-03 1.931301e-04 6.462609e-04 6.605854e-04 + 5.152897e-04 3.470214e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864562e+02 1.241581e+02 7.346953e+01 4.197588e+01 2.350538e+01 1.317158e+01 + 8.354838e+00 6.608420e+00 5.483200e+00 4.278347e+00 3.014188e+00 1.926548e+00 + 1.147718e+00 6.599147e-01 +>ZXYI ROT=ZROT //14 + 3.082123e+02 1.471629e+02 7.805629e+01 4.294172e+01 2.400291e+01 1.271871e+01 + 6.026958e+00 2.954532e+00 2.004770e+00 1.769857e+00 1.579777e+00 1.253896e+00 + 8.815343e-01 5.637195e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865686e+02 -1.241454e+02 -7.346919e+01 -4.197590e+01 -2.350537e+01 -1.317160e+01 +-8.354333e+00 -6.606830e+00 -5.488490e+00 -4.286760e+00 -3.021560e+00 -1.931750e+00 +-1.150965e+00 -6.618188e-01 +>ZYXI ROT=ZROT //14 +-3.082035e+02 -1.471547e+02 -7.805629e+01 -4.294174e+01 -2.400291e+01 -1.271867e+01 +-6.027460e+00 -2.951049e+00 -1.999413e+00 -1.768602e+00 -1.581280e+00 -1.256214e+00 +-8.835907e-01 -5.651823e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-2.204313e-03 1.079651e-04 7.457132e-07 1.423110e-07 -4.940750e-09 9.684687e-07 + 4.140097e-04 -4.588971e-04 -1.091579e-03 -3.671146e-04 3.565281e-05 1.247713e-04 + 1.034006e-04 6.634588e-05 +>ZYYI ROT=ZROT //14 + 3.067604e-04 3.144092e-05 -5.261167e-07 -1.458649e-07 -4.166068e-09 2.573137e-05 +-1.608677e-04 1.030818e-03 -1.678096e-04 -5.273238e-04 -2.896753e-04 -8.134273e-05 + 8.838849e-06 2.969662e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.947210e-03 -2.842056e-04 -3.862309e-05 -2.324601e-07 8.843973e-09 -3.238031e-07 +-4.586893e-06 -5.879156e-05 1.428346e-04 2.251321e-04 1.782099e-04 1.159714e-04 + 6.926141e-05 3.979030e-05 +>TXI.EXP //14 +-3.149967e-04 3.067297e-05 8.616559e-06 9.501874e-07 6.059331e-09 -3.745444e-07 + 1.706796e-05 -8.582838e-05 -1.523897e-04 -2.084700e-05 5.160168e-05 6.179781e-05 + 4.882226e-05 3.262269e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.309190e-02 9.077528e-04 -1.679837e-06 -8.288530e-07 5.527808e-09 4.812289e-07 + 2.670167e-05 1.918203e-04 -5.299508e-04 -7.584693e-04 -5.814980e-04 -3.742473e-04 +-2.225366e-04 -1.277607e-04 +>TYI.EXP //14 +-1.917785e-03 -1.065109e-04 -2.860567e-07 5.077962e-07 2.765596e-08 2.099127e-06 +-5.844848e-05 3.207217e-04 5.040239e-04 3.843513e-05 -1.837952e-04 -2.060273e-04 +-1.595223e-04 -1.056226e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1108.edi b/examples/data/NEConductor/par1108.edi new file mode 100644 index 00000000..83974e81 --- /dev/null +++ b/examples/data/NEConductor/par1108.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1108" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1108" +REFLAT=-30:12:03.2791 +REFLONG=139:39:34.8928 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1108" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.241727e-02 1.025135e-03 6.632234e-05 1.235708e-06 -1.475281e-07 -4.289854e-06 +-4.071163e-04 -1.902955e-04 2.336113e-03 2.669134e-03 2.069641e-03 1.394312e-03 + 8.557473e-04 4.987547e-04 +>ZXXI ROT=ZROT //14 +-1.066840e-03 4.574917e-04 2.019161e-05 -1.942438e-06 -1.515239e-07 -2.680660e-05 + 3.103391e-04 -1.781911e-03 -1.422275e-03 4.115644e-05 6.381181e-04 7.154340e-04 + 5.786126e-04 3.964365e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864458e+02 1.241622e+02 7.346951e+01 4.197588e+01 2.350538e+01 1.317163e+01 + 8.354246e+00 6.609103e+00 5.484452e+00 4.279310e+00 3.014860e+00 1.926970e+00 + 1.147966e+00 6.600567e-01 +>ZXYI ROT=ZROT //14 + 3.082169e+02 1.471645e+02 7.805626e+01 4.294172e+01 2.400291e+01 1.271868e+01 + 6.026860e+00 2.953425e+00 2.004661e+00 1.770101e+00 1.580088e+00 1.254164e+00 + 8.817256e-01 5.638415e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865575e+02 -1.241453e+02 -7.346924e+01 -4.197590e+01 -2.350538e+01 -1.317164e+01 +-8.353921e+00 -6.607466e+00 -5.488910e+00 -4.286815e+00 -3.021501e+00 -1.931675e+00 +-1.150908e+00 -6.617830e-01 +>ZYXI ROT=ZROT //14 +-3.081985e+02 -1.471548e+02 -7.805632e+01 -4.294174e+01 -2.400291e+01 -1.271865e+01 +-6.027294e+00 -2.950627e+00 -1.999715e+00 -1.768835e+00 -1.581377e+00 -1.256232e+00 +-8.835765e-01 -5.651632e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.853617e-03 1.244543e-04 8.053099e-07 1.216475e-07 -8.972305e-09 4.604159e-06 + 3.264805e-04 -2.035155e-04 -1.253759e-03 -8.342676e-04 -4.131445e-04 -2.040116e-04 +-1.054640e-04 -5.701021e-05 +>ZYYI ROT=ZROT //14 + 3.073776e-04 3.459760e-05 -6.289318e-07 -1.461836e-07 1.509461e-08 1.939453e-05 +-1.988365e-04 1.078467e-03 2.261698e-04 -3.762303e-04 -3.429975e-04 -2.099784e-04 +-1.157097e-04 -6.208615e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 7.374378e-03 -3.806793e-04 -3.977225e-05 2.254404e-08 7.040333e-09 -3.255374e-07 +-2.863799e-06 -6.849083e-05 1.495139e-04 2.494644e-04 1.987620e-04 1.292789e-04 + 7.714072e-05 4.430292e-05 +>TXI.EXP //14 +-1.580592e-04 4.370038e-05 1.037397e-05 8.021273e-07 9.176940e-09 -2.800793e-07 + 1.693486e-05 -8.490370e-05 -1.730670e-04 -2.729951e-05 5.632922e-05 6.862474e-05 + 5.434355e-05 3.632375e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.544407e-02 8.616283e-04 -3.676825e-06 -4.731847e-07 7.766108e-10 6.619686e-07 + 1.469082e-05 1.880578e-04 -4.481532e-04 -6.950275e-04 -5.409660e-04 -3.490799e-04 +-2.076420e-04 -1.192111e-04 +>TYI.EXP //14 +-2.196674e-03 -9.797738e-05 9.957183e-07 5.413594e-07 2.688844e-08 1.388138e-06 +-4.833100e-05 2.559478e-04 4.773589e-04 5.499544e-05 -1.635044e-04 -1.896527e-04 +-1.480415e-04 -9.830009e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1109.edi b/examples/data/NEConductor/par1109.edi new file mode 100644 index 00000000..734d9db4 --- /dev/null +++ b/examples/data/NEConductor/par1109.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1109" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1109" +REFLAT=-30:12:00.2241 +REFLONG=139:39:14.0436 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1109" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.771605e-02 1.137075e-03 7.857189e-05 1.472211e-06 -1.394960e-07 -7.091359e-06 +-2.861011e-04 -2.780617e-04 1.977379e-03 2.339283e-03 1.822272e-03 1.231264e-03 + 7.573237e-04 4.418698e-04 +>ZXXI ROT=ZROT //14 +-3.942815e-04 5.194207e-04 2.451379e-05 -2.341246e-06 -9.126224e-08 -1.808331e-05 + 2.795630e-04 -1.468554e-03 -1.312593e-03 1.460513e-06 5.480305e-04 6.248475e-04 + 5.087463e-04 3.498499e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.864501e+02 1.241664e+02 7.346946e+01 4.197588e+01 2.350537e+01 1.317166e+01 + 8.353817e+00 6.609542e+00 5.485471e+00 4.280130e+00 3.015446e+00 1.927346e+00 + 1.148190e+00 6.601852e-01 +>ZXYI ROT=ZROT //14 + 3.082240e+02 1.471660e+02 7.805621e+01 4.294172e+01 2.400291e+01 1.271865e+01 + 6.026850e+00 2.952518e+00 2.004507e+00 1.770275e+00 1.580338e+00 1.254390e+00 + 8.818921e-01 5.639498e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865527e+02 -1.241451e+02 -7.346924e+01 -4.197590e+01 -2.350538e+01 -1.317166e+01 +-8.353609e+00 -6.607891e+00 -5.489334e+00 -4.287015e+00 -3.021595e+00 -1.931717e+00 +-1.150927e+00 -6.617919e-01 +>ZYXI ROT=ZROT //14 +-3.081969e+02 -1.471547e+02 -7.805632e+01 -4.294174e+01 -2.400291e+01 -1.271863e+01 +-6.027227e+00 -2.950217e+00 -1.999838e+00 -1.768987e+00 -1.581480e+00 -1.256289e+00 +-8.836046e-01 -5.651764e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.427705e-03 1.453635e-04 8.340796e-07 1.206139e-07 -1.193718e-08 6.123665e-06 + 2.336838e-04 -1.212195e-04 -1.038436e-03 -6.492004e-04 -2.810138e-04 -1.202813e-04 +-5.612542e-05 -2.881474e-05 +>ZYYI ROT=ZROT //14 + 3.142712e-04 4.033250e-05 -6.227921e-07 -1.464071e-07 1.573591e-08 1.272188e-05 +-1.824334e-04 8.867896e-04 1.789055e-04 -3.429919e-04 -2.871209e-04 -1.588096e-04 +-7.841940e-05 -3.806374e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 7.560823e-03 -3.880831e-04 -4.052768e-05 1.536787e-08 9.497290e-09 -2.684979e-07 +-5.966549e-07 -6.329357e-05 1.233852e-04 2.230188e-04 1.799458e-04 1.172152e-04 + 6.993485e-05 4.015488e-05 +>TXI.EXP //14 +-1.633114e-04 4.440733e-05 1.053074e-05 8.231729e-07 9.445380e-09 -1.396361e-07 + 1.336431e-05 -6.580593e-05 -1.583686e-04 -2.983024e-05 4.907938e-05 6.162994e-05 + 4.909397e-05 3.287450e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 + 1.777917e-02 7.862177e-04 -5.182108e-06 -9.893387e-08 -3.751037e-09 6.622644e-07 + 7.052476e-06 1.774743e-04 -3.763791e-04 -6.307139e-04 -4.974435e-04 -3.216150e-04 +-1.913184e-04 -1.098293e-04 +>TYI.EXP //14 +-2.487822e-03 -8.481870e-05 2.210906e-06 5.409265e-07 2.363877e-08 8.951860e-07 +-3.920768e-05 2.022684e-04 4.445760e-04 6.577752e-05 -1.445491e-04 -1.728598e-04 +-1.358336e-04 -9.039012e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1110.edi b/examples/data/NEConductor/par1110.edi new file mode 100644 index 00000000..3ed1ee5b --- /dev/null +++ b/examples/data/NEConductor/par1110.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1110" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1110" +REFLAT=-30:13:02.721 +REFLONG=139:45:36.5611 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1110" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.655138e-02 -1.397424e-04 -2.571734e-05 -4.815116e-07 2.119949e-06 4.166486e-04 +-3.965888e-03 3.841999e-03 1.022424e-02 9.833578e-03 7.401187e-03 4.866786e-03 + 2.935390e-03 1.696266e-03 +>ZXXI ROT=ZROT //14 + 1.935489e-03 -1.037544e-04 -8.212437e-06 5.025136e-07 3.266872e-07 -7.380137e-05 +-1.018222e-03 -8.043764e-03 -3.123782e-03 1.086978e-03 2.685477e-03 2.708078e-03 + 2.086007e-03 1.389987e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866648e+02 1.241470e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317025e+01 + 8.363285e+00 6.595325e+00 5.467372e+00 4.266590e+00 3.006198e+00 1.921615e+00 + 1.144851e+00 6.582864e-01 +>ZXYI ROT=ZROT //14 + 3.082695e+02 1.471583e+02 7.805610e+01 4.294172e+01 2.400291e+01 1.271819e+01 + 6.033282e+00 2.966692e+00 2.004489e+00 1.766241e+00 1.575740e+00 1.250594e+00 + 8.792501e-01 5.622882e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865991e+02 -1.241469e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.317038e+01 +-8.361387e+00 -6.596243e+00 -5.473833e+00 -4.274186e+00 -3.012370e+00 -1.925817e+00 +-1.147427e+00 -6.597849e-01 +>ZYXI ROT=ZROT //14 +-3.082273e+02 -1.471555e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271810e+01 +-6.033357e+00 -2.961701e+00 -2.000988e+00 -1.766145e+00 -1.577481e+00 -1.252695e+00 +-8.809806e-01 -5.634782e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.902872e-03 -1.972981e-04 -3.603150e-06 1.298405e-07 -2.079256e-06 -4.121852e-04 + 3.427466e-03 -3.694343e-03 -8.534434e-03 -7.903337e-03 -5.846756e-03 -3.811924e-03 +-2.289643e-03 -1.320799e-03 +>ZYYI ROT=ZROT //14 + 2.628462e-04 -6.869686e-05 -4.868793e-07 1.771038e-07 -2.550347e-07 -2.450467e-06 + 1.259030e-03 6.639336e-03 2.223031e-03 -1.092412e-03 -2.236736e-03 -2.175740e-03 +-1.650256e-03 -1.091147e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.300769e-02 -8.431554e-06 -3.358063e-05 -8.173738e-07 -2.814058e-08 -6.513100e-06 + 1.431752e-04 1.439282e-05 -7.553812e-04 -8.051238e-04 -5.909112e-04 -3.792458e-04 +-2.258647e-04 -1.298680e-04 +>TXI.EXP //14 +-7.349559e-04 -7.166418e-06 3.273281e-06 1.256365e-06 2.130151e-08 6.087333e-06 +-6.133360e-05 5.690280e-04 4.013358e-04 -5.460356e-05 -2.174859e-04 -2.177274e-04 +-1.644243e-04 -1.080938e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.771257e-02 -4.368498e-04 8.490458e-06 1.679399e-06 6.493954e-09 1.112898e-05 +-2.236946e-04 -2.448360e-05 1.204128e-03 1.236623e-03 8.880530e-04 5.648649e-04 + 3.352756e-04 1.924875e-04 +>TYI.EXP //14 + 1.544040e-03 6.354431e-05 1.761630e-07 -1.538666e-06 -1.545944e-08 -8.727969e-06 + 9.245862e-05 -8.987515e-04 -6.110777e-04 1.140032e-04 3.442264e-04 3.322519e-04 + 2.472181e-04 1.614260e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1111.edi b/examples/data/NEConductor/par1111.edi new file mode 100644 index 00000000..35abd3e6 --- /dev/null +++ b/examples/data/NEConductor/par1111.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1111" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1111" +REFLAT=-30:13:04.8123 +REFLONG=139:45:57.4297 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1111" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.946286e-02 -1.701189e-04 -3.062272e-05 -5.723929e-07 1.717481e-06 3.188347e-04 +-3.421018e-03 2.995843e-03 9.270797e-03 9.115773e-03 6.921281e-03 4.577230e-03 + 2.769910e-03 1.603068e-03 +>ZXXI ROT=ZROT //14 + 2.081382e-03 -1.263039e-04 -9.831952e-06 6.233060e-07 -5.437916e-08 -1.058105e-04 +-5.546928e-04 -7.352298e-03 -3.144638e-03 8.620886e-04 2.432675e-03 2.505464e-03 + 1.949243e-03 1.305931e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866828e+02 1.241487e+02 7.346934e+01 4.197588e+01 2.350537e+01 1.317055e+01 + 8.361742e+00 6.598310e+00 5.470264e+00 4.268581e+00 3.007482e+00 1.922377e+00 + 1.145284e+00 6.585298e-01 +>ZXYI ROT=ZROT //14 + 3.082812e+02 1.471590e+02 7.805607e+01 4.294172e+01 2.400291e+01 1.271845e+01 + 6.031384e+00 2.964727e+00 2.004847e+00 1.767025e+00 1.576489e+00 1.251158e+00 + 8.796197e-01 5.625117e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865977e+02 -1.241468e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.317067e+01 +-8.359785e+00 -6.598930e+00 -5.477630e+00 -4.277531e+00 -3.014836e+00 -1.927415e+00 +-1.148382e+00 -6.603343e-01 +>ZYXI ROT=ZROT //14 +-3.082270e+02 -1.471555e+02 -7.805626e+01 -4.294173e+01 -2.400291e+01 -1.271836e+01 +-6.031642e+00 -2.959074e+00 -2.000496e+00 -1.766746e+00 -1.578474e+00 -1.253631e+00 +-8.816801e-01 -5.639366e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.786305e-03 -2.042067e-04 -3.825939e-06 1.291725e-07 -1.487841e-06 -3.136678e-04 + 2.797036e-03 -2.847341e-03 -7.125393e-03 -6.618598e-03 -4.891138e-03 -3.190860e-03 +-1.918206e-03 -1.107057e-03 +>ZYYI ROT=ZROT //14 + 2.796497e-04 -7.134610e-05 -4.797553e-07 1.843742e-07 1.383884e-07 3.258376e-05 + 8.279752e-04 5.596528e-03 1.955110e-03 -8.975848e-04 -1.865849e-03 -1.817113e-03 +-1.379970e-03 -9.133809e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.311179e-02 -9.762650e-06 -3.384813e-05 -8.204469e-07 -1.187936e-08 -4.196482e-06 + 1.138750e-04 4.268788e-05 -6.683978e-04 -7.403963e-04 -5.488694e-04 -3.532034e-04 +-2.105167e-04 -1.210762e-04 +>TXI.EXP //14 +-7.430789e-04 -7.033482e-06 3.325364e-06 1.264708e-06 2.812386e-08 5.461630e-06 +-6.258898e-05 4.969476e-04 3.869781e-04 -3.555304e-05 -1.959502e-04 -2.005110e-04 +-1.524571e-04 -1.005057e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.863187e-02 -4.864059e-04 7.217011e-06 1.429114e-06 -5.439340e-09 8.152423e-06 +-1.924320e-04 -7.363590e-05 1.150877e-03 1.225207e-03 8.880296e-04 5.662271e-04 + 3.363184e-04 1.931288e-04 +>TYI.EXP //14 + 1.720710e-03 7.016183e-05 1.586961e-07 -1.386314e-06 -2.584501e-08 -8.620078e-06 + 1.016449e-04 -8.469617e-04 -6.354089e-04 8.980014e-05 3.347399e-04 3.295449e-04 + 2.467626e-04 1.615493e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1112.edi b/examples/data/NEConductor/par1112.edi new file mode 100644 index 00000000..4472f80e --- /dev/null +++ b/examples/data/NEConductor/par1112.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1112" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1112" +REFLAT=-30:13:08.7287 +REFLONG=139:46:11.008 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1112" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.258854e-02 -1.996418e-04 -3.612160e-05 -6.728835e-07 1.273950e-06 2.299548e-04 +-2.858828e-03 2.213786e-03 8.227084e-03 8.266338e-03 6.324299e-03 4.203416e-03 + 2.551235e-03 1.478527e-03 +>ZXXI ROT=ZROT //14 + 2.126911e-03 -1.516163e-04 -1.170936e-05 7.625216e-07 -3.037977e-07 -1.194817e-04 +-1.829337e-04 -6.561718e-03 -3.073315e-03 6.586250e-04 2.158488e-03 2.267062e-03 + 1.779710e-03 1.198182e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867046e+02 1.241505e+02 7.346933e+01 4.197588e+01 2.350537e+01 1.317083e+01 + 8.360237e+00 6.600936e+00 5.472991e+00 4.270519e+00 3.008759e+00 1.923149e+00 + 1.145726e+00 6.587790e-01 +>ZXYI ROT=ZROT //14 + 3.082945e+02 1.471597e+02 7.805605e+01 4.294172e+01 2.400292e+01 1.271863e+01 + 6.029869e+00 2.962772e+00 2.005079e+00 1.767719e+00 1.577193e+00 1.251705e+00 + 8.799859e-01 5.627366e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865964e+02 -1.241468e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.317093e+01 +-8.358370e+00 -6.601167e+00 -5.480767e+00 -4.280258e+00 -3.016834e+00 -1.928706e+00 +-1.149152e+00 -6.607769e-01 +>ZYXI ROT=ZROT //14 +-3.082260e+02 -1.471555e+02 -7.805625e+01 -4.294173e+01 -2.400291e+01 -1.271853e+01 +-6.030301e+00 -2.956850e+00 -2.000121e+00 -1.767259e+00 -1.579293e+00 -1.254395e+00 +-8.822471e-01 -5.643072e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.654700e-03 -2.100411e-04 -4.005712e-06 1.258050e-07 -9.719345e-07 -2.278853e-04 + 2.214085e-03 -2.116330e-03 -5.804198e-03 -5.388550e-03 -3.967220e-03 -2.586794e-03 +-1.555726e-03 -8.981571e-04 +>ZYYI ROT=ZROT //14 + 2.946572e-04 -7.323625e-05 -4.760124e-07 1.883683e-07 3.469090e-07 5.228226e-05 + 4.896907e-04 4.600031e-03 1.664226e-03 -7.319880e-04 -1.518773e-03 -1.474219e-03 +-1.118875e-03 -7.406973e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.323257e-02 -1.135277e-05 -3.416718e-05 -8.239845e-07 4.067764e-09 -2.392710e-06 + 8.697793e-05 6.509593e-05 -5.814194e-04 -6.716360e-04 -5.028367e-04 -3.243348e-04 +-1.934231e-04 -1.112673e-04 +>TXI.EXP //14 +-7.524048e-04 -6.874981e-06 3.387867e-06 1.274352e-06 2.919727e-08 4.576918e-06 +-6.052148e-05 4.248097e-04 3.676557e-04 -1.861790e-05 -1.740855e-04 -1.821617e-04 +-1.394101e-04 -9.213961e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.940251e-02 -5.228220e-04 5.673350e-06 1.108905e-06 -1.810674e-08 5.372958e-06 +-1.567369e-04 -1.180461e-04 1.064456e-03 1.180237e-03 8.639020e-04 5.521688e-04 + 3.281754e-04 1.884887e-04 +>TYI.EXP //14 + 1.900666e-03 7.467885e-05 4.661402e-08 -1.175723e-06 -2.835814e-08 -7.870261e-06 + 1.043945e-04 -7.689762e-04 -6.420995e-04 6.256582e-05 3.160359e-04 3.178736e-04 + 2.395893e-04 1.572671e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1113.edi b/examples/data/NEConductor/par1113.edi new file mode 100644 index 00000000..9fd81287 --- /dev/null +++ b/examples/data/NEConductor/par1113.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1113" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1113" +REFLAT=-30:13:11.774 +REFLONG=139:46:32.7739 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1113" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.603371e-02 -2.282811e-04 -4.240581e-05 -7.865622e-07 8.518206e-07 1.558443e-04 +-2.323827e-03 1.534882e-03 7.185483e-03 7.380206e-03 5.685059e-03 3.795606e-03 + 2.309964e-03 1.340385e-03 +>ZXXI ROT=ZROT //14 + 2.053333e-03 -1.806166e-04 -1.393356e-05 9.250973e-07 -4.227554e-07 -1.180115e-04 + 8.833267e-05 -5.746039e-03 -2.940984e-03 4.824160e-04 1.886981e-03 2.019305e-03 + 1.598500e-03 1.081033e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867315e+02 1.241523e+02 7.346931e+01 4.197588e+01 2.350537e+01 1.317107e+01 + 8.358846e+00 6.603155e+00 5.475477e+00 4.272331e+00 3.009976e+00 1.923892e+00 + 1.146155e+00 6.590220e-01 +>ZXYI ROT=ZROT //14 + 3.083095e+02 1.471603e+02 7.805602e+01 4.294172e+01 2.400291e+01 1.271872e+01 + 6.028731e+00 2.960899e+00 2.005200e+00 1.768314e+00 1.577830e+00 1.252216e+00 + 8.803343e-01 5.629528e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865954e+02 -1.241468e+02 -7.346922e+01 -4.197589e+01 -2.350537e+01 -1.317115e+01 +-8.357170e+00 -6.602967e+00 -5.483259e+00 -4.282383e+00 -3.018378e+00 -1.929698e+00 +-1.149742e+00 -6.611157e-01 +>ZYXI ROT=ZROT //14 +-3.082241e+02 -1.471554e+02 -7.805626e+01 -4.294173e+01 -2.400291e+01 -1.271863e+01 +-6.029302e+00 -2.955035e+00 -1.999863e+00 -1.767687e+00 -1.579942e+00 -1.254989e+00 +-8.826856e-01 -5.645923e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.512410e-03 -2.149161e-04 -4.139750e-06 1.156486e-07 -5.558097e-07 -1.586153e-04 + 1.709484e-03 -1.523300e-03 -4.645083e-03 -4.293954e-03 -3.139785e-03 -2.043653e-03 +-1.229078e-03 -7.097183e-04 +>ZYYI ROT=ZROT //14 + 3.071941e-04 -7.429841e-05 -4.864687e-07 1.939059e-07 4.047009e-07 5.930305e-05 + 2.459448e-04 3.709693e-03 1.381834e-03 -5.976809e-04 -1.214925e-03 -1.169472e-03 +-8.851935e-04 -5.855617e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.337123e-02 -1.321388e-05 -3.454540e-05 -8.280003e-07 1.660637e-08 -1.124072e-06 + 6.391553e-05 8.102040e-05 -4.991665e-04 -6.034450e-04 -4.562370e-04 -2.948749e-04 +-1.759267e-04 -1.012161e-04 +>TXI.EXP //14 +-7.630381e-04 -6.689207e-06 3.462399e-06 1.285376e-06 2.538848e-08 3.613591e-06 +-5.594485e-05 3.567164e-04 3.452474e-04 -4.239286e-06 -1.531376e-04 -1.639343e-04 +-1.262440e-04 -8.363365e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.999570e-02 -5.459399e-04 3.776187e-06 7.499915e-07 -2.597897e-08 3.109788e-06 +-1.216973e-04 -1.537338e-04 9.607772e-04 1.114454e-03 8.241647e-04 5.279817e-04 + 3.139685e-04 1.803557e-04 +>TYI.EXP //14 + 2.083892e-03 7.683491e-05 -1.124553e-07 -9.070536e-07 -2.380015e-08 -6.731432e-06 + 1.014267e-04 -6.780505e-04 -6.348892e-04 3.537492e-05 2.921788e-04 3.006364e-04 + 2.281000e-04 1.501135e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1114.edi b/examples/data/NEConductor/par1114.edi new file mode 100644 index 00000000..a84a1088 --- /dev/null +++ b/examples/data/NEConductor/par1114.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1114" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1114" +REFLAT=-30:13:14.793 +REFLONG=139:46:51.815 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1114" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.217593e-02 -1.401731e-04 -5.235538e-05 -9.563589e-07 3.378300e-07 8.112354e-05 +-1.726419e-03 6.959822e-04 6.260281e-03 6.818206e-03 5.349405e-03 3.605800e-03 + 2.205596e-03 1.282680e-03 +>ZXXI ROT=ZROT //14 + 2.013851e-03 -1.771411e-04 -1.856852e-05 1.047325e-06 -4.924964e-07 -1.035823e-04 + 3.607082e-04 -4.953754e-03 -3.076763e-03 2.092554e-04 1.658307e-03 1.861352e-03 + 1.501256e-03 1.024724e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867657e+02 1.241539e+02 7.346927e+01 4.197588e+01 2.350537e+01 1.317133e+01 + 8.357159e+00 6.605501e+00 5.478729e+00 4.274976e+00 3.011863e+00 1.925092e+00 + 1.146864e+00 6.594277e-01 +>ZXYI ROT=ZROT //14 + 3.083262e+02 1.471608e+02 7.805599e+01 4.294172e+01 2.400292e+01 1.271877e+01 + 6.027702e+00 2.958358e+00 2.004968e+00 1.768923e+00 1.578665e+00 1.252957e+00 + 8.808710e-01 5.632983e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866045e+02 -1.241476e+02 -7.346926e+01 -4.197589e+01 -2.350537e+01 -1.317136e+01 +-8.355994e+00 -6.604900e+00 -5.485071e+00 -4.283508e+00 -3.019053e+00 -1.930077e+00 +-1.149949e+00 -6.612298e-01 +>ZYXI ROT=ZROT //14 +-3.082279e+02 -1.471557e+02 -7.805625e+01 -4.294173e+01 -2.400292e+01 -1.271869e+01 +-6.028308e+00 -2.953663e+00 -2.000200e+00 -1.768237e+00 -1.580405e+00 -1.255309e+00 +-8.828807e-01 -5.647046e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.025294e-03 -2.394830e-04 -4.585671e-06 1.285322e-07 -2.417147e-07 -9.239821e-05 + 1.281790e-03 -7.971585e-04 -4.155186e-03 -4.191348e-03 -3.174062e-03 -2.107020e-03 +-1.280556e-03 -7.428584e-04 +>ZYYI ROT=ZROT //14 + 4.175554e-04 -8.372921e-05 -6.180637e-07 2.024922e-07 3.093892e-07 6.391366e-05 +-4.713645e-05 3.283443e-03 1.694117e-03 -3.390409e-04 -1.095322e-03 -1.138485e-03 +-8.923071e-04 -6.011558e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.499535e-02 6.190185e-05 -3.418536e-05 -9.234531e-07 3.001302e-08 -1.931276e-07 + 4.516669e-05 1.081112e-04 -4.616467e-04 -5.927535e-04 -4.522311e-04 -2.924538e-04 +-1.744195e-04 -1.003264e-04 +>TXI.EXP //14 +-9.313236e-04 -1.746509e-05 2.273938e-06 1.356495e-06 1.892708e-08 2.757324e-06 +-5.421121e-05 3.162133e-04 3.588745e-04 1.017661e-05 -1.470470e-04 -1.612077e-04 +-1.247849e-04 -8.279468e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.040159e-02 -5.576489e-04 1.415266e-06 3.969211e-07 -3.098002e-08 9.043031e-07 +-7.884486e-05 -1.859941e-04 8.055128e-04 1.001868e-03 7.519693e-04 4.831809e-04 + 2.874972e-04 1.651725e-04 +>TYI.EXP //14 + 2.277366e-03 7.651372e-05 -2.498265e-07 -5.882791e-07 -1.151170e-08 -4.919228e-06 + 9.056823e-05 -5.458639e-04 -6.057191e-04 1.045065e-06 2.547170e-04 2.710030e-04 + 2.075075e-04 1.370376e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1115.edi b/examples/data/NEConductor/par1115.edi new file mode 100644 index 00000000..789ae14a --- /dev/null +++ b/examples/data/NEConductor/par1115.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1115" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1115" +REFLAT=-30:13:17.8028 +REFLONG=139:47:09.948 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1115" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.752013e-02 -1.508904e-04 -6.230998e-05 -1.153785e-06 6.524913e-08 4.578257e-05 +-1.344532e-03 3.000870e-04 5.404255e-03 6.039771e-03 4.767837e-03 3.225718e-03 + 1.977527e-03 1.151246e-03 +>ZXXI ROT=ZROT //14 + 1.746367e-03 -2.144268e-04 -2.270772e-05 1.255153e-06 -4.058568e-07 -8.636883e-05 + 4.346074e-04 -4.243854e-03 -2.879708e-03 1.006255e-04 1.438333e-03 1.645151e-03 + 1.336833e-03 9.160269e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.868086e+02 1.241552e+02 7.346923e+01 4.197588e+01 2.350538e+01 1.317145e+01 + 8.356214e+00 6.606788e+00 5.480416e+00 4.276212e+00 3.012701e+00 1.925608e+00 + 1.147164e+00 6.595980e-01 +>ZXYI ROT=ZROT //14 + 3.083460e+02 1.471611e+02 7.805597e+01 4.294172e+01 2.400292e+01 1.271876e+01 + 6.027257e+00 2.956954e+00 2.004979e+00 1.769305e+00 1.579089e+00 1.253303e+00 + 8.811104e-01 5.634481e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866031e+02 -1.241476e+02 -7.346927e+01 -4.197589e+01 -2.350537e+01 -1.317147e+01 +-8.355247e+00 -6.605886e+00 -5.486485e+00 -4.284677e+00 -3.019891e+00 -1.930612e+00 +-1.150266e+00 -6.614115e-01 +>ZYXI ROT=ZROT //14 +-3.082258e+02 -1.471556e+02 -7.805626e+01 -4.294173e+01 -2.400291e+01 -1.271870e+01 +-6.027899e+00 -2.952550e+00 -2.000073e+00 -1.768491e+00 -1.580768e+00 -1.255635e+00 +-8.831190e-01 -5.648586e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.921466e-03 -2.430475e-04 -4.615250e-06 1.072599e-07 -7.951367e-08 -5.866456e-05 + 9.579791e-04 -4.891098e-04 -3.329457e-03 -3.373456e-03 -2.542631e-03 -1.687082e-03 +-1.026166e-03 -5.956283e-04 +>ZYYI ROT=ZROT //14 + 4.522575e-04 -8.423198e-05 -7.022629e-07 2.138192e-07 2.321216e-07 5.479355e-05 +-1.154865e-04 2.621294e-03 1.428228e-03 -2.699368e-04 -8.804925e-04 -9.116580e-04 +-7.142981e-04 -4.815220e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.519269e-02 6.013593e-05 -3.475245e-05 -9.295068e-07 3.072237e-08 2.266177e-07 + 3.038380e-05 1.105727e-04 -3.883068e-04 -5.261227e-04 -4.055266e-04 -2.626955e-04 +-1.566995e-04 -9.013742e-05 +>TXI.EXP //14 +-9.483541e-04 -1.729284e-05 2.380448e-06 1.371448e-06 1.154479e-08 1.964236e-06 +-4.633054e-05 2.572144e-04 3.302925e-04 2.028723e-05 -1.276929e-04 -1.434195e-04 +-1.116733e-04 -7.424872e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.051296e-02 -5.572659e-04 -1.429462e-06 9.616288e-08 -2.714378e-08 3.928450e-08 +-5.592402e-05 -1.980225e-04 7.067022e-04 9.273194e-04 7.034110e-04 4.528320e-04 + 2.695115e-04 1.548447e-04 +>TYI.EXP //14 + 2.465502e-03 7.341338e-05 -2.917270e-07 -2.363336e-07 -2.631596e-09 -3.781202e-06 + 8.068176e-05 -4.625649e-04 -5.820316e-04 -1.929631e-05 2.306555e-04 2.514134e-04 + 1.937028e-04 1.282094e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1116.edi b/examples/data/NEConductor/par1116.edi new file mode 100644 index 00000000..e87b4fcc --- /dev/null +++ b/examples/data/NEConductor/par1116.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1116" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1116" +REFLAT=-30:13:20.8203 +REFLONG=139:47:28.9898 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1116" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.434480e-02 -1.568404e-04 -7.499132e-05 -1.412777e-06 -9.691048e-08 2.159407e-05 +-1.025789e-03 -1.176578e-06 4.634730e-03 5.324688e-03 4.228170e-03 2.870469e-03 + 1.763450e-03 1.027634e-03 +>ZXXI ROT=ZROT //14 + 1.483324e-03 -2.592295e-04 -2.825950e-05 1.516614e-06 -2.763850e-07 -6.868382e-05 + 4.603063e-04 -3.597220e-03 -2.673864e-03 1.389669e-05 1.241608e-03 1.447091e-03 + 1.184376e-03 8.145564e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.868634e+02 1.241559e+02 7.346918e+01 4.197588e+01 2.350538e+01 1.317154e+01 + 8.355421e+00 6.607799e+00 5.481903e+00 4.277326e+00 3.013466e+00 1.926085e+00 + 1.147443e+00 6.597568e-01 +>ZXYI ROT=ZROT //14 + 3.083692e+02 1.471612e+02 7.805595e+01 4.294172e+01 2.400291e+01 1.271874e+01 + 6.026987e+00 2.955679e+00 2.004934e+00 1.769621e+00 1.579460e+00 1.253614e+00 + 8.813288e-01 5.635862e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865992e+02 -1.241474e+02 -7.346927e+01 -4.197589e+01 -2.350538e+01 -1.317155e+01 +-8.354650e+00 -6.606654e+00 -5.487566e+00 -4.285535e+00 -3.020496e+00 -1.930994e+00 +-1.150491e+00 -6.615402e-01 +>ZYXI ROT=ZROT //14 +-3.082275e+02 -1.471556e+02 -7.805626e+01 -4.294173e+01 -2.400292e+01 -1.271869e+01 +-6.027627e+00 -2.951668e+00 -2.000008e+00 -1.768702e+00 -1.581044e+00 -1.255875e+00 +-8.832911e-01 -5.649687e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.843064e-03 -2.437103e-04 -4.496785e-06 9.190420e-08 1.243418e-08 -3.521391e-05 + 7.052171e-04 -2.688872e-04 -2.652383e-03 -2.694473e-03 -2.016116e-03 -1.335890e-03 +-8.130636e-04 -4.722012e-04 +>ZYYI ROT=ZROT //14 + 4.968063e-04 -8.542120e-05 -8.570365e-07 2.092050e-07 1.450169e-07 4.468828e-05 +-1.464937e-04 2.072882e-03 1.193598e-03 -2.191123e-04 -7.046873e-04 -7.236567e-04 +-5.659460e-04 -3.815330e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.542330e-02 5.809768e-05 -3.544542e-05 -9.369098e-07 2.833428e-08 4.225476e-07 + 1.939438e-05 1.089938e-04 -3.246870e-04 -4.661980e-04 -3.631003e-04 -2.355717e-04 +-1.405286e-04 -8.083494e-05 +>TXI.EXP //14 +-9.679162e-04 -1.711086e-05 2.505067e-06 1.389221e-06 6.338979e-09 1.340410e-06 +-3.868969e-05 2.068496e-04 3.025401e-04 2.808256e-05 -1.106630e-04 -1.274233e-04 +-9.978787e-05 -6.647391e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.029528e-02 -5.491318e-04 -4.816635e-06 -9.665811e-08 -2.279179e-08 -4.630284e-07 +-3.767850e-05 -2.021344e-04 6.129323e-04 8.524797e-04 6.537396e-04 4.216034e-04 + 2.509691e-04 1.441901e-04 +>TYI.EXP //14 + 2.654443e-03 6.763191e-05 -1.512168e-07 1.177444e-07 3.769026e-09 -2.787497e-06 + 6.989368e-05 -3.853649e-04 -5.537127e-04 -3.678660e-05 2.073180e-04 2.317447e-04 + 1.796452e-04 1.191612e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1117_0.edi b/examples/data/NEConductor/par1117_0.edi new file mode 100644 index 00000000..6513b6f3 --- /dev/null +++ b/examples/data/NEConductor/par1117_0.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1117_0" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1117_0" +REFLAT=-30:13:25.7312 +REFLONG=139:47:48.0089 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1117_0" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.180589e-02 -1.578832e-04 -8.902232e-05 -1.701153e-06 -1.598137e-07 6.112639e-06 +-7.673167e-04 -2.207751e-04 3.956971e-03 4.683025e-03 3.740009e-03 2.547238e-03 + 1.567992e-03 9.145935e-04 +>ZXXI ROT=ZROT //14 + 1.246705e-03 -3.061717e-04 -3.456166e-05 1.815927e-06 -1.273188e-07 -5.234072e-05 + 4.526539e-04 -3.022623e-03 -2.469167e-03 -5.407182e-05 1.069130e-03 1.269842e-03 + 1.046562e-03 7.223220e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.869343e+02 1.241559e+02 7.346913e+01 4.197589e+01 2.350538e+01 1.317160e+01 + 8.354771e+00 6.608575e+00 5.483202e+00 4.278317e+00 3.014155e+00 1.926519e+00 + 1.147698e+00 6.599023e-01 +>ZXYI ROT=ZROT //14 + 3.083967e+02 1.471609e+02 7.805594e+01 4.294173e+01 2.400291e+01 1.271871e+01 + 6.026843e+00 2.954542e+00 2.004846e+00 1.769881e+00 1.579783e+00 1.253891e+00 + 8.815253e-01 5.637115e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865929e+02 -1.241469e+02 -7.346927e+01 -4.197589e+01 -2.350538e+01 -1.317160e+01 +-8.354178e+00 -6.607250e+00 -5.488387e+00 -4.286152e+00 -3.020919e+00 -1.931257e+00 +-1.150645e+00 -6.616277e-01 +>ZYXI ROT=ZROT //14 +-3.082329e+02 -1.471558e+02 -7.805626e+01 -4.294173e+01 -2.400292e+01 -1.271867e+01 +-6.027454e+00 -2.950972e+00 -1.999991e+00 -1.768878e+00 -1.581251e+00 -1.256048e+00 +-8.834120e-01 -5.650451e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.818122e-03 -2.408840e-04 -4.276204e-06 9.414870e-08 5.151579e-08 -1.960107e-05 + 5.125718e-04 -1.175485e-04 -2.105708e-03 -2.140004e-03 -1.584553e-03 -1.047283e-03 +-6.376746e-04 -3.705480e-04 +>ZYYI ROT=ZROT //14 + 5.804069e-04 -8.781255e-05 -1.050857e-06 1.813859e-07 6.987523e-08 3.502288e-05 +-1.532291e-04 1.626818e-03 9.909403e-04 -1.824438e-04 -5.630091e-04 -5.703950e-04 +-4.444089e-04 -2.994060e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.569313e-02 5.577319e-05 -3.629219e-05 -9.459592e-07 2.482190e-08 4.787266e-07 + 1.150115e-05 1.044801e-04 -2.701311e-04 -4.129266e-04 -3.250608e-04 -2.111879e-04 +-1.259774e-04 -7.246136e-05 +>TXI.EXP //14 +-9.902667e-04 -1.692803e-05 2.648673e-06 1.410245e-06 3.455946e-09 8.730391e-07 +-3.168399e-05 1.645639e-04 2.761193e-04 3.394221e-05 -9.582716e-05 -1.132088e-04 +-8.915294e-05 -5.949596e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.966392e-02 -5.379283e-04 -8.689442e-06 -1.397587e-07 -1.921718e-08 -7.032866e-07 +-2.377531e-05 -1.997870e-04 5.265865e-04 7.800949e-04 6.050151e-04 3.908374e-04 + 2.326750e-04 1.336729e-04 +>TYI.EXP //14 + 2.841245e-03 5.939430e-05 2.374235e-07 4.334468e-07 6.376891e-09 -1.972929e-06 + 5.915626e-05 -3.161858e-04 -5.226197e-04 -5.141295e-05 1.853821e-04 2.127304e-04 + 1.659051e-04 1.102737e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1117_1.edi b/examples/data/NEConductor/par1117_1.edi new file mode 100644 index 00000000..7760ab59 --- /dev/null +++ b/examples/data/NEConductor/par1117_1.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1117_1" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1117_1" +REFLAT=-30:13:28.7804 +REFLONG=139:48:10.6852 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1117_1" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.796682e-02 -1.580208e-04 -1.012512e-04 -1.950459e-06 -1.498749e-07 -2.964069e-06 +-5.626105e-04 -3.729845e-04 3.368265e-03 4.116049e-03 3.305784e-03 2.258285e-03 + 1.392744e-03 8.131040e-04 +>ZXXI ROT=ZROT //14 + 9.753021e-04 -3.455714e-04 -4.003638e-05 2.099169e-06 1.516919e-08 -3.829570e-05 + 4.239492e-04 -2.521293e-03 -2.271762e-03 -1.064346e-04 9.198865e-04 1.113644e-03 + 9.240519e-04 6.399371e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.870244e+02 1.241548e+02 7.346912e+01 4.197589e+01 2.350538e+01 1.317164e+01 + 8.354245e+00 6.609155e+00 5.484330e+00 4.279194e+00 3.014771e+00 1.926909e+00 + 1.147928e+00 6.600342e-01 +>ZXYI ROT=ZROT //14 + 3.084297e+02 1.471601e+02 7.805596e+01 4.294173e+01 2.400291e+01 1.271868e+01 + 6.026787e+00 2.953539e+00 2.004730e+00 1.770094e+00 1.580060e+00 1.254133e+00 + 8.817005e-01 5.638240e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865847e+02 -1.241464e+02 -7.346927e+01 -4.197589e+01 -2.350537e+01 -1.317164e+01 +-8.353809e+00 -6.607714e+00 -5.489007e+00 -4.286587e+00 -3.021206e+00 -1.931431e+00 +-1.150745e+00 -6.616844e-01 +>ZYXI ROT=ZROT //14 +-3.082408e+02 -1.471560e+02 -7.805627e+01 -4.294173e+01 -2.400291e+01 -1.271865e+01 +-6.027352e+00 -2.950424e+00 -2.000008e+00 -1.769027e+00 -1.581405e+00 -1.256169e+00 +-8.834941e-01 -5.650958e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.864545e-03 -2.349912e-04 -3.973133e-06 1.109235e-07 5.894180e-08 -9.657874e-06 + 3.685021e-04 -1.808693e-05 -1.668751e-03 -1.692073e-03 -1.234822e-03 -8.128536e-04 +-4.950128e-04 -2.878113e-04 +>ZYYI ROT=ZROT //14 + 7.242155e-04 -9.095342e-05 -1.275665e-06 1.407458e-07 1.506768e-08 2.654618e-05 +-1.455919e-04 1.268736e-03 8.183803e-04 -1.564034e-04 -4.499623e-04 -4.468105e-04 +-3.459643e-04 -2.327267e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.599938e-02 5.318403e-05 -3.729094e-05 -9.565249e-07 2.175432e-08 4.555376e-07 + 6.022032e-06 9.799656e-05 -2.237204e-04 -3.659205e-04 -2.912442e-04 -1.894653e-04 +-1.130050e-04 -6.499430e-05 +>TXI.EXP //14 +-1.015153e-03 -1.674703e-05 2.810667e-06 1.434196e-06 2.577693e-09 5.375895e-07 +-2.551894e-05 1.295327e-04 2.513182e-04 3.822227e-05 -8.298206e-05 -1.006735e-04 +-7.971709e-05 -5.328907e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.851246e-02 -5.301983e-04 -1.281799e-05 -2.561706e-08 -1.631108e-08 -7.706453e-07 +-1.358797e-05 -1.925230e-04 4.487100e-04 7.117555e-04 5.584918e-04 3.613640e-04 + 2.151301e-04 1.235824e-04 +>TYI.EXP //14 + 3.019362e-03 4.934610e-05 8.819979e-07 6.730117e-07 4.894203e-09 -1.338019e-06 + 4.910213e-05 -2.557381e-04 -4.901640e-04 -6.336188e-05 1.651829e-04 1.947938e-04 + 1.528265e-04 1.017807e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1118.edi b/examples/data/NEConductor/par1118.edi new file mode 100644 index 00000000..47154c30 --- /dev/null +++ b/examples/data/NEConductor/par1118.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1118" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1118" +REFLAT=-30:13:33.7475 +REFLONG=139:48:36.0645 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1118" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.606098e-02 6.340064e-05 -1.170607e-04 -2.198886e-06 -1.140843e-08 -9.868844e-06 +-2.553041e-04 -6.155564e-04 2.457116e-03 3.356710e-03 2.755977e-03 1.900287e-03 + 1.177764e-03 6.891174e-04 +>ZXXI ROT=ZROT //14 + 9.856033e-04 -3.165848e-04 -4.797756e-05 2.275874e-06 2.167207e-07 -1.628855e-05 + 3.401779e-04 -1.703947e-03 -2.063007e-03 -2.433211e-04 6.988272e-04 9.060376e-04 + 7.680283e-04 5.371475e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.872829e+02 1.241464e+02 7.346923e+01 4.197589e+01 2.350538e+01 1.317169e+01 + 8.353423e+00 6.609917e+00 5.486417e+00 4.280924e+00 3.016022e+00 1.927719e+00 + 1.148412e+00 6.603128e-01 +>ZXYI ROT=ZROT //14 + 3.085202e+02 1.471564e+02 7.805605e+01 4.294173e+01 2.400291e+01 1.271863e+01 + 6.026841e+00 2.951687e+00 2.004328e+00 1.770421e+00 1.580573e+00 1.254610e+00 + 8.820556e-01 5.640566e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865824e+02 -1.241464e+02 -7.346934e+01 -4.197589e+01 -2.350537e+01 -1.317168e+01 +-8.353254e+00 -6.608507e+00 -5.489727e+00 -4.286790e+00 -3.021224e+00 -1.931396e+00 +-1.150709e+00 -6.616600e-01 +>ZYXI ROT=ZROT //14 +-3.082632e+02 -1.471570e+02 -7.805627e+01 -4.294173e+01 -2.400291e+01 -1.271861e+01 +-6.027247e+00 -2.949677e+00 -2.000351e+00 -1.769355e+00 -1.581570e+00 -1.256227e+00 +-8.835025e-01 -5.650889e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.761872e-03 -2.497685e-04 -3.479150e-06 1.553423e-07 3.550738e-08 1.201359e-06 + 1.754887e-04 1.998996e-04 -1.219475e-03 -1.424372e-03 -1.078384e-03 -7.239228e-04 +-4.457361e-04 -2.604480e-04 +>ZYYI ROT=ZROT //14 + 9.233796e-04 -1.060161e-04 -1.969151e-06 8.739303e-08 -3.923691e-08 1.344496e-05 +-1.352088e-04 8.447151e-04 8.303468e-04 -3.079096e-05 -3.441303e-04 -3.738065e-04 +-3.007244e-04 -2.063360e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.816983e-02 1.231737e-04 -3.933224e-05 -1.000815e-06 2.023767e-08 3.296113e-07 +-4.821164e-07 8.795442e-05 -1.577833e-04 -3.072477e-04 -2.507794e-04 -1.634957e-04 +-9.743884e-05 -5.601573e-05 +>TXI.EXP //14 +-1.249899e-03 -2.695851e-05 2.248612e-06 1.501222e-06 6.951224e-09 1.485985e-07 +-1.621167e-05 7.885267e-05 2.219244e-04 4.766133e-05 -6.611975e-05 -8.531926e-05 +-6.832490e-05 -4.581699e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.416172e-02 -5.703457e-04 -1.978416e-05 3.546065e-07 -8.708113e-09 -6.165985e-07 +-3.085267e-07 -1.651554e-04 3.024302e-04 5.743388e-04 4.637137e-04 3.011105e-04 + 1.792188e-04 1.029199e-04 +>TYI.EXP //14 + 3.308689e-03 3.075077e-05 2.427858e-06 9.318259e-07 -1.916397e-09 -4.363452e-07 + 3.020317e-05 -1.488459e-04 -4.162410e-04 -8.242483e-05 1.258965e-04 1.588057e-04 + 1.262965e-04 8.447130e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1119.edi b/examples/data/NEConductor/par1119.edi new file mode 100644 index 00000000..f291ba1b --- /dev/null +++ b/examples/data/NEConductor/par1119.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1119" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1119" +REFLAT=-30:13:38.7049 +REFLONG=139:49:00.5361 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1119" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.674308e-02 5.409446e-05 -1.188629e-04 -2.237128e-06 2.161860e-08 -9.513161e-06 +-1.716224e-04 -6.274679e-04 2.088833e-03 2.975001e-03 2.457101e-03 1.698371e-03 + 1.054230e-03 6.172931e-04 +>ZXXI ROT=ZROT //14 + 1.221002e-03 -3.191818e-04 -4.862653e-05 2.357881e-06 2.138406e-07 -1.027373e-05 + 2.925431e-04 -1.398562e-03 -1.890712e-03 -2.599746e-04 6.055887e-04 8.018111e-04 + 6.839218e-04 4.797432e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.874764e+02 1.241385e+02 7.346934e+01 4.197588e+01 2.350538e+01 1.317169e+01 + 8.353197e+00 6.610095e+00 5.487083e+00 4.281457e+00 3.016399e+00 1.927962e+00 + 1.148557e+00 6.603963e-01 +>ZXYI ROT=ZROT //14 + 3.085840e+02 1.471535e+02 7.805611e+01 4.294172e+01 2.400291e+01 1.271861e+01 + 6.026901e+00 2.951086e+00 2.004194e+00 1.770532e+00 1.580734e+00 1.254756e+00 + 8.821630e-01 5.641266e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865753e+02 -1.241460e+02 -7.346935e+01 -4.197589e+01 -2.350537e+01 -1.317168e+01 +-8.353092e+00 -6.608701e+00 -5.490011e+00 -4.286948e+00 -3.021313e+00 -1.931445e+00 +-1.150736e+00 -6.616745e-01 +>ZYXI ROT=ZROT //14 +-3.082693e+02 -1.471571e+02 -7.805627e+01 -4.294173e+01 -2.400291e+01 -1.271860e+01 +-6.027253e+00 -2.949394e+00 -2.000388e+00 -1.769440e+00 -1.581636e+00 -1.256271e+00 +-8.835285e-01 -5.651037e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.641849e-03 -2.443844e-04 -3.220242e-06 1.395107e-07 2.521586e-08 2.444701e-06 + 1.216000e-04 2.013880e-04 -9.758006e-04 -1.153602e-03 -8.619244e-04 -5.766667e-04 +-3.553812e-04 -2.078534e-04 +>ZYYI ROT=ZROT //14 + 6.801888e-04 -1.051212e-04 -2.105461e-06 8.058555e-08 -4.817266e-08 9.265162e-06 +-1.116458e-04 6.509299e-04 6.997025e-04 -2.850905e-05 -2.809759e-04 -2.996469e-04 +-2.399438e-04 -1.645713e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.850848e-02 1.211972e-04 -4.049968e-05 -1.011885e-06 2.140404e-08 2.529622e-07 +-1.784997e-06 7.865553e-05 -1.286299e-04 -2.734558e-04 -2.260016e-04 -1.475299e-04 +-8.789798e-05 -5.052260e-05 +>TXI.EXP //14 +-1.281010e-03 -2.682329e-05 2.444685e-06 1.524707e-06 8.604220e-09 5.567855e-08 +-1.254857e-05 5.962585e-05 2.007631e-04 4.875810e-05 -5.738630e-05 -7.633227e-05 +-6.145908e-05 -4.127517e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.055178e-02 -6.510219e-04 -2.136484e-05 3.148301e-07 -6.587035e-09 -5.052573e-07 + 2.343005e-06 -1.510653e-04 2.525380e-04 5.238568e-04 4.284696e-04 2.786377e-04 + 1.658106e-04 9.520212e-05 +>TYI.EXP //14 + 3.370648e-03 2.787301e-05 2.905117e-06 1.022441e-06 -9.992224e-10 -2.333516e-07 + 2.403276e-05 -1.151698e-04 -3.860201e-04 -8.764143e-05 1.119337e-04 1.456154e-04 + 1.164724e-04 7.803259e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par11ew.edi b/examples/data/NEConductor/par11ew.edi new file mode 100644 index 00000000..25412c21 --- /dev/null +++ b/examples/data/NEConductor/par11ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par11ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par11ew" +REFLAT=-30:12:45.4135 +REFLONG=139:42:27.8711 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par11ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-8.593149e-03 1.954571e-04 1.054422e-05 2.385788e-07 1.635425e-06 3.454105e-04 +-2.834225e-03 3.715953e-03 5.118961e-03 3.346061e-03 1.942523e-03 1.074144e-03 + 5.857507e-04 3.230944e-04 +>ZXXI ROT=ZROT //14 +-2.090146e-03 5.977765e-05 2.625009e-06 -2.855002e-07 -5.387019e-07 -5.069485e-05 +-1.231120e-03 -4.178567e-03 1.889329e-04 1.475406e-03 1.334998e-03 9.144521e-04 + 5.553999e-04 3.188058e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865554e+02 1.241407e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.316992e+01 + 8.364847e+00 6.590950e+00 5.464033e+00 4.264645e+00 3.005086e+00 1.921014e+00 + 1.144531e+00 6.581128e-01 +>ZXYI ROT=ZROT //14 + 3.082061e+02 1.471558e+02 7.805626e+01 4.294175e+01 2.400290e+01 1.271754e+01 + 6.036581e+00 2.968598e+00 2.003485e+00 1.765100e+00 1.574874e+00 1.250034e+00 + 8.789245e-01 5.621076e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865967e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350537e+01 -1.317013e+01 +-8.362817e+00 -6.592452e+00 -5.470870e+00 -4.272518e+00 -3.011483e+00 -1.925377e+00 +-1.147209e+00 -6.596709e-01 +>ZYXI ROT=ZROT //14 +-3.082170e+02 -1.471551e+02 -7.805626e+01 -4.294174e+01 -2.400290e+01 -1.271758e+01 +-6.036077e+00 -2.963462e+00 -2.000092e+00 -1.765086e+00 -1.576695e+00 -1.252216e+00 +-8.807211e-01 -5.633437e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.453413e-03 -5.436648e-05 -6.836116e-07 2.417696e-07 -1.641771e-06 -2.894613e-04 + 2.313279e-03 -3.380740e-03 -3.330116e-03 -1.217862e-03 -1.780426e-04 1.457408e-04 + 1.686476e-04 1.174832e-04 +>ZYYI ROT=ZROT //14 + 1.966214e-04 -1.631545e-05 -1.590712e-07 -6.807580e-08 3.522816e-07 5.328065e-05 + 1.151121e-03 2.813511e-03 -1.142228e-03 -1.528447e-03 -8.678293e-04 -3.253977e-04 +-5.944971e-05 2.647001e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.133287e-02 -8.825281e-05 -3.417796e-05 -6.578079e-07 9.534667e-09 -2.479034e-06 + 2.505985e-05 -1.695748e-05 -1.067488e-04 -7.436469e-05 -4.254708e-05 -2.417017e-05 +-1.363009e-05 -7.712047e-06 +>TXI.EXP //14 +-5.716867e-04 4.186646e-06 4.719313e-06 1.146829e-06 2.614682e-09 -2.924691e-07 + 2.255057e-06 8.147670e-05 2.112175e-05 -2.773104e-05 -2.748014e-05 -1.914762e-05 +-1.204450e-05 -7.183899e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.298959e-03 4.987980e-04 1.287537e-05 -3.535591e-07 -6.919654e-08 -1.369641e-05 + 2.158348e-04 -4.377862e-05 -1.040282e-03 -9.832226e-04 -6.797829e-04 -4.260420e-04 +-2.514887e-04 -1.440553e-04 +>TYI.EXP //14 +-1.756268e-04 -5.932864e-05 -4.503238e-06 -8.985571e-07 -4.114003e-08 5.064706e-06 +-5.207307e-05 7.815981e-04 4.447961e-04 -1.425644e-04 -2.899570e-04 -2.619721e-04 +-1.897955e-04 -1.222889e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par12.edi b/examples/data/NEConductor/par12.edi new file mode 100644 index 00000000..14dfffa9 --- /dev/null +++ b/examples/data/NEConductor/par12.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par12" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par12" +REFLAT=-30:13:34.1323 +REFLONG=139:42:27.2342 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par12" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.065185e-02 1.177975e-04 1.305180e-05 2.507041e-07 2.731223e-07 1.320417e-04 +-1.337167e-03 2.341825e-03 7.161637e-04 -1.546616e-03 -1.985444e-03 -1.587062e-03 +-1.041564e-03 -6.225572e-04 +>ZXXI ROT=ZROT //14 +-2.113131e-03 3.564218e-05 3.265064e-06 -3.258837e-07 -8.680880e-07 -8.704438e-05 +-5.556704e-04 -9.435193e-04 2.113176e-03 1.371977e-03 1.605189e-04 -4.441572e-04 +-5.488624e-04 -4.362074e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865558e+02 1.241406e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.317055e+01 + 8.360984e+00 6.597239e+00 5.474407e+00 4.274487e+00 3.012580e+00 1.925961e+00 + 1.147517e+00 6.598378e-01 +>ZXYI ROT=ZROT //14 + 3.082042e+02 1.471558e+02 7.805627e+01 4.294175e+01 2.400291e+01 1.271822e+01 + 6.032500e+00 2.961433e+00 2.001270e+00 1.766335e+00 1.577599e+00 1.252783e+00 + 8.810446e-01 5.635208e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866231e+02 -1.241491e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317059e+01 +-8.360559e+00 -6.597743e+00 -5.475199e+00 -4.275033e+00 -3.012905e+00 -1.926142e+00 +-1.147616e+00 -6.598924e-01 +>ZYXI ROT=ZROT //14 +-3.082379e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271820e+01 +-6.032394e+00 -2.960762e+00 -2.001253e+00 -1.766549e+00 -1.577810e+00 -1.252932e+00 +-8.811368e-01 -5.635742e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.250566e-03 -5.256597e-05 -9.020570e-07 3.045335e-07 -4.733486e-07 -1.215978e-04 + 1.242598e-03 -2.278282e-03 -4.478429e-04 1.892182e-03 2.266313e-03 1.775645e-03 + 1.156030e-03 6.888024e-04 +>ZYYI ROT=ZROT //14 + 2.784289e-04 -1.661394e-05 -1.613859e-07 -8.252887e-08 6.966733e-07 8.462335e-05 + 5.400503e-04 7.421350e-04 -2.274895e-03 -1.384071e-03 -8.069249e-05 5.406158e-04 + 6.271825e-04 4.894750e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.553426e-02 1.322077e-04 -3.151031e-05 -9.099297e-07 -1.225755e-08 -6.147954e-06 + 1.083976e-04 8.748996e-06 -5.929153e-04 -5.752238e-04 -3.995875e-04 -2.503766e-04 +-1.476750e-04 -8.461346e-05 +>TXI.EXP //14 +-9.967459e-04 -2.763890e-05 9.516358e-07 1.309954e-06 1.199980e-08 3.417519e-06 +-3.881553e-05 4.387902e-04 2.766658e-04 -7.468140e-05 -1.675965e-04 -1.532268e-04 +-1.113331e-04 -7.183066e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.380943e-03 4.982483e-04 1.287205e-05 -3.467114e-07 -3.954490e-08 -6.370045e-06 + 1.128231e-04 1.233271e-05 -6.239178e-04 -6.064505e-04 -4.197531e-04 -2.626906e-04 +-1.549258e-04 -8.870130e-05 +>TYI.EXP //14 +-1.608728e-04 -5.933311e-05 -4.510455e-06 -9.051082e-07 -1.825357e-08 3.681137e-06 +-4.205871e-05 4.592247e-04 2.951480e-04 -7.955866e-05 -1.770488e-04 -1.612032e-04 +-1.169067e-04 -7.529839e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1201.edi b/examples/data/NEConductor/par1201.edi new file mode 100644 index 00000000..6d4efa70 --- /dev/null +++ b/examples/data/NEConductor/par1201.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1201" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1201" +REFLAT=-30:11:08.373 +REFLONG=139:44:24.4322 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1201" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.705658e-03 -1.801951e-04 -5.134247e-06 -6.294187e-08 3.984750e-06 5.180074e-04 +-3.142678e-03 5.020013e-03 5.409563e-03 3.033771e-03 1.523033e-03 7.327865e-04 + 3.591714e-04 1.869556e-04 +>ZXXI ROT=ZROT //14 + 3.133357e-04 -8.754760e-05 6.945211e-07 1.996812e-07 1.828244e-06 1.646328e-04 +-2.452319e-03 -4.112626e-03 9.380285e-04 1.871806e-03 1.406907e-03 8.339256e-04 + 4.421403e-04 2.257738e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866126e+02 1.241417e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.316974e+01 + 8.364482e+00 6.589497e+00 5.467027e+00 4.269314e+00 3.009226e+00 1.923956e+00 + 1.146373e+00 6.591939e-01 +>ZXYI ROT=ZROT //14 + 3.082339e+02 1.471562e+02 7.805617e+01 4.294173e+01 2.400290e+01 1.271726e+01 + 6.038171e+00 2.965981e+00 2.000403e+00 1.764339e+00 1.575670e+00 1.251321e+00 + 8.800800e-01 5.629340e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865573e+02 -1.241471e+02 -7.346950e+01 -4.197590e+01 -2.350537e+01 -1.316970e+01 +-8.365362e+00 -6.589588e+00 -5.462603e+00 -4.263237e+00 -3.004016e+00 -1.920320e+00 +-1.144119e+00 -6.578763e-01 +>ZYXI ROT=ZROT //14 +-3.082006e+02 -1.471567e+02 -7.805640e+01 -4.294174e+01 -2.400289e+01 -1.271726e+01 +-6.037958e+00 -2.969260e+00 -2.003681e+00 -1.764908e+00 -1.574467e+00 -1.249633e+00 +-8.786221e-01 -5.619095e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.871941e-03 -1.501865e-04 -1.784300e-06 7.055732e-08 -3.668946e-06 -5.751125e-04 + 3.856815e-03 -5.433995e-03 -7.529208e-03 -5.451023e-03 -3.479969e-03 -2.065294e-03 +-1.176288e-03 -6.624024e-04 +>ZYYI ROT=ZROT //14 + 1.813111e-04 -4.358397e-05 -9.579792e-08 1.275081e-07 -1.620889e-06 -1.134655e-04 + 2.425950e-03 5.794859e-03 1.133107e-04 -1.874168e-03 -1.968909e-03 -1.502917e-03 +-9.916079e-04 -6.034116e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.393679e-03 -5.835851e-04 -3.445704e-05 7.130359e-07 9.331838e-08 1.414157e-05 +-2.154257e-04 5.790161e-05 1.000728e-03 9.411687e-04 6.518502e-04 4.091278e-04 + 2.416940e-04 1.384631e-04 +>TXI.EXP //14 + 3.161342e-04 7.291945e-05 1.295308e-05 2.060210e-07 2.688867e-08 -4.977029e-06 + 4.437934e-05 -7.547795e-04 -4.178321e-04 1.380924e-04 2.775704e-04 2.510592e-04 + 1.821150e-04 1.174828e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.273677e-02 -1.214236e-04 1.210176e-05 1.704524e-06 -4.715841e-08 1.282523e-06 +-1.084018e-05 1.763675e-06 7.280478e-05 3.727020e-05 1.238907e-05 3.910618e-06 + 1.359431e-06 5.900617e-07 +>TYI.EXP //14 + 8.271757e-04 2.119159e-05 -1.045271e-06 -1.661581e-06 -3.150435e-09 5.665837e-07 +-5.053666e-08 -5.147611e-05 -9.848131e-06 2.703969e-05 1.836724e-05 8.617792e-06 + 3.575309e-06 1.490181e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1202.edi b/examples/data/NEConductor/par1202.edi new file mode 100644 index 00000000..abda511c --- /dev/null +++ b/examples/data/NEConductor/par1202.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1202" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1202" +REFLAT=-30:10:48.5633 +REFLONG=139:44:32.8574 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1202" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.520572e-03 -2.914046e-04 -5.522850e-06 -8.273992e-08 1.496110e-06 3.465274e-04 +-2.088394e-03 3.721793e-03 2.453673e-03 -6.142040e-06 -8.444017e-04 -8.456613e-04 +-5.980927e-04 -3.673329e-04 +>ZXXI ROT=ZROT //14 + 4.944346e-04 -1.281098e-04 1.485642e-06 2.723346e-07 -5.266867e-08 6.758015e-05 +-1.680849e-03 -2.004462e-03 1.922190e-03 1.652523e-03 6.184030e-04 -1.144206e-05 +-2.247670e-04 -2.235197e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866228e+02 1.241428e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317021e+01 + 8.361911e+00 6.594458e+00 5.473521e+00 4.274860e+00 3.013252e+00 1.926544e+00 + 1.147914e+00 6.600786e-01 +>ZXYI ROT=ZROT //14 + 3.082412e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400290e+01 1.271788e+01 + 6.034745e+00 2.961668e+00 1.999819e+00 1.765484e+00 1.577371e+00 1.252875e+00 + 8.812245e-01 5.636783e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865499e+02 -1.241481e+02 -7.346964e+01 -4.197590e+01 -2.350537e+01 -1.317015e+01 +-8.362896e+00 -6.594497e+00 -5.468671e+00 -4.268293e+00 -3.007647e+00 -1.922637e+00 +-1.145491e+00 -6.586628e-01 +>ZYXI ROT=ZROT //14 +-3.082007e+02 -1.471576e+02 -7.805643e+01 -4.294173e+01 -2.400290e+01 -1.271788e+01 +-6.034583e+00 -2.965247e+00 -2.003325e+00 -1.766053e+00 -1.576056e+00 -1.251053e+00 +-8.796550e-01 -5.625767e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.592166e-03 -1.580309e-04 -2.193838e-06 6.737639e-09 -2.547760e-06 -3.998491e-04 + 2.789376e-03 -4.125388e-03 -4.637982e-03 -2.498244e-03 -1.186702e-03 -5.394779e-04 +-2.521329e-04 -1.276054e-04 +>ZYYI ROT=ZROT //14 + 2.477033e-04 -4.648068e-05 -7.887500e-08 2.024759e-07 -4.775328e-07 -2.741641e-05 + 1.665139e-03 3.723780e-03 -8.207664e-04 -1.647832e-03 -1.197163e-03 -6.811472e-04 +-3.455326e-04 -1.689973e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-3.940959e-04 -6.490030e-04 -3.097959e-05 8.215914e-07 6.219868e-08 1.044308e-05 +-1.795042e-04 7.219593e-06 9.188525e-04 9.029192e-04 6.345475e-04 4.001885e-04 + 2.368030e-04 1.357394e-04 +>TXI.EXP //14 + 4.785927e-04 8.168745e-05 1.293610e-05 7.426200e-08 -7.437102e-09 -5.643166e-06 + 5.665806e-05 -6.850542e-04 -4.293761e-04 1.088639e-04 2.595300e-04 2.413241e-04 + 1.768688e-04 1.146282e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.406283e-02 -2.118070e-04 1.141105e-05 1.842615e-06 -3.854321e-08 2.551613e-06 +-3.497730e-05 -1.174408e-06 1.991097e-04 1.706148e-04 1.091783e-04 6.577565e-05 + 3.815672e-05 2.173104e-05 +>TYI.EXP //14 + 9.912661e-04 3.332262e-05 -5.606460e-07 -1.690564e-06 -7.492036e-09 -5.785798e-07 + 9.466202e-06 -1.448827e-04 -7.713365e-05 3.736793e-05 5.482899e-05 4.451302e-05 + 3.050408e-05 1.913680e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1203.edi b/examples/data/NEConductor/par1203.edi new file mode 100644 index 00000000..9ee35834 --- /dev/null +++ b/examples/data/NEConductor/par1203.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1203" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1203" +REFLAT=-30:10:30.6475 +REFLONG=139:44:41.2576 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1203" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.596059e-04 -3.122053e-04 -4.247124e-06 -5.663620e-08 6.766947e-07 2.528023e-04 +-1.571346e-03 2.999116e-03 1.260613e-03 -1.087095e-03 -1.638897e-03 -1.358625e-03 +-9.039583e-04 -5.431348e-04 +>ZXXI ROT=ZROT //14 + 4.302292e-04 -1.332492e-04 2.273662e-06 2.646628e-07 -2.413163e-07 2.586239e-05 +-1.250634e-03 -1.158338e-03 2.146553e-03 1.477330e-03 3.011341e-04 -3.123590e-04 +-4.493846e-04 -3.705100e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866225e+02 1.241428e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.317054e+01 + 8.360131e+00 6.597520e+00 5.477890e+00 4.278742e+00 3.016116e+00 1.928400e+00 + 1.149022e+00 6.607162e-01 +>ZXYI ROT=ZROT //14 + 3.082410e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400291e+01 1.271820e+01 + 6.032727e+00 2.958686e+00 1.999217e+00 1.766166e+00 1.578520e+00 1.253961e+00 + 8.820363e-01 5.642104e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865441e+02 -1.241495e+02 -7.346979e+01 -4.197589e+01 -2.350537e+01 -1.317045e+01 +-8.361433e+00 -6.597558e+00 -5.471648e+00 -4.270393e+00 -3.009018e+00 -1.923459e+00 +-1.145960e+00 -6.589267e-01 +>ZYXI ROT=ZROT //14 +-3.082010e+02 -1.471587e+02 -7.805648e+01 -4.294173e+01 -2.400291e+01 -1.271822e+01 +-6.032503e+00 -2.963305e+00 -2.003655e+00 -1.766841e+00 -1.576832e+00 -1.251647e+00 +-8.800489e-01 -5.628167e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.623453e-03 -1.657733e-04 -2.442721e-06 -3.672354e-08 -1.751744e-06 -3.051334e-04 + 2.383542e-03 -3.395310e-03 -3.931471e-03 -2.016603e-03 -8.919494e-04 -3.735360e-04 +-1.614623e-04 -7.765170e-05 +>ZYYI ROT=ZROT //14 + 3.626934e-04 -4.939457e-05 -1.769939e-07 2.333540e-07 6.175308e-08 2.462931e-05 + 1.168943e-03 3.266987e-03 -7.374596e-04 -1.443815e-03 -1.006343e-03 -5.449740e-04 +-2.611160e-04 -1.201229e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-2.223511e-03 -7.005330e-04 -2.588507e-05 8.456125e-07 4.194959e-08 8.386592e-06 +-1.642089e-04 -3.100125e-05 9.181730e-04 9.406080e-04 6.704233e-04 4.248059e-04 + 2.517759e-04 1.444078e-04 +>TXI.EXP //14 + 6.430785e-04 8.851210e-05 1.219639e-05 -2.413447e-08 -1.785426e-08 -6.269450e-06 + 6.858820e-05 -6.769660e-04 -4.715056e-04 9.089292e-05 2.638478e-04 2.519942e-04 + 1.865085e-04 1.214081e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.404192e-02 -2.108833e-04 1.142504e-05 1.841635e-06 -4.017540e-08 1.407370e-06 +-1.653596e-05 -6.037209e-06 1.121689e-04 8.772394e-05 5.095694e-05 2.901901e-05 + 1.639753e-05 9.251879e-06 +>TYI.EXP //14 + 9.875821e-04 3.323217e-05 -5.632251e-07 -1.690854e-06 -1.005992e-08 -1.848667e-07 + 4.804751e-06 -7.816998e-05 -4.051824e-05 2.629362e-05 3.075974e-05 2.229435e-05 + 1.423912e-05 8.595077e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1204.edi b/examples/data/NEConductor/par1204.edi new file mode 100644 index 00000000..a34a7c6f --- /dev/null +++ b/examples/data/NEConductor/par1204.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1204" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1204" +REFLAT=-30:10:08.9692 +REFLONG=139:44:52.4286 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1204" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.643107e-03 -4.534758e-04 -1.687828e-06 -3.246029e-08 3.783481e-09 9.753834e-05 +-6.743628e-04 1.883154e-03 -8.235639e-04 -3.082169e-03 -3.134990e-03 -2.334367e-03 +-1.488851e-03 -8.800899e-04 +>ZXXI ROT=ZROT //14 + 4.644174e-04 -1.790780e-04 4.523128e-06 3.222345e-07 -2.871700e-07 -1.517377e-05 +-6.083144e-04 3.269919e-04 2.672607e-03 1.228673e-03 -2.589101e-04 -8.670263e-04 +-8.712827e-04 -6.493080e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866332e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317113e+01 + 8.357010e+00 6.602674e+00 5.484440e+00 4.284137e+00 3.019956e+00 1.930835e+00 + 1.150459e+00 6.615381e-01 +>ZXYI ROT=ZROT //14 + 3.082489e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400292e+01 1.271859e+01 + 6.029593e+00 2.954080e+00 1.998818e+00 1.767421e+00 1.580234e+00 1.255474e+00 + 8.831283e-01 5.649119e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865333e+02 -1.241533e+02 -7.347011e+01 -4.197589e+01 -2.350537e+01 -1.317106e+01 +-8.358099e+00 -6.603164e+00 -5.478436e+00 -4.275805e+00 -3.012820e+00 -1.925849e+00 +-1.147363e+00 -6.597275e-01 +>ZYXI ROT=ZROT //14 +-3.082052e+02 -1.471615e+02 -7.805654e+01 -4.294172e+01 -2.400292e+01 -1.271863e+01 +-6.029219e+00 -2.958456e+00 -2.003478e+00 -1.768233e+00 -1.578599e+00 -1.253169e+00 +-8.811322e-01 -5.635069e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.442763e-03 -1.858489e-04 -2.899023e-06 -9.202696e-08 -4.534941e-07 -1.251542e-04 + 1.324974e-03 -2.042766e-03 -1.662676e-03 7.428496e-05 6.541782e-04 6.260223e-04 + 4.345873e-04 2.648992e-04 +>ZYYI ROT=ZROT //14 + 6.782197e-04 -5.568613e-05 2.555119e-07 4.335954e-07 2.638554e-07 5.831623e-05 + 4.336215e-04 1.625940e-03 -1.201725e-03 -1.129584e-03 -3.994519e-04 3.779550e-05 + 1.755247e-04 1.659879e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-5.962440e-03 -7.572143e-04 -1.083213e-05 6.185351e-07 -9.233642e-10 3.138164e-06 +-9.670483e-05 -1.037087e-04 7.219892e-04 8.212762e-04 6.018721e-04 3.842449e-04 + 2.282387e-04 1.309976e-04 +>TXI.EXP //14 + 9.957241e-04 9.500093e-05 8.392321e-06 -8.324677e-08 -2.087530e-08 -4.997100e-06 + 7.046263e-05 -5.088435e-04 -4.623614e-04 3.562527e-05 2.184346e-04 2.210017e-04 + 1.666267e-04 1.093073e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.526623e-02 -2.918775e-04 1.065583e-05 1.882801e-06 -4.218221e-08 8.219536e-07 +-1.259751e-05 -1.648070e-05 1.065202e-04 1.007560e-04 6.527417e-05 3.928262e-05 + 2.274521e-05 1.294935e-05 +>TYI.EXP //14 + 1.150539e-03 4.426562e-05 -1.991591e-07 -1.685255e-06 -1.616687e-08 -5.020877e-07 + 7.146239e-06 -7.040049e-05 -5.591942e-05 1.696850e-05 3.119858e-05 2.617028e-05 + 1.809089e-05 1.139602e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1205.edi b/examples/data/NEConductor/par1205.edi new file mode 100644 index 00000000..d658c57e --- /dev/null +++ b/examples/data/NEConductor/par1205.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1205" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1205" +REFLAT=-30:09:52.9212 +REFLONG=139:44:58.0793 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1205" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.791875e-03 -4.678420e-04 1.497894e-07 -9.538841e-10 -1.177238e-07 6.463043e-05 +-4.943407e-04 1.593695e-03 -1.026068e-03 -3.156169e-03 -3.146317e-03 -2.324451e-03 +-1.477239e-03 -8.719497e-04 +>ZXXI ROT=ZROT //14 + 4.131657e-04 -1.808848e-04 5.444520e-06 3.067819e-07 -1.240637e-07 -1.747748e-05 +-4.510314e-04 4.698557e-04 2.576851e-03 1.131428e-03 -3.143671e-04 -8.882385e-04 +-8.750893e-04 -6.473928e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866329e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317130e+01 + 8.356052e+00 6.604090e+00 5.486295e+00 4.285664e+00 3.021039e+00 1.931519e+00 + 1.150862e+00 6.617684e-01 +>ZXYI ROT=ZROT //14 + 3.082484e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400292e+01 1.271865e+01 + 6.028836e+00 2.952715e+00 1.998690e+00 1.767774e+00 1.580720e+00 1.255902e+00 + 8.834361e-01 5.651092e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865311e+02 -1.241557e+02 -7.347024e+01 -4.197589e+01 -2.350537e+01 -1.317124e+01 +-8.357065e+00 -6.604834e+00 -5.480201e+00 -4.277014e+00 -3.013600e+00 -1.926312e+00 +-1.147626e+00 -6.598746e-01 +>ZYXI ROT=ZROT //14 +-3.082090e+02 -1.471631e+02 -7.805656e+01 -4.294172e+01 -2.400292e+01 -1.271869e+01 +-6.028378e+00 -2.957109e+00 -2.003655e+00 -1.768699e+00 -1.579050e+00 -1.253511e+00 +-8.813562e-01 -5.636423e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.531875e-03 -2.130666e-04 -2.452332e-06 -4.183388e-08 -2.108787e-07 -8.219295e-05 + 1.091619e-03 -1.635143e-03 -1.478536e-03 5.071957e-05 5.681478e-04 5.433492e-04 + 3.762385e-04 2.290173e-04 +>ZYYI ROT=ZROT //14 + 8.388262e-04 -6.250155e-05 7.365655e-07 5.138980e-07 1.694757e-07 5.905181e-05 + 2.239330e-04 1.488309e-03 -9.985032e-04 -9.892941e-04 -3.508090e-04 3.279385e-05 + 1.524697e-04 1.438351e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-7.842735e-03 -7.543704e-04 -1.132530e-06 3.770609e-07 -5.092952e-09 1.728959e-06 +-7.523468e-05 -1.270668e-04 6.583438e-04 7.883086e-04 5.848360e-04 3.744646e-04 + 2.225962e-04 1.277862e-04 +>TXI.EXP //14 + 1.177346e-03 9.341617e-05 5.381268e-06 -4.334032e-08 -1.584799e-08 -4.281455e-06 + 6.852972e-05 -4.519552e-04 -4.639485e-04 1.550175e-05 2.046956e-04 2.126294e-04 + 1.615637e-04 1.063140e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.523778e-02 -2.906632e-04 1.066391e-05 1.880658e-06 -4.390858e-08 4.974249e-07 +-5.977440e-06 -1.193172e-05 6.009895e-05 5.281261e-05 3.126893e-05 1.783385e-05 + 1.006458e-05 5.681290e-06 +>TYI.EXP //14 + 1.147151e-03 4.413158e-05 -2.043344e-07 -1.685213e-06 -1.504625e-08 -2.587647e-07 + 3.082448e-06 -3.662189e-05 -3.081245e-05 1.250705e-05 1.772941e-05 1.335701e-05 + 8.647859e-06 5.265033e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1206.edi b/examples/data/NEConductor/par1206.edi new file mode 100644 index 00000000..4b3a369e --- /dev/null +++ b/examples/data/NEConductor/par1206.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1206" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1206" +REFLAT=-30:09:34.0577 +REFLONG=139:45:06.4888 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1206" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.883754e-03 -4.781793e-04 2.035762e-06 3.096500e-08 -1.304636e-07 4.197349e-05 +-3.670850e-04 1.364532e-03 -1.085599e-03 -3.085389e-03 -3.046208e-03 -2.240557e-03 +-1.420825e-03 -8.378782e-04 +>ZXXI ROT=ZROT //14 + 3.764124e-04 -1.811838e-04 6.335015e-06 2.902975e-07 1.528707e-08 -1.677749e-05 +-3.339195e-04 5.126040e-04 2.433788e-03 1.046317e-03 -3.316507e-04 -8.693623e-04 +-8.475059e-04 -6.243967e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866328e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317142e+01 + 8.355288e+00 6.605195e+00 5.487648e+00 4.286713e+00 3.021761e+00 1.931966e+00 + 1.151122e+00 6.619160e-01 +>ZXYI ROT=ZROT //14 + 3.082478e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400292e+01 1.271867e+01 + 6.028299e+00 2.951686e+00 1.998670e+00 1.768066e+00 1.581072e+00 1.256197e+00 + 8.836417e-01 5.652384e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865323e+02 -1.241585e+02 -7.347032e+01 -4.197589e+01 -2.350537e+01 -1.317138e+01 +-8.356167e+00 -6.606185e+00 -5.481740e+00 -4.278081e+00 -3.014297e+00 -1.926729e+00 +-1.147864e+00 -6.600084e-01 +>ZYXI ROT=ZROT //14 +-3.082148e+02 -1.471649e+02 -7.805657e+01 -4.294172e+01 -2.400292e+01 -1.271872e+01 +-6.027791e+00 -2.955879e+00 -2.003767e+00 -1.769090e+00 -1.579441e+00 -1.253812e+00 +-8.815560e-01 -5.637640e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.220425e-03 -2.412339e-04 -1.973114e-06 -9.076033e-09 -7.493197e-08 -5.047486e-05 + 8.854765e-04 -1.285868e-03 -1.334248e-03 1.087978e-06 4.681366e-04 4.540438e-04 + 3.147642e-04 1.915556e-04 +>ZYYI ROT=ZROT //14 + 9.727028e-04 -7.006857e-05 1.136988e-06 5.841065e-07 7.284413e-08 5.381085e-05 + 7.270143e-05 1.363796e-03 -8.053741e-04 -8.633204e-04 -3.142000e-04 2.028417e-05 + 1.254172e-04 1.196760e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-9.703940e-03 -7.283500e-04 9.557497e-06 7.802869e-08 -5.444609e-09 7.030689e-07 +-5.579554e-05 -1.432994e-04 5.884320e-04 7.445831e-04 5.591162e-04 3.589187e-04 + 2.134740e-04 1.225646e-04 +>TXI.EXP //14 + 1.363889e-03 8.802964e-05 1.821211e-06 3.414437e-08 -1.057656e-08 -3.458845e-06 + 6.371548e-05 -3.913490e-04 -4.566461e-04 -3.106009e-06 1.887356e-04 2.013489e-04 + 1.541210e-04 1.017022e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.520417e-02 -2.892334e-04 1.066273e-05 1.877297e-06 -4.445985e-08 3.250473e-07 +-2.396102e-06 -6.354702e-06 2.770779e-05 1.765693e-05 6.184255e-06 2.028567e-06 + 7.309675e-07 3.344219e-07 +>TYI.EXP //14 + 1.143789e-03 4.396090e-05 -2.111451e-07 -1.684354e-06 -1.374241e-08 -1.152448e-07 + 1.214074e-07 -1.405016e-05 -1.101381e-05 1.002491e-05 8.022038e-06 3.965758e-06 + 1.705751e-06 7.547208e-07 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1207.edi b/examples/data/NEConductor/par1207.edi new file mode 100644 index 00000000..f35b6014 --- /dev/null +++ b/examples/data/NEConductor/par1207.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1207" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1207" +REFLAT=-30:09:20.8765 +REFLONG=139:45:14.8259 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1207" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.007091e-03 -6.041972e-04 5.003152e-06 5.980633e-08 9.660576e-08 2.042844e-05 +-2.143130e-04 1.200948e-03 -1.355816e-03 -3.360892e-03 -3.251595e-03 -2.372484e-03 +-1.499131e-03 -8.827814e-04 +>ZXXI ROT=ZROT //14 + 4.657404e-04 -2.188731e-04 8.482286e-06 3.521056e-07 -1.265117e-08 -1.156585e-05 +-2.475898e-04 6.968432e-04 2.513693e-03 1.017025e-03 -4.095717e-04 -9.461566e-04 +-9.050829e-04 -6.620357e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866454e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350538e+01 1.317154e+01 + 8.354530e+00 6.606348e+00 5.488695e+00 4.287280e+00 3.022062e+00 1.932116e+00 + 1.151197e+00 6.619553e-01 +>ZXYI ROT=ZROT //14 + 3.082566e+02 1.471577e+02 7.805612e+01 4.294172e+01 2.400292e+01 1.271867e+01 + 6.027825e+00 2.950820e+00 1.998943e+00 1.768425e+00 1.581337e+00 1.256358e+00 + 8.837296e-01 5.652843e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865388e+02 -1.241613e+02 -7.347036e+01 -4.197588e+01 -2.350537e+01 -1.317152e+01 +-8.355116e+00 -6.607445e+00 -5.483982e+00 -4.280044e+00 -3.015744e+00 -1.927667e+00 +-1.148424e+00 -6.603308e-01 +>ZYXI ROT=ZROT //14 +-3.082237e+02 -1.471667e+02 -7.805657e+01 -4.294172e+01 -2.400291e+01 -1.271871e+01 +-6.027372e+00 -2.954065e+00 -2.003387e+00 -1.769421e+00 -1.580016e+00 -1.254359e+00 +-8.819658e-01 -5.640329e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.292721e-03 -2.569958e-04 -2.990285e-06 -6.718529e-08 2.066788e-09 -2.158092e-05 + 5.712209e-04 -1.027681e-03 -5.663249e-04 8.180520e-04 1.108637e-03 8.824823e-04 + 5.751204e-04 3.424583e-04 +>ZYYI ROT=ZROT //14 + 7.583451e-04 -8.070870e-05 1.829341e-06 8.279084e-07 -4.476764e-08 3.711746e-05 + 1.294516e-05 7.701897e-04 -1.111410e-03 -8.232798e-04 -1.083216e-04 2.465108e-04 + 3.054267e-04 2.414595e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-1.154724e-02 -6.811398e-04 2.077366e-05 -2.397169e-07 -3.871275e-09 -8.493392e-08 +-3.298802e-05 -1.443275e-04 4.655154e-04 6.366831e-04 4.853536e-04 3.123822e-04 + 1.858615e-04 1.067087e-04 +>TXI.EXP //14 + 1.567050e-03 7.885615e-05 -2.054546e-06 1.334994e-07 -5.080437e-09 -2.284375e-06 + 5.118434e-05 -2.940886e-04 -4.100087e-04 -2.221840e-05 1.564981e-04 1.727819e-04 + 1.333966e-04 8.829900e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.635033e-02 -3.608749e-04 9.745172e-06 1.814486e-06 -4.466311e-08 1.871907e-07 +-3.937257e-06 -1.606249e-05 5.348087e-05 6.013313e-05 4.052576e-05 2.461743e-05 + 1.428079e-05 8.140150e-06 +>TYI.EXP //14 + 1.314379e-03 5.376891e-05 1.621045e-08 -1.635133e-06 -1.204686e-08 -2.794062e-07 + 3.764328e-06 -3.004067e-05 -3.955268e-05 5.227537e-06 1.738609e-05 1.569533e-05 + 1.112917e-05 7.100064e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1208.edi b/examples/data/NEConductor/par1208.edi new file mode 100644 index 00000000..ff147c30 --- /dev/null +++ b/examples/data/NEConductor/par1208.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1208" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1208" +REFLAT=-30:09:00.1271 +REFLONG=139:45:24.1652 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1208" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.173666e-03 -6.076529e-04 7.278704e-06 1.034461e-07 7.558042e-08 1.296671e-05 +-1.665288e-04 1.062726e-03 -1.230035e-03 -3.112385e-03 -3.018968e-03 -2.202315e-03 +-1.391018e-03 -8.189255e-04 +>ZXXI ROT=ZROT //14 + 4.693815e-04 -2.159154e-04 9.463170e-06 3.286215e-07 -2.386386e-08 -9.181244e-06 +-1.899224e-04 6.110599e-04 2.320124e-03 9.541484e-04 -3.769049e-04 -8.780779e-04 +-8.401538e-04 -6.143803e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866455e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350538e+01 1.317159e+01 + 8.354095e+00 6.606946e+00 5.489357e+00 4.287717e+00 3.022334e+00 1.932273e+00 + 1.151284e+00 6.620037e-01 +>ZXYI ROT=ZROT //14 + 3.082556e+02 1.471577e+02 7.805611e+01 4.294172e+01 2.400292e+01 1.271866e+01 + 6.027619e+00 2.950264e+00 1.999013e+00 1.768606e+00 1.581506e+00 1.256482e+00 + 8.838078e-01 5.653303e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865613e+02 -1.241641e+02 -7.347033e+01 -4.197588e+01 -2.350537e+01 -1.317158e+01 +-8.354566e+00 -6.608184e+00 -5.484941e+00 -4.280673e+00 -3.016142e+00 -1.927902e+00 +-1.148557e+00 -6.604053e-01 +>ZYXI ROT=ZROT //14 +-3.082371e+02 -1.471685e+02 -7.805655e+01 -4.294173e+01 -2.400291e+01 -1.271869e+01 +-6.027168e+00 -2.953226e+00 -2.003456e+00 -1.769673e+00 -1.580253e+00 -1.254535e+00 +-8.820805e-01 -5.641019e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.119256e-03 -2.710472e-04 -2.771245e-06 -7.565909e-08 -2.319780e-09 -9.974067e-06 + 4.567490e-04 -8.088442e-04 -5.711366e-04 6.464939e-04 9.251963e-04 7.421847e-04 + 4.842464e-04 2.883635e-04 +>ZYYI ROT=ZROT //14 + 4.992564e-04 -8.802460e-05 1.932958e-06 8.775125e-07 -9.106988e-08 2.986097e-05 +-4.986943e-05 7.419887e-04 -9.115032e-04 -7.291926e-04 -1.127355e-04 1.997461e-04 + 2.547316e-04 2.025636e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-1.323684e-02 -6.073115e-04 3.174203e-05 -5.261525e-07 -2.613841e-09 -3.948072e-07 +-2.209889e-05 -1.468421e-04 4.079633e-04 5.949498e-04 4.590751e-04 2.960773e-04 + 1.762040e-04 1.011626e-04 +>TXI.EXP //14 + 1.756512e-03 6.577942e-05 -5.968539e-06 2.166781e-07 -3.346848e-09 -1.683823e-06 + 4.473404e-05 -2.466859e-04 -3.956051e-04 -3.491619e-05 1.427247e-04 1.619933e-04 + 1.259023e-04 8.353490e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.630853e-02 -3.590525e-04 9.732280e-06 1.809713e-06 -4.441644e-08 1.202640e-07 +-2.132599e-06 -1.004549e-05 3.068721e-05 3.307924e-05 2.083296e-05 1.214816e-05 + 6.907214e-06 3.914230e-06 +>TYI.EXP //14 + 1.311205e-03 5.354572e-05 7.207940e-09 -1.633309e-06 -1.148142e-08 -1.719059e-07 + 1.599289e-06 -1.521049e-05 -2.296231e-05 4.424463e-06 1.020840e-05 8.447974e-06 + 5.700565e-06 3.552314e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1209.edi b/examples/data/NEConductor/par1209.edi new file mode 100644 index 00000000..8eab4e50 --- /dev/null +++ b/examples/data/NEConductor/par1209.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1209" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1209" +REFLAT=-30:08:36.5535 +REFLONG=139:45:35.3543 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1209" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.787404e-03 -7.361367e-04 1.166849e-05 1.615557e-07 9.224801e-08 6.330577e-06 +-1.078124e-04 9.696227e-04 -1.220141e-03 -3.079118e-03 -2.980110e-03 -2.169893e-03 +-1.369116e-03 -8.056624e-04 +>ZXXI ROT=ZROT //14 + 6.487700e-04 -2.476424e-04 1.221223e-05 3.874028e-07 -4.709397e-08 -5.264166e-06 +-1.472981e-04 5.960034e-04 2.271863e-03 9.341151e-04 -3.793039e-04 -8.696298e-04 +-8.291464e-04 -6.053546e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866600e+02 1.241469e+02 7.346936e+01 4.197589e+01 2.350538e+01 1.317164e+01 + 8.353659e+00 6.607613e+00 5.489833e+00 4.287806e+00 3.022293e+00 1.932207e+00 + 1.151232e+00 6.619702e-01 +>ZXYI ROT=ZROT //14 + 3.082652e+02 1.471583e+02 7.805610e+01 4.294172e+01 2.400291e+01 1.271864e+01 + 6.027442e+00 2.949794e+00 1.999318e+00 1.768856e+00 1.581619e+00 1.256509e+00 + 8.837988e-01 5.653139e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866234e+02 -1.241672e+02 -7.347015e+01 -4.197589e+01 -2.350537e+01 -1.317164e+01 +-8.353947e+00 -6.608811e+00 -5.486389e+00 -4.281961e+00 -3.017099e+00 -1.928527e+00 +-1.148932e+00 -6.606212e-01 +>ZYXI ROT=ZROT //14 +-3.082608e+02 -1.471701e+02 -7.805650e+01 -4.294173e+01 -2.400291e+01 -1.271866e+01 +-6.027075e+00 -2.952001e+00 -2.003138e+00 -1.769867e+00 -1.580620e+00 -1.254892e+00 +-8.823512e-01 -5.642806e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.563968e-03 -2.376513e-04 -4.058808e-06 -1.914331e-07 -4.175754e-08 -1.467045e-06 + 2.933354e-04 -6.868740e-04 -1.790102e-04 1.070831e-03 1.258720e-03 9.653545e-04 + 6.198941e-04 3.669953e-04 +>ZYYI ROT=ZROT //14 +-1.127484e-04 -8.456403e-05 2.208808e-06 1.061342e-06 -1.306850e-07 1.810932e-05 +-5.054678e-05 4.284745e-04 -1.076866e-03 -7.123250e-04 -6.798733e-06 3.171536e-04 + 3.483580e-04 2.659642e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 +-1.469118e-02 -5.147969e-04 4.161151e-05 -6.961782e-07 -3.323449e-10 -5.241724e-07 +-1.082772e-05 -1.353206e-04 3.170813e-04 5.076896e-04 3.980841e-04 2.573239e-04 + 1.531503e-04 8.791258e-05 +>TXI.EXP //14 + 1.948982e-03 4.980989e-05 -9.433309e-06 2.365833e-07 -5.184723e-09 -9.858379e-07 + 3.384943e-05 -1.788392e-04 -3.505776e-04 -4.589220e-05 1.179147e-04 1.389165e-04 + 1.088590e-04 7.242443e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.733132e-02 -4.191104e-04 8.657703e-06 1.645863e-06 -4.226894e-08 2.157578e-08 +-1.968950e-06 -1.677739e-05 4.169772e-05 5.811045e-05 4.204980e-05 2.620551e-05 + 1.534505e-05 8.774285e-06 +>TYI.EXP //14 + 1.485154e-03 6.179506e-05 9.759280e-08 -1.534562e-06 -1.006298e-08 -1.842019e-07 + 3.249369e-06 -2.080816e-05 -4.125151e-05 -6.556766e-07 1.516465e-05 1.547409e-05 + 1.148288e-05 7.475455e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1210.edi b/examples/data/NEConductor/par1210.edi new file mode 100644 index 00000000..7e81b11a --- /dev/null +++ b/examples/data/NEConductor/par1210.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1210" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1210" +REFLAT=-30:14:22.6537 +REFLONG=139:42:58.3589 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1210" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.487248e-03 7.825290e-05 5.987908e-06 7.988783e-08 -8.479703e-07 6.393329e-05 +-9.492476e-04 1.762269e-03 3.417113e-04 -1.621305e-03 -1.950728e-03 -1.533230e-03 +-9.996881e-04 -5.960391e-04 +>ZXXI ROT=ZROT //14 +-9.957553e-04 1.612960e-05 9.638330e-08 -1.831787e-07 -5.267649e-07 -6.752714e-05 +-2.835766e-04 -6.436837e-04 1.872236e-03 1.167037e-03 6.840012e-05 -4.650856e-04 +-5.410805e-04 -4.229366e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865797e+02 1.241399e+02 7.346933e+01 4.197590e+01 2.350537e+01 1.317102e+01 + 8.358088e+00 6.601212e+00 5.482114e+00 4.282217e+00 3.018583e+00 1.929960e+00 + 1.149941e+00 6.612414e-01 +>ZXYI ROT=ZROT //14 + 3.082009e+02 1.471553e+02 7.805623e+01 4.294175e+01 2.400291e+01 1.271855e+01 + 6.030092e+00 2.955968e+00 1.999066e+00 1.767009e+00 1.579637e+00 1.254939e+00 + 8.827386e-01 5.646603e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866682e+02 -1.241532e+02 -7.346948e+01 -4.197588e+01 -2.350537e+01 -1.317095e+01 +-8.358988e+00 -6.601852e+00 -5.476390e+00 -4.274055e+00 -3.011521e+00 -1.925001e+00 +-1.146855e+00 -6.594343e-01 +>ZYXI ROT=ZROT //14 +-3.082709e+02 -1.471590e+02 -7.805620e+01 -4.294172e+01 -2.400292e+01 -1.271855e+01 +-6.029800e+00 -2.960059e+00 -2.003721e+00 -1.767916e+00 -1.578083e+00 -1.252679e+00 +-8.807630e-01 -5.632637e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.139602e-03 -1.144007e-04 -2.063238e-06 3.584763e-07 -2.166638e-07 -7.914424e-05 + 1.243198e-03 -1.686651e-03 -1.884379e-03 -3.796590e-04 2.331641e-04 3.202358e-04 + 2.409122e-04 1.506222e-04 +>ZYYI ROT=ZROT //14 + 3.419192e-04 -4.104833e-05 -1.914047e-07 -3.517238e-08 3.684999e-07 8.104959e-05 + 1.597724e-04 1.825734e-03 -8.100700e-04 -1.006710e-03 -4.586360e-04 -8.556774e-05 + 5.859711e-05 8.046548e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.880199e-02 2.672989e-04 -3.239149e-05 -5.249622e-07 -6.829281e-09 -4.785255e-06 + 1.218333e-04 8.884327e-05 -8.322713e-04 -8.919816e-04 -6.407095e-04 -4.061088e-04 +-2.405281e-04 -1.379948e-04 +>TXI.EXP //14 +-1.413698e-03 -4.744996e-05 8.709139e-07 1.025551e-06 1.580005e-08 5.556552e-06 +-7.560414e-05 5.971550e-04 4.802769e-04 -6.614720e-05 -2.454471e-04 -2.389885e-04 +-1.777393e-04 -1.158859e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.960301e-03 2.862088e-04 1.347296e-05 4.633077e-07 -2.844329e-08 -1.408537e-06 + 1.872998e-05 -1.685713e-06 -9.893455e-05 -7.580391e-05 -4.375292e-05 -2.506877e-05 +-1.426168e-05 -8.035636e-06 +>TYI.EXP //14 + 2.168873e-04 -3.237756e-05 -3.536146e-06 -1.270229e-06 -2.055856e-08 5.799359e-07 +-3.796366e-06 7.078229e-05 3.238847e-05 -2.404711e-05 -2.679736e-05 -1.920131e-05 +-1.226450e-05 -7.327493e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1211.edi b/examples/data/NEConductor/par1211.edi new file mode 100644 index 00000000..696c4861 --- /dev/null +++ b/examples/data/NEConductor/par1211.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1211" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1211" +REFLAT=-30:14:35.841 +REFLONG=139:42:50.9179 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1211" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.025625e-03 5.108443e-05 1.093976e-05 1.685322e-07 -3.606850e-07 2.278938e-05 +-6.040795e-04 1.466085e-03 -4.489974e-04 -2.467656e-03 -2.608232e-03 -1.968514e-03 +-1.262426e-03 -7.478367e-04 +>ZXXI ROT=ZROT //14 +-1.254824e-03 9.672465e-06 1.446132e-06 -2.645065e-07 -2.836750e-07 -4.909358e-05 +-1.596073e-04 -6.331298e-05 2.185455e-03 1.121105e-03 -1.497202e-04 -7.001634e-04 +-7.255697e-04 -5.466624e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865728e+02 1.241401e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317127e+01 + 8.356688e+00 6.603498e+00 5.484569e+00 4.283981e+00 3.019752e+00 1.930668e+00 + 1.150348e+00 6.614712e-01 +>ZXYI ROT=ZROT //14 + 3.081913e+02 1.471554e+02 7.805625e+01 4.294175e+01 2.400291e+01 1.271866e+01 + 6.028841e+00 2.954171e+00 1.999231e+00 1.767620e+00 1.580271e+00 1.255435e+00 + 8.830733e-01 5.648665e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866909e+02 -1.241547e+02 -7.346951e+01 -4.197588e+01 -2.350537e+01 -1.317122e+01 +-8.357294e+00 -6.604380e+00 -5.479877e+00 -4.276970e+00 -3.013631e+00 -1.926354e+00 +-1.147658e+00 -6.598954e-01 +>ZYXI ROT=ZROT //14 +-3.082854e+02 -1.471599e+02 -7.805617e+01 -4.294172e+01 -2.400292e+01 -1.271867e+01 +-6.028512e+00 -2.957443e+00 -2.003417e+00 -1.768533e+00 -1.578982e+00 -1.253496e+00 +-8.813625e-01 -5.636528e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.486146e-03 -8.911324e-05 -1.770930e-06 4.073545e-07 3.201649e-08 -2.907579e-05 + 7.937164e-04 -1.310198e-03 -7.668183e-04 8.169700e-04 1.176251e-03 9.529409e-04 + 6.259105e-04 3.738841e-04 +>ZYYI ROT=ZROT //14 + 3.706414e-04 -3.187326e-05 -5.263389e-08 -6.469578e-08 1.566209e-07 6.003816e-05 + 3.616183e-05 9.773668e-04 -1.260114e-03 -9.537164e-04 -1.598867e-04 2.461371e-04 + 3.237370e-04 2.602428e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.968420e-02 2.869254e-04 -3.323060e-05 -3.178908e-07 1.537496e-08 -2.242148e-06 + 8.113220e-05 1.185248e-04 -6.813072e-04 -7.768324e-04 -5.660941e-04 -3.600252e-04 +-2.134090e-04 -1.224694e-04 +>TXI.EXP //14 +-1.557489e-03 -4.994174e-05 1.748508e-06 8.327733e-07 1.611839e-08 4.324772e-06 +-6.861200e-05 4.721249e-04 4.466833e-04 -3.450956e-05 -2.076745e-04 -2.085707e-04 +-1.565818e-04 -1.024768e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.294093e-03 3.931437e-04 1.332038e-05 6.263577e-08 -2.174322e-08 -1.038295e-06 + 2.097527e-05 1.510762e-05 -1.449670e-04 -1.401487e-04 -9.367081e-05 -5.755433e-05 +-3.368888e-05 -1.921745e-05 +>TYI.EXP //14 + 4.692515e-05 -4.608344e-05 -4.090937e-06 -1.106633e-06 -1.424977e-08 1.002693e-06 +-1.126249e-05 1.007651e-04 7.458009e-05 -2.069186e-05 -4.207004e-05 -3.670785e-05 +-2.600471e-05 -1.650047e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1212.edi b/examples/data/NEConductor/par1212.edi new file mode 100644 index 00000000..dd97fc3b --- /dev/null +++ b/examples/data/NEConductor/par1212.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1212" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1212" +REFLAT=-30:14:50.9311 +REFLONG=139:42:44.3602 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1212" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.211153e-03 3.894942e-05 1.121485e-05 1.756177e-07 -3.294779e-07 9.703750e-06 +-4.854054e-04 1.281912e-03 -4.737449e-04 -2.376206e-03 -2.497043e-03 -1.879262e-03 +-1.203431e-03 -7.124414e-04 +>ZXXI ROT=ZROT //14 +-1.094417e-03 6.008301e-06 1.293642e-06 -2.706680e-07 -1.171325e-07 -3.767572e-05 +-8.912077e-05 -3.583848e-05 2.052607e-03 1.048423e-03 -1.572885e-04 -6.753008e-04 +-6.947796e-04 -5.220364e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865752e+02 1.241401e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317140e+01 + 8.355841e+00 6.604715e+00 5.486108e+00 4.285208e+00 3.020613e+00 1.931209e+00 + 1.150666e+00 6.616525e-01 +>ZXYI ROT=ZROT //14 + 3.081859e+02 1.471554e+02 7.805625e+01 4.294175e+01 2.400291e+01 1.271869e+01 + 6.028251e+00 2.953003e+00 1.999169e+00 1.767930e+00 1.580670e+00 1.255780e+00 + 8.833186e-01 5.650227e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.867201e+02 -1.241561e+02 -7.346948e+01 -4.197588e+01 -2.350537e+01 -1.317136e+01 +-8.356365e+00 -6.605820e+00 -5.481435e+00 -4.278008e+00 -3.014293e+00 -1.926746e+00 +-1.147881e+00 -6.600200e-01 +>ZYXI ROT=ZROT //14 +-3.083026e+02 -1.471607e+02 -7.805613e+01 -4.294172e+01 -2.400292e+01 -1.271870e+01 +-6.027878e+00 -2.956196e+00 -2.003589e+00 -1.768952e+00 -1.579374e+00 -1.253788e+00 +-8.815533e-01 -5.637678e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-8.201644e-03 -8.942084e-05 -1.838203e-06 4.368114e-07 3.910741e-08 -1.329810e-05 + 6.468410e-04 -1.060918e-03 -7.363938e-04 6.677101e-04 1.003587e-03 8.174430e-04 + 5.372259e-04 3.208822e-04 +>ZYYI ROT=ZROT //14 + 3.638027e-04 -3.252149e-05 8.751433e-08 -6.284936e-08 6.151078e-08 4.799865e-05 +-4.447454e-05 9.273541e-04 -1.058803e-03 -8.475013e-04 -1.541351e-04 2.053619e-04 + 2.760899e-04 2.228268e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 2.033302e-02 2.941990e-04 -3.370641e-05 -1.248659e-07 1.999713e-08 -1.073940e-06 + 6.092523e-05 1.383184e-04 -6.144324e-04 -7.397222e-04 -5.459967e-04 -3.483071e-04 +-2.066228e-04 -1.186030e-04 +>TXI.EXP //14 +-1.696930e-03 -4.997383e-05 2.885376e-06 6.060492e-07 1.132562e-08 3.581971e-06 +-6.490306e-05 4.127028e-04 4.450091e-04 -1.454748e-05 -1.929105e-04 -1.990976e-04 +-1.506829e-04 -9.893482e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.339109e-03 3.928106e-04 1.332022e-05 6.696472e-08 -1.917057e-08 -6.117589e-07 + 1.337238e-05 1.236126e-05 -9.817380e-05 -9.376770e-05 -6.144939e-05 -3.740138e-05 +-2.181284e-05 -1.241927e-05 +>TYI.EXP //14 + 5.512042e-05 -4.607442e-05 -4.094652e-06 -1.110581e-06 -1.519578e-08 7.175527e-07 +-7.744184e-06 6.666114e-05 5.116338e-05 -1.511840e-05 -2.863834e-05 -2.437316e-05 +-1.704534e-05 -1.072517e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1213.edi b/examples/data/NEConductor/par1213.edi new file mode 100644 index 00000000..51c814b1 --- /dev/null +++ b/examples/data/NEConductor/par1213.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1213" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1213" +REFLAT=-30:15:03.18 +REFLONG=139:42:37.8391 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1213" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.211153e-03 3.894942e-05 1.121485e-05 1.756177e-07 -3.294779e-07 9.703750e-06 +-4.854054e-04 1.281912e-03 -4.737449e-04 -2.376206e-03 -2.497043e-03 -1.879262e-03 +-1.203431e-03 -7.124414e-04 +>ZXXI ROT=ZROT //14 +-1.094417e-03 6.008301e-06 1.293642e-06 -2.706680e-07 -1.171325e-07 -3.767572e-05 +-8.912077e-05 -3.583848e-05 2.052607e-03 1.048423e-03 -1.572885e-04 -6.753008e-04 +-6.947796e-04 -5.220364e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865752e+02 1.241401e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.317140e+01 + 8.355841e+00 6.604715e+00 5.486108e+00 4.285208e+00 3.020613e+00 1.931209e+00 + 1.150666e+00 6.616525e-01 +>ZXYI ROT=ZROT //14 + 3.081859e+02 1.471554e+02 7.805625e+01 4.294175e+01 2.400291e+01 1.271869e+01 + 6.028251e+00 2.953003e+00 1.999169e+00 1.767930e+00 1.580670e+00 1.255780e+00 + 8.833186e-01 5.650227e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.867201e+02 -1.241561e+02 -7.346948e+01 -4.197588e+01 -2.350537e+01 -1.317136e+01 +-8.356365e+00 -6.605820e+00 -5.481435e+00 -4.278008e+00 -3.014293e+00 -1.926746e+00 +-1.147881e+00 -6.600200e-01 +>ZYXI ROT=ZROT //14 +-3.083026e+02 -1.471607e+02 -7.805613e+01 -4.294172e+01 -2.400292e+01 -1.271870e+01 +-6.027878e+00 -2.956196e+00 -2.003589e+00 -1.768952e+00 -1.579374e+00 -1.253788e+00 +-8.815533e-01 -5.637678e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-8.201644e-03 -8.942084e-05 -1.838203e-06 4.368114e-07 3.910741e-08 -1.329810e-05 + 6.468410e-04 -1.060918e-03 -7.363938e-04 6.677101e-04 1.003587e-03 8.174430e-04 + 5.372259e-04 3.208822e-04 +>ZYYI ROT=ZROT //14 + 3.638027e-04 -3.252149e-05 8.751433e-08 -6.284936e-08 6.151078e-08 4.799865e-05 +-4.447454e-05 9.273541e-04 -1.058803e-03 -8.475013e-04 -1.541351e-04 2.053619e-04 + 2.760899e-04 2.228268e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 2.033302e-02 2.941990e-04 -3.370641e-05 -1.248659e-07 1.999713e-08 -1.073940e-06 + 6.092523e-05 1.383184e-04 -6.144324e-04 -7.397222e-04 -5.459967e-04 -3.483071e-04 +-2.066228e-04 -1.186030e-04 +>TXI.EXP //14 +-1.696930e-03 -4.997383e-05 2.885376e-06 6.060492e-07 1.132562e-08 3.581971e-06 +-6.490306e-05 4.127028e-04 4.450091e-04 -1.454748e-05 -1.929105e-04 -1.990976e-04 +-1.506829e-04 -9.893482e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.339109e-03 3.928106e-04 1.332022e-05 6.696472e-08 -1.917057e-08 -6.117589e-07 + 1.337238e-05 1.236126e-05 -9.817380e-05 -9.376770e-05 -6.144939e-05 -3.740138e-05 +-2.181284e-05 -1.241927e-05 +>TYI.EXP //14 + 5.512042e-05 -4.607442e-05 -4.094652e-06 -1.110581e-06 -1.519578e-08 7.175527e-07 +-7.744184e-06 6.666114e-05 5.116338e-05 -1.511840e-05 -2.863834e-05 -2.437316e-05 +-1.704534e-05 -1.072517e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1214.edi b/examples/data/NEConductor/par1214.edi new file mode 100644 index 00000000..3f990415 --- /dev/null +++ b/examples/data/NEConductor/par1214.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1214" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1214" +REFLAT=-30:15:16.3847 +REFLONG=139:42:32.2138 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1214" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.272135e-02 -1.649417e-05 1.614074e-05 2.756346e-07 -8.947828e-08 -2.184669e-06 +-3.242588e-04 1.139244e-03 -7.349873e-04 -2.643770e-03 -2.694755e-03 -2.004982e-03 +-1.277523e-03 -7.547825e-04 +>ZXXI ROT=ZROT //14 +-1.224273e-03 -5.138494e-06 3.101019e-06 -3.317653e-07 2.302157e-08 -2.294485e-05 +-4.589245e-05 1.549300e-04 2.137234e-03 1.020613e-03 -2.336473e-04 -7.498521e-04 +-7.500658e-04 -5.578861e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865651e+02 1.241406e+02 7.346935e+01 4.197590e+01 2.350538e+01 1.317153e+01 + 8.354954e+00 6.606054e+00 5.487363e+00 4.285922e+00 3.021013e+00 1.931421e+00 + 1.150777e+00 6.617124e-01 +>ZXYI ROT=ZROT //14 + 3.081825e+02 1.471556e+02 7.805626e+01 4.294175e+01 2.400291e+01 1.271869e+01 + 6.027708e+00 2.951967e+00 1.999457e+00 1.768338e+00 1.580985e+00 1.255983e+00 + 8.834351e-01 5.650865e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.867580e+02 -1.241573e+02 -7.346940e+01 -4.197588e+01 -2.350538e+01 -1.317151e+01 +-8.355261e+00 -6.607215e+00 -5.483705e+00 -4.279936e+00 -3.015702e+00 -1.927656e+00 +-1.148423e+00 -6.603316e-01 +>ZYXI ROT=ZROT //14 +-3.083230e+02 -1.471613e+02 -7.805607e+01 -4.294172e+01 -2.400292e+01 -1.271871e+01 +-6.027384e+00 -2.954360e+00 -2.003291e+00 -1.769318e+00 -1.579952e+00 -1.254327e+00 +-8.819532e-01 -5.640289e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-8.458289e-03 -5.703696e-05 -1.769165e-06 4.511473e-07 2.788819e-08 1.814619e-06 + 4.162071e-04 -8.955334e-04 -1.877712e-04 1.264219e-03 1.474328e-03 1.133482e-03 + 7.296629e-04 4.325204e-04 +>ZYYI ROT=ZROT //14 + 3.677435e-04 -2.058378e-05 2.553917e-07 -5.844668e-08 -1.084103e-08 2.951691e-05 +-6.429803e-05 5.007343e-04 -1.294926e-03 -8.260380e-04 -6.662181e-06 3.703432e-04 + 4.082985e-04 3.125895e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 2.080105e-02 2.900146e-04 -3.352362e-05 8.185433e-09 2.239166e-08 -9.718105e-08 + 3.600022e-05 1.430403e-04 -4.869681e-04 -6.332266e-04 -4.749279e-04 -3.039313e-04 +-1.804005e-04 -1.035681e-04 +>TXI.EXP //14 +-1.839327e-03 -4.738206e-05 4.092925e-06 3.794160e-07 5.080628e-09 2.399602e-06 +-5.266438e-05 3.105998e-04 4.021527e-04 7.886834e-06 -1.599559e-04 -1.710184e-04 +-1.306738e-04 -8.610583e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.608870e-03 4.973841e-04 1.287898e-05 -3.247096e-07 -1.055156e-08 -2.794680e-07 + 1.120154e-05 2.548534e-05 -1.130926e-04 -1.268826e-04 -8.910648e-05 -5.568969e-05 +-3.279227e-05 -1.874597e-05 +>TYI.EXP //14 +-1.200538e-04 -5.939391e-05 -4.532923e-06 -9.262147e-07 -1.460392e-08 7.189784e-07 +-1.074729e-05 7.304396e-05 7.706502e-05 -8.661664e-06 -3.523542e-05 -3.355457e-05 +-2.457946e-05 -1.583898e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1215_0.edi b/examples/data/NEConductor/par1215_0.edi new file mode 100644 index 00000000..aada323d --- /dev/null +++ b/examples/data/NEConductor/par1215_0.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1215_0" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1215_0" +REFLAT=-30:15:29.5894 +REFLONG=139:42:26.5881 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1215_0" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.259023e-02 -4.141474e-05 1.574369e-05 2.703362e-07 -3.222517e-08 -4.693645e-06 +-2.645946e-04 1.007839e-03 -6.340395e-04 -2.425874e-03 -2.488040e-03 -1.853205e-03 +-1.180969e-03 -6.977283e-04 +>ZXXI ROT=ZROT //14 +-1.250432e-03 -5.681135e-06 3.266861e-06 -2.969182e-07 2.698479e-08 -1.607713e-05 +-1.166329e-05 9.583250e-05 1.962056e-03 9.600088e-04 -2.068527e-04 -6.900288e-04 +-6.924216e-04 -5.154296e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865625e+02 1.241405e+02 7.346935e+01 4.197590e+01 2.350537e+01 1.317159e+01 + 8.354446e+00 6.606726e+00 5.488183e+00 4.286516e+00 3.021409e+00 1.931662e+00 + 1.150915e+00 6.617905e-01 +>ZXYI ROT=ZROT //14 + 3.081867e+02 1.471556e+02 7.805627e+01 4.294175e+01 2.400291e+01 1.271868e+01 + 6.027486e+00 2.951283e+00 1.999481e+00 1.768532e+00 1.581195e+00 1.256150e+00 + 8.835483e-01 5.651565e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.868078e+02 -1.241580e+02 -7.346928e+01 -4.197589e+01 -2.350538e+01 -1.317158e+01 +-8.354684e+00 -6.608010e+00 -5.484689e+00 -4.280561e+00 -3.016091e+00 -1.927883e+00 +-1.148550e+00 -6.604028e-01 +>ZYXI ROT=ZROT //14 +-3.083477e+02 -1.471617e+02 -7.805603e+01 -4.294172e+01 -2.400291e+01 -1.271869e+01 +-6.027167e+00 -2.953490e+00 -2.003391e+00 -1.769587e+00 -1.580194e+00 -1.254502e+00 +-8.820655e-01 -5.640957e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-9.116338e-03 -7.340888e-05 -2.795640e-06 4.222275e-07 -6.201442e-09 5.331945e-06 + 3.350755e-04 -7.259541e-04 -2.515961e-04 1.038654e-03 1.250552e-03 9.672436e-04 + 6.234274e-04 3.696347e-04 +>ZYYI ROT=ZROT //14 + 2.678425e-04 -2.852013e-05 3.603174e-07 3.872215e-08 -3.728285e-08 2.156064e-05 +-9.566601e-05 5.135647e-04 -1.088160e-03 -7.406698e-04 -2.710395e-05 3.082235e-04 + 3.461920e-04 2.662738e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 2.090167e-02 2.773996e-04 -3.197530e-05 4.763420e-08 2.182868e-08 2.764528e-07 + 2.445578e-05 1.474581e-04 -4.291512e-04 -5.946338e-04 -4.518197e-04 -2.898861e-04 +-1.721434e-04 -9.883833e-05 +>TXI.EXP //14 +-1.970194e-03 -4.221941e-05 5.026768e-06 1.821116e-07 2.097716e-09 1.799230e-06 +-4.639033e-05 2.621008e-04 3.910065e-04 2.219237e-05 -1.464500e-04 -1.611313e-04 +-1.240434e-04 -8.196301e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.659258e-03 4.972076e-04 1.288115e-05 -3.196131e-07 -1.031748e-08 -1.284948e-07 + 7.137101e-06 2.019302e-05 -7.980821e-05 -9.107394e-05 -6.366266e-05 -3.966470e-05 +-2.332710e-05 -1.332367e-05 +>TYI.EXP //14 +-1.112841e-04 -5.940213e-05 -4.537852e-06 -9.310708e-07 -1.566097e-08 4.952167e-07 +-7.574153e-06 4.983120e-05 5.697436e-05 -5.919129e-06 -2.530056e-05 -2.400729e-05 +-1.753315e-05 -1.126661e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1215_1.edi b/examples/data/NEConductor/par1215_1.edi new file mode 100644 index 00000000..3d758f70 --- /dev/null +++ b/examples/data/NEConductor/par1215_1.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1215_1" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1215_1" +REFLAT=-30:15:43.741 +REFLONG=139:42:20.9495 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1215_1" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.216764e-02 -6.548975e-05 1.500474e-05 2.487666e-07 -3.060317e-09 -5.591192e-06 +-2.143797e-04 8.843617e-04 -5.259523e-04 -2.201281e-03 -2.277253e-03 -1.699189e-03 +-1.083200e-03 -6.400045e-04 +>ZXXI ROT=ZROT //14 +-1.600697e-03 -6.125293e-06 3.509448e-06 -2.465770e-07 1.197845e-08 -1.082013e-05 + 1.361254e-05 3.566088e-05 1.785542e-03 9.012536e-04 -1.776039e-04 -6.283883e-04 +-6.336488e-04 -4.723192e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865576e+02 1.241404e+02 7.346936e+01 4.197590e+01 2.350538e+01 1.317163e+01 + 8.354038e+00 6.607264e+00 5.488801e+00 4.286919e+00 3.021661e+00 1.931808e+00 + 1.150996e+00 6.618358e-01 +>ZXYI ROT=ZROT //14 + 3.081955e+02 1.471556e+02 7.805627e+01 4.294175e+01 2.400291e+01 1.271866e+01 + 6.027346e+00 2.950740e+00 1.999544e+00 1.768699e+00 1.581350e+00 1.256263e+00 + 8.836207e-01 5.651993e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.868748e+02 -1.241578e+02 -7.346912e+01 -4.197589e+01 -2.350538e+01 -1.317162e+01 +-8.354208e+00 -6.608626e+00 -5.485553e+00 -4.281123e+00 -3.016447e+00 -1.928094e+00 +-1.148670e+00 -6.604699e-01 +>ZYXI ROT=ZROT //14 +-3.083778e+02 -1.471615e+02 -7.805601e+01 -4.294172e+01 -2.400291e+01 -1.271867e+01 +-6.027046e+00 -2.952707e+00 -2.003444e+00 -1.769812e+00 -1.580404e+00 -1.254659e+00 +-8.821679e-01 -5.641575e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-9.855757e-03 -9.719408e-05 -4.052361e-06 3.832047e-07 -3.948103e-08 6.893868e-06 + 2.644523e-04 -5.760167e-04 -3.002618e-04 8.398570e-04 1.051974e-03 8.195860e-04 + 5.290448e-04 3.137612e-04 +>ZYYI ROT=ZROT //14 + 1.392906e-04 -3.959037e-05 4.875849e-07 1.629045e-07 -5.138038e-08 1.512691e-05 +-1.134960e-04 5.117054e-04 -9.024128e-04 -6.619323e-04 -4.415118e-05 2.534137e-04 + 2.911388e-04 2.251641e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 2.060783e-02 2.618028e-04 -2.881375e-05 -2.205715e-08 2.025025e-08 4.708387e-07 + 1.546651e-05 1.469513e-04 -3.735404e-04 -5.542196e-04 -4.266993e-04 -2.744211e-04 +-1.630139e-04 -9.360158e-05 +>TXI.EXP //14 +-2.090873e-03 -3.496607e-05 5.370492e-06 4.913405e-08 7.037949e-10 1.287913e-06 +-3.979534e-05 2.171253e-04 3.758890e-04 3.455062e-05 -1.330335e-04 -1.507457e-04 +-1.168922e-04 -7.743805e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.713953e-03 4.968543e-04 1.287777e-05 -3.137499e-07 -1.047503e-08 -4.738473e-08 + 4.565938e-06 1.506259e-05 -5.514695e-05 -6.317042e-05 -4.362295e-05 -2.702149e-05 +-1.585849e-05 -9.045492e-06 +>TYI.EXP //14 +-1.018576e-04 -5.940071e-05 -4.541383e-06 -9.360642e-07 -1.625764e-08 3.367589e-07 +-5.181978e-06 3.324191e-05 4.052870e-05 -4.431235e-06 -1.771825e-05 -1.655426e-05 +-1.199808e-05 -7.667143e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1216.edi b/examples/data/NEConductor/par1216.edi new file mode 100644 index 00000000..67e979fe --- /dev/null +++ b/examples/data/NEConductor/par1216.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1216" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1216" +REFLAT=-30:15:57.8746 +REFLONG=139:42:13.4929 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1216" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.465222e-02 -1.426490e-04 1.884442e-05 3.030277e-07 3.439898e-08 -5.372180e-06 +-1.493694e-04 8.009864e-04 -5.472006e-04 -2.202105e-03 -2.265540e-03 -1.685080e-03 +-1.072451e-03 -6.332109e-04 +>ZXXI ROT=ZROT //14 +-2.535141e-03 -3.253988e-05 6.119732e-06 -2.250079e-07 -4.755879e-08 -4.847996e-06 + 2.057035e-05 5.836768e-05 1.756613e-03 8.816211e-04 -1.878305e-04 -6.292579e-04 +-6.302317e-04 -4.684747e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865406e+02 1.241411e+02 7.346938e+01 4.197590e+01 2.350538e+01 1.317166e+01 + 8.353618e+00 6.607888e+00 5.489285e+00 4.287020e+00 3.021634e+00 1.931753e+00 + 1.150951e+00 6.618068e-01 +>ZXYI ROT=ZROT //14 + 3.082054e+02 1.471560e+02 7.805628e+01 4.294175e+01 2.400291e+01 1.271863e+01 + 6.027236e+00 2.950238e+00 1.999830e+00 1.768943e+00 1.581462e+00 1.256293e+00 + 8.836154e-01 5.651860e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.869674e+02 -1.241560e+02 -7.346899e+01 -4.197590e+01 -2.350538e+01 -1.317166e+01 +-8.353695e+00 -6.609128e+00 -5.486790e+00 -4.282210e+00 -3.017253e+00 -1.928621e+00 +-1.148986e+00 -6.606522e-01 +>ZYXI ROT=ZROT //14 +-3.084155e+02 -1.471606e+02 -7.805602e+01 -4.294173e+01 -2.400291e+01 -1.271865e+01 +-6.027010e+00 -2.951641e+00 -2.003174e+00 -1.769979e+00 -1.580714e+00 -1.254960e+00 +-8.823960e-01 -5.643083e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.039898e-02 -7.873021e-05 -4.394781e-06 3.972629e-07 -6.469006e-08 6.950921e-06 + 1.712590e-04 -5.197588e-04 -7.583966e-05 1.095889e-03 1.256717e-03 9.578713e-04 + 6.135280e-04 3.628478e-04 +>ZYYI ROT=ZROT //14 + 1.361470e-04 -3.227835e-05 7.995504e-07 2.204286e-07 -7.458224e-08 7.311197e-06 +-9.427757e-05 3.296130e-04 -1.012270e-03 -6.594906e-04 1.688686e-05 3.241444e-04 + 3.485400e-04 2.643798e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.987339e-02 2.531314e-04 -2.430088e-05 -1.682617e-07 1.688690e-08 5.175006e-07 + 6.657902e-06 1.331333e-04 -2.895999e-04 -4.740045e-04 -3.712664e-04 -2.393977e-04 +-1.422278e-04 -8.166402e-05 +>TXI.EXP //14 +-2.203177e-03 -2.688789e-05 4.924460e-06 -1.211974e-08 9.194181e-10 7.259562e-07 +-2.967300e-05 1.557578e-04 3.332110e-04 4.510903e-05 -1.100053e-04 -1.296340e-04 +-1.014158e-04 -6.738623e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.921630e-03 5.966515e-04 1.209943e-05 -6.710351e-07 -4.331200e-09 5.032236e-08 + 3.039495e-06 2.193769e-05 -5.925320e-05 -8.106350e-05 -5.948183e-05 -3.757473e-05 +-2.218962e-05 -1.269127e-05 +>TYI.EXP //14 +-2.839050e-04 -7.207481e-05 -4.814545e-06 -7.350537e-07 -1.309898e-08 2.601201e-07 +-5.785329e-06 3.300761e-05 5.554749e-05 1.127085e-06 -2.079619e-05 -2.163809e-05 +-1.628216e-05 -1.059818e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1217.edi b/examples/data/NEConductor/par1217.edi new file mode 100644 index 00000000..bbffff88 --- /dev/null +++ b/examples/data/NEConductor/par1217.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1217" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1217" +REFLAT=-30:16:12.026 +REFLONG=139:42:07.8533 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1217" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.387235e-02 -1.533817e-04 1.754144e-05 2.648009e-07 1.610036e-08 -4.531422e-06 +-1.193276e-04 6.985331e-04 -4.343944e-04 -1.980784e-03 -2.061679e-03 -1.537469e-03 +-9.791396e-04 -5.782132e-04 +>ZXXI ROT=ZROT //14 +-2.999413e-03 -4.762536e-05 6.564635e-06 -1.809765e-07 -6.935030e-08 -2.670525e-06 + 3.146583e-05 6.307436e-07 1.588793e-03 8.297307e-04 -1.562761e-04 -5.685375e-04 +-5.734121e-04 -4.271155e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865335e+02 1.241410e+02 7.346938e+01 4.197590e+01 2.350538e+01 1.317167e+01 + 8.353382e+00 6.608191e+00 5.489631e+00 4.287201e+00 3.021729e+00 1.931800e+00 + 1.150975e+00 6.618193e-01 +>ZXYI ROT=ZROT //14 + 3.082185e+02 1.471561e+02 7.805628e+01 4.294174e+01 2.400291e+01 1.271862e+01 + 6.027209e+00 2.949899e+00 1.999903e+00 1.769057e+00 1.581546e+00 1.256345e+00 + 8.836433e-01 5.652005e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.870981e+02 -1.241521e+02 -7.346905e+01 -4.197589e+01 -2.350538e+01 -1.317167e+01 +-8.353426e+00 -6.609439e+00 -5.487355e+00 -4.282561e+00 -3.017468e+00 -1.928747e+00 +-1.149057e+00 -6.606921e-01 +>ZYXI ROT=ZROT //14 +-3.084636e+02 -1.471587e+02 -7.805611e+01 -4.294173e+01 -2.400291e+01 -1.271863e+01 +-6.027009e+00 -2.951106e+00 -2.003193e+00 -1.770129e+00 -1.580848e+00 -1.255057e+00 +-8.824584e-01 -5.643456e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.134084e-02 -9.696191e-05 -5.227122e-06 3.958409e-07 -6.671715e-08 6.160817e-06 + 1.311477e-04 -4.104775e-04 -1.362030e-04 9.047037e-04 1.070977e-03 8.214381e-04 + 5.268129e-04 3.116318e-04 +>ZYYI ROT=ZROT //14 + 1.068480e-04 -3.991161e-05 1.072189e-06 3.085380e-07 -8.017416e-08 4.438903e-06 +-9.683106e-05 3.367946e-04 -8.477059e-04 -5.939631e-04 -3.677412e-06 2.713187e-04 + 2.970147e-04 2.263301e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.836297e-02 2.645833e-04 -1.928991e-05 -2.792001e-07 1.533202e-08 4.960184e-07 + 2.728619e-06 1.265366e-04 -2.485818e-04 -4.407901e-04 -3.499802e-04 -2.261402e-04 +-1.343654e-04 -7.714621e-05 +>TXI.EXP //14 +-2.275805e-03 -2.017304e-05 3.800336e-06 -5.078515e-08 1.568949e-09 4.624410e-07 +-2.457335e-05 1.253908e-04 3.167406e-04 5.293125e-05 -9.964085e-05 -1.211335e-04 +-9.540644e-05 -6.353507e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.984071e-03 5.960169e-04 1.208976e-05 -6.629965e-07 -4.516130e-09 5.632741e-08 + 1.905617e-06 1.665084e-05 -4.229458e-05 -5.961247e-05 -4.366997e-05 -2.753011e-05 +-1.624416e-05 -9.283361e-06 +>TYI.EXP //14 +-2.739858e-04 -7.205941e-05 -4.814312e-06 -7.406217e-07 -1.293811e-08 1.708882e-07 +-4.054632e-06 2.248834e-05 4.177102e-05 1.213021e-06 -1.525104e-05 -1.588083e-05 +-1.193371e-05 -7.750722e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1218.edi b/examples/data/NEConductor/par1218.edi new file mode 100644 index 00000000..16efc9a8 --- /dev/null +++ b/examples/data/NEConductor/par1218.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1218" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1218" +REFLAT=-30:16:28.0443 +REFLONG=139:41:59.4618 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1218" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.328703e-02 -1.609605e-04 1.647900e-05 2.381021e-07 -3.300656e-09 -3.624177e-06 +-9.358084e-05 6.035180e-04 -3.337741e-04 -1.775640e-03 -1.872131e-03 -1.400129e-03 +-8.922934e-04 -5.270183e-04 +>ZXXI ROT=ZROT //14 +-3.015519e-03 -6.093591e-05 6.908342e-06 -1.565408e-07 -7.477954e-08 -1.216736e-06 + 3.783814e-05 -4.581314e-05 1.431158e-03 7.799122e-04 -1.275147e-04 -5.122613e-04 +-5.206141e-04 -3.886475e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865263e+02 1.241409e+02 7.346938e+01 4.197590e+01 2.350538e+01 1.317168e+01 + 8.353197e+00 6.608438e+00 5.489896e+00 4.287311e+00 3.021770e+00 1.931813e+00 + 1.150978e+00 6.618195e-01 +>ZXYI ROT=ZROT //14 + 3.082313e+02 1.471561e+02 7.805627e+01 4.294174e+01 2.400291e+01 1.271861e+01 + 6.027205e+00 2.949621e+00 1.999989e+00 1.769159e+00 1.581609e+00 1.256375e+00 + 8.836559e-01 5.652049e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.872820e+02 -1.241460e+02 -7.346940e+01 -4.197589e+01 -2.350538e+01 -1.317168e+01 +-8.353215e+00 -6.609663e+00 -5.487854e+00 -4.282881e+00 -3.017668e+00 -1.928866e+00 +-1.149125e+00 -6.607303e-01 +>ZYXI ROT=ZROT //14 +-3.085250e+02 -1.471560e+02 -7.805627e+01 -4.294172e+01 -2.400291e+01 -1.271861e+01 +-6.027033e+00 -2.950634e+00 -2.003186e+00 -1.770254e+00 -1.580965e+00 -1.255145e+00 +-8.825160e-01 -5.643805e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-1.210005e-02 -9.355593e-05 -4.874290e-06 4.416271e-07 -6.153166e-08 5.173781e-06 + 9.759644e-05 -3.166628e-04 -1.792841e-04 7.422363e-04 9.111866e-04 7.037319e-04 + 4.519227e-04 2.673826e-04 +>ZYYI ROT=ZROT //14 + 2.066429e-04 -3.779499e-05 1.804853e-06 3.502781e-07 -7.825444e-08 2.399162e-06 +-9.428833e-05 3.317733e-04 -7.042717e-04 -5.340384e-04 -1.983811e-05 2.263354e-04 + 2.527405e-04 1.935371e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.589207e-02 3.149736e-04 -1.666595e-05 -2.356667e-07 1.484283e-08 4.404172e-07 + 2.312024e-08 1.182514e-04 -2.112392e-04 -4.085828e-04 -3.289669e-04 -2.129857e-04 +-1.265520e-04 -7.265415e-05 +>TXI.EXP //14 +-2.296314e-03 -1.772266e-05 2.767331e-06 -1.007639e-07 1.996810e-09 2.692276e-07 +-2.002823e-05 9.910062e-05 2.991546e-04 5.932938e-05 -8.990668e-05 -1.128854e-04 +-8.949991e-05 -5.972771e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.048889e-03 5.944968e-04 1.206786e-05 -6.532529e-07 -4.584491e-09 5.280184e-08 + 1.222619e-06 1.215762e-05 -2.970420e-05 -4.262496e-05 -3.099075e-05 -1.946156e-05 +-1.146854e-05 -6.546373e-06 +>TYI.EXP //14 +-2.632332e-04 -7.193807e-05 -4.807467e-06 -7.456852e-07 -1.298989e-08 1.109734e-07 +-2.804783e-06 1.507678e-05 3.047075e-05 8.558877e-07 -1.096076e-05 -1.130581e-05 +-8.455553e-06 -5.468979e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par1219.edi b/examples/data/NEConductor/par1219.edi new file mode 100644 index 00000000..c27c50f2 --- /dev/null +++ b/examples/data/NEConductor/par1219.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par1219" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par1219" +REFLAT=-30:16:46.9125 +REFLONG=139:41:51.9408 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par1219" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.586083e-02 -2.375776e-04 2.074807e-05 2.890549e-07 -1.612036e-08 -2.293344e-06 +-6.451867e-05 5.389277e-04 -2.994560e-04 -1.709704e-03 -1.809341e-03 -1.352747e-03 +-8.616379e-04 -5.087688e-04 +>ZXXI ROT=ZROT //14 +-3.009259e-03 -1.001834e-04 9.659212e-06 -1.461181e-07 -8.436505e-08 1.202177e-07 + 3.399819e-05 -5.387876e-05 1.370650e-03 7.619836e-04 -1.206010e-04 -4.947623e-04 +-5.029813e-04 -3.753605e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865071e+02 1.241419e+02 7.346941e+01 4.197591e+01 2.350538e+01 1.317168e+01 + 8.353007e+00 6.608741e+00 5.490107e+00 4.287240e+00 3.021638e+00 1.931700e+00 + 1.150901e+00 6.617732e-01 +>ZXYI ROT=ZROT //14 + 3.082406e+02 1.471566e+02 7.805628e+01 4.294173e+01 2.400291e+01 1.271859e+01 + 6.027218e+00 2.949345e+00 2.000218e+00 1.769321e+00 1.581650e+00 1.256356e+00 + 8.836204e-01 5.651744e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.874735e+02 -1.241414e+02 -7.346997e+01 -4.197589e+01 -2.350538e+01 -1.317169e+01 +-8.353001e+00 -6.609790e+00 -5.488555e+00 -4.283525e+00 -3.018153e+00 -1.929186e+00 +-1.149319e+00 -6.608424e-01 +>ZYXI ROT=ZROT //14 +-3.085886e+02 -1.471540e+02 -7.805650e+01 -4.294172e+01 -2.400291e+01 -1.271860e+01 +-6.027096e+00 -2.950031e+00 -2.002959e+00 -1.770329e+00 -1.581139e+00 -1.255321e+00 +-8.826526e-01 -5.644720e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.073288e-03 9.613155e-05 6.903834e-06 7.337904e-07 -6.805792e-08 3.496300e-06 + 6.107859e-05 -2.954481e-04 -8.222381e-05 8.607439e-04 1.008127e-03 7.697824e-04 + 4.924485e-04 2.909730e-04 +>ZYYI ROT=ZROT //14 + 1.958011e-03 5.152294e-05 6.589516e-06 2.226118e-09 -8.234831e-08 3.434821e-07 +-7.333991e-05 2.470805e-04 -7.579799e-04 -5.372337e-04 6.980859e-06 2.591643e-04 + 2.798681e-04 2.122268e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.226006e-02 4.131580e-04 -2.021456e-05 -8.467421e-08 1.575290e-08 3.318938e-07 +-2.035256e-06 1.011342e-04 -1.602443e-04 -3.520010e-04 -2.887746e-04 -1.874083e-04 +-1.113350e-04 -6.390717e-05 +>TXI.EXP //14 +-2.256930e-03 -2.031023e-05 2.538740e-06 -1.619442e-07 3.059788e-09 9.508675e-08 +-1.426667e-05 6.706900e-05 2.630674e-04 6.286366e-05 -7.469999e-05 -9.801555e-05 +-7.836340e-05 -5.242770e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.816907e-04 6.801079e-04 1.089936e-05 -9.420895e-07 1.493002e-09 6.552084e-08 + 4.985300e-07 1.532534e-05 -3.015071e-05 -5.302732e-05 -4.076055e-05 -2.598532e-05 +-1.537262e-05 -8.791233e-06 +>TYI.EXP //14 +-4.510449e-04 -8.279840e-05 -4.837165e-06 -5.328379e-07 -8.692655e-09 6.743887e-08 +-2.769817e-06 1.366408e-05 3.927864e-05 5.171004e-06 -1.251423e-05 -1.435750e-05 +-1.107692e-05 -7.271156e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par12ew.edi b/examples/data/NEConductor/par12ew.edi new file mode 100644 index 00000000..99bd302e --- /dev/null +++ b/examples/data/NEConductor/par12ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par12ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par12ew" +REFLAT=-30:12:45.5975 +REFLONG=139:42:46.5693 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par12ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.198446e-03 1.577688e-04 7.039602e-06 1.663897e-07 2.569474e-06 4.473731e-04 +-3.312789e-03 4.490444e-03 6.065644e-03 4.108871e-03 2.466497e-03 1.396186e-03 + 7.720391e-04 4.286448e-04 +>ZXXI ROT=ZROT //14 +-1.645168e-03 4.351996e-05 1.630067e-06 -2.065056e-07 -4.600762e-08 -9.598474e-07 +-1.737382e-03 -4.817861e-03 1.469034e-04 1.676284e-03 1.590363e-03 1.128730e-03 + 7.041190e-04 4.118673e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865652e+02 1.241402e+02 7.346934e+01 4.197591e+01 2.350537e+01 1.316963e+01 + 8.366405e+00 6.587107e+00 5.460341e+00 4.262054e+00 3.003396e+00 1.919998e+00 + 1.143949e+00 6.577842e-01 +>ZXYI ROT=ZROT //14 + 3.082087e+02 1.471556e+02 7.805624e+01 4.294175e+01 2.400289e+01 1.271699e+01 + 6.039405e+00 2.970851e+00 2.003050e+00 1.764108e+00 1.573914e+00 1.249303e+00 + 8.784385e-01 5.618102e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865973e+02 -1.241466e+02 -7.346917e+01 -4.197589e+01 -2.350537e+01 -1.316984e+01 +-8.364640e+00 -6.588735e+00 -5.465715e+00 -4.267923e+00 -3.008076e+00 -1.923160e+00 +-1.145880e+00 -6.589056e-01 +>ZYXI ROT=ZROT //14 +-3.082173e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400289e+01 -1.271705e+01 +-6.038754e+00 -2.966818e+00 -2.000770e+00 -1.764284e+00 -1.575342e+00 -1.250930e+00 +-8.797544e-01 -5.627078e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.595306e-03 -7.341918e-05 -9.497485e-07 2.364605e-07 -2.356552e-06 -3.975555e-04 + 2.900619e-03 -4.164757e-03 -4.731029e-03 -2.550181e-03 -1.184597e-03 -5.147232e-04 +-2.285745e-04 -1.116891e-04 +>ZYYI ROT=ZROT //14 + 1.828808e-04 -2.254615e-05 -1.707948e-07 -4.504167e-08 -1.345140e-07 1.126378e-05 + 1.619646e-03 3.810604e-03 -8.120342e-04 -1.694803e-03 -1.239048e-03 -6.965327e-04 +-3.437590e-04 -1.622266e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.128946e-02 -8.721139e-05 -3.409559e-05 -6.562596e-07 4.948223e-09 -3.803701e-06 + 4.452549e-05 -2.556850e-05 -1.912526e-04 -1.559126e-04 -1.005879e-04 -6.102483e-05 +-3.549681e-05 -2.026346e-05 +>TXI.EXP //14 +-5.693991e-04 4.092632e-06 4.702046e-06 1.142730e-06 -2.888551e-09 -1.565044e-07 +-2.852022e-07 1.466640e-04 5.580940e-05 -3.789171e-05 -5.088477e-05 -4.112958e-05 +-2.826670e-05 -1.773956e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.062268e-03 3.953908e-04 1.334099e-05 4.187618e-08 -7.486198e-08 -1.427641e-05 + 2.061000e-04 -7.329666e-05 -9.301919e-04 -8.523976e-04 -5.826460e-04 -3.636756e-04 +-2.143608e-04 -1.227200e-04 +>TYI.EXP //14 + 3.997764e-06 -4.614917e-05 -4.074850e-06 -1.088562e-06 -5.605079e-08 3.278225e-06 +-3.257997e-05 7.031336e-04 3.655345e-04 -1.402580e-04 -2.562587e-04 -2.267734e-04 +-1.629476e-04 -1.045808e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par13.edi b/examples/data/NEConductor/par13.edi new file mode 100644 index 00000000..5c77211a --- /dev/null +++ b/examples/data/NEConductor/par13.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par13" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par13" +REFLAT=-30:13:17.8927 +REFLONG=139:42:27.4465 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par13" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.003008e-02 1.433950e-04 1.225994e-05 2.499203e-07 6.588318e-07 1.942251e-04 +-1.758883e-03 2.735249e-03 1.857736e-03 -3.101712e-04 -1.004277e-03 -9.263969e-04 +-6.388156e-04 -3.888219e-04 +>ZXXI ROT=ZROT //14 +-2.139095e-03 4.362393e-05 3.111496e-06 -3.167707e-07 -1.071917e-06 -8.592422e-05 +-7.451584e-04 -1.784967e-03 1.648630e-03 1.418609e-03 4.655581e-04 -1.009594e-04 +-2.729484e-04 -2.485701e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865555e+02 1.241406e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.317031e+01 + 8.362401e+00 6.594951e+00 5.470738e+00 4.271048e+00 3.009976e+00 1.924248e+00 + 1.146485e+00 6.592420e-01 +>ZXYI ROT=ZROT //14 + 3.082053e+02 1.471558e+02 7.805626e+01 4.294175e+01 2.400290e+01 1.271799e+01 + 6.033966e+00 2.963976e+00 2.002001e+00 1.765873e+00 1.576635e+00 1.251822e+00 + 8.803077e-01 5.630311e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866131e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.317040e+01 +-8.361453e+00 -6.595702e+00 -5.473588e+00 -4.274147e+00 -3.012426e+00 -1.925895e+00 +-1.147489e+00 -6.598246e-01 +>ZYXI ROT=ZROT //14 +-3.082299e+02 -1.471560e+02 -7.805625e+01 -4.294173e+01 -2.400290e+01 -1.271798e+01 +-6.033782e+00 -2.961783e+00 -2.000760e+00 -1.765978e+00 -1.577397e+00 -1.252679e+00 +-8.809960e-01 -5.634990e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.926084e-03 -5.238853e-05 -8.263701e-07 2.798236e-07 -7.901406e-07 -1.706262e-04 + 1.521655e-03 -2.603049e-03 -1.057416e-03 1.295985e-03 1.820464e-03 1.487370e-03 + 9.843700e-04 5.902409e-04 +>ZYYI ROT=ZROT //14 + 2.486676e-04 -1.626071e-05 -1.661486e-07 -7.661414e-08 7.626264e-07 8.204008e-05 + 7.263219e-04 1.174120e-03 -2.108674e-03 -1.453778e-03 -2.489421e-04 3.743132e-04 + 5.017760e-04 4.071911e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.420754e-02 6.618394e-05 -3.203335e-05 -8.980983e-07 -2.168347e-08 -6.100622e-06 + 9.576457e-05 -1.121599e-05 -4.858242e-04 -4.525882e-04 -3.096323e-04 -1.928833e-04 +-1.135065e-04 -6.499103e-05 +>TXI.EXP //14 +-8.552463e-04 -1.797950e-05 1.874606e-06 1.297646e-06 -1.342054e-09 2.347970e-06 +-2.523018e-05 3.631324e-04 2.057429e-04 -6.989726e-05 -1.351915e-04 -1.202794e-04 +-8.643499e-05 -5.547713e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.352066e-03 4.984213e-04 1.287307e-05 -3.492479e-07 -4.999357e-08 -8.793059e-06 + 1.471361e-04 -5.413575e-06 -7.656844e-04 -7.332965e-04 -5.065409e-04 -3.169941e-04 +-1.869745e-04 -1.070615e-04 +>TYI.EXP //14 +-1.661057e-04 -5.932855e-05 -4.507850e-06 -9.026990e-07 -2.546366e-08 4.184128e-06 +-4.604684e-05 5.688549e-04 3.456290e-04 -1.018306e-04 -2.154346e-04 -1.950401e-04 +-1.412361e-04 -9.093492e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par13ew.edi b/examples/data/NEConductor/par13ew.edi new file mode 100644 index 00000000..90f29455 --- /dev/null +++ b/examples/data/NEConductor/par13ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par13ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par13ew" +REFLAT=-30:12:45.7807 +REFLONG=139:43:05.2676 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par13ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.839387e-03 1.193604e-04 3.700276e-06 9.711520e-08 3.213366e-06 5.516548e-04 +-3.806896e-03 5.295234e-03 7.184151e-03 5.085111e-03 3.169063e-03 1.841881e-03 + 1.034777e-03 5.788318e-04 +>ZXXI ROT=ZROT //14 +-1.185385e-03 2.732934e-05 7.083460e-07 -1.320880e-07 6.675077e-07 6.721807e-05 +-2.284225e-03 -5.568268e-03 6.689362e-06 1.868599e-03 1.891698e-03 1.402303e-03 + 9.029945e-04 5.398882e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865748e+02 1.241400e+02 7.346933e+01 4.197590e+01 2.350538e+01 1.316941e+01 + 8.367735e+00 6.583506e+00 5.456899e+00 4.259634e+00 3.001819e+00 1.919049e+00 + 1.143406e+00 6.574772e-01 +>ZXYI ROT=ZROT //14 + 3.082121e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400288e+01 1.271643e+01 + 6.042149e+00 2.972884e+00 2.002639e+00 1.763179e+00 1.573017e+00 1.248619e+00 + 8.779846e-01 5.615326e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865975e+02 -1.241466e+02 -7.346916e+01 -4.197589e+01 -2.350538e+01 -1.316958e+01 +-8.366380e+00 -6.585028e+00 -5.460470e+00 -4.263188e+00 -3.004545e+00 -1.920853e+00 +-1.144496e+00 -6.581076e-01 +>ZYXI ROT=ZROT //14 +-3.082176e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400288e+01 -1.271648e+01 +-6.041479e+00 -2.970199e+00 -2.001526e+00 -1.763501e+00 -1.573964e+00 -1.249605e+00 +-8.787528e-01 -5.620469e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.702453e-03 -9.134526e-05 -1.221471e-06 2.262404e-07 -3.037494e-06 -5.167184e-04 + 3.560414e-03 -5.057557e-03 -6.439144e-03 -4.227876e-03 -2.472831e-03 -1.368058e-03 +-7.444131e-04 -4.099638e-04 +>ZYYI ROT=ZROT //14 + 1.726000e-04 -2.849638e-05 -1.953047e-07 -2.057743e-08 -1.051464e-06 -5.432530e-05 + 2.169279e-03 5.018843e-03 -3.511521e-04 -1.865469e-03 -1.690964e-03 -1.163819e-03 +-7.074091e-04 -4.056202e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.125999e-02 -8.642635e-05 -3.404500e-05 -6.550837e-07 2.726493e-10 -5.591492e-06 + 6.990403e-05 -3.947956e-05 -2.934602e-04 -2.539125e-04 -1.705850e-04 -1.056038e-04 +-6.198575e-05 -3.547727e-05 +>TXI.EXP //14 +-5.680431e-04 4.022992e-06 4.691205e-06 1.139809e-06 -1.210057e-08 2.830107e-08 +-2.255837e-06 2.259811e-04 9.602786e-05 -5.033521e-05 -7.898315e-05 -6.759557e-05 +-4.785425e-05 -3.050796e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.761977e-03 2.889287e-04 1.350546e-05 4.460363e-07 -6.055834e-08 -1.241268e-05 + 1.676057e-04 -7.815913e-05 -7.219269e-04 -6.436954e-04 -4.347600e-04 -2.701057e-04 +-1.589313e-04 -9.092316e-05 +>TYI.EXP //14 + 1.791773e-04 -3.251609e-05 -3.526300e-06 -1.256636e-06 -4.973508e-08 1.502174e-06 +-1.543061e-05 5.473183e-04 2.631548e-04 -1.178130e-04 -1.971225e-04 -1.709251e-04 +-1.217602e-04 -7.780721e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par14.edi b/examples/data/NEConductor/par14.edi new file mode 100644 index 00000000..5af7f4dd --- /dev/null +++ b/examples/data/NEConductor/par14.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par14" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par14" +REFLAT=-30:13:01.6531 +REFLONG=139:42:27.6588 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par14" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.342317e-03 1.694212e-04 1.142738e-05 2.452554e-07 1.158291e-06 2.678306e-04 +-2.271547e-03 3.207804e-03 3.360165e-03 1.356424e-03 3.328207e-04 -2.081886e-05 +-8.515476e-05 -6.710710e-05 +>ZXXI ROT=ZROT //14 +-2.129787e-03 5.167275e-05 2.892400e-06 -3.025449e-07 -8.212966e-07 -7.356085e-05 +-9.777952e-04 -2.889098e-03 9.954437e-04 1.455644e-03 8.663089e-04 3.618307e-04 + 1.029615e-04 8.369397e-06 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865553e+02 1.241407e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.317010e+01 + 8.363741e+00 6.592751e+00 5.467115e+00 4.267610e+00 3.007358e+00 1.922520e+00 + 1.145442e+00 6.586394e-01 +>ZXYI ROT=ZROT //14 + 3.082058e+02 1.471558e+02 7.805626e+01 4.294175e+01 2.400290e+01 1.271774e+01 + 6.035402e+00 2.966472e+00 2.002774e+00 1.765442e+00 1.575683e+00 1.250862e+00 + 8.795670e-01 5.625373e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866044e+02 -1.241472e+02 -7.346920e+01 -4.197589e+01 -2.350537e+01 -1.317025e+01 +-8.362218e+00 -6.593868e+00 -5.472108e+00 -4.273299e+00 -3.011954e+00 -1.925644e+00 +-1.147356e+00 -6.597527e-01 +>ZYXI ROT=ZROT //14 +-3.082230e+02 -1.471555e+02 -7.805624e+01 -4.294174e+01 -2.400290e+01 -1.271776e+01 +-6.035073e+00 -2.962695e+00 -2.000345e+00 -1.765470e+00 -1.577016e+00 -1.252438e+00 +-8.808575e-01 -5.634230e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.659909e-03 -5.295334e-05 -7.548892e-07 2.590039e-07 -1.073329e-06 -2.279786e-04 + 1.880107e-03 -2.975679e-03 -2.017241e-03 2.635064e-04 1.010389e-03 9.478150e-04 + 6.577175e-04 4.012868e-04 +>ZYYI ROT=ZROT //14 + 2.211621e-04 -1.615414e-05 -1.647022e-07 -7.153692e-08 5.672366e-07 7.115980e-05 + 9.357759e-04 1.862305e-03 -1.735485e-03 -1.504127e-03 -5.113289e-04 8.678369e-05 + 2.742202e-04 2.538985e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.280375e-02 -7.905494e-06 -3.296706e-05 -8.113591e-07 -6.081953e-09 -4.888900e-06 + 6.764488e-05 -2.004967e-05 -3.216714e-04 -2.836277e-04 -1.892190e-04 -1.165953e-04 +-6.829922e-05 -3.905540e-05 +>TXI.EXP //14 +-7.136653e-04 -7.276922e-06 3.161773e-06 1.240952e-06 4.787718e-09 1.051411e-06 +-1.109557e-05 2.423562e-04 1.195277e-04 -5.399421e-05 -8.791221e-05 -7.505482e-05 +-5.294810e-05 -3.367415e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.324850e-03 4.986032e-04 1.287420e-05 -3.515214e-07 -6.176282e-08 -1.136733e-05 + 1.829272e-04 -2.553621e-05 -9.092591e-04 -8.625042e-04 -5.954995e-04 -3.728257e-04 +-2.199669e-04 -1.259717e-04 +>TYI.EXP //14 +-1.710091e-04 -5.932686e-05 -4.505447e-06 -9.005219e-07 -3.425856e-08 4.617788e-06 +-4.912428e-05 6.800600e-04 3.964406e-04 -1.239181e-04 -2.543017e-04 -2.295840e-04 +-1.661790e-04 -1.070020e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par14ew.edi b/examples/data/NEConductor/par14ew.edi new file mode 100644 index 00000000..53418075 --- /dev/null +++ b/examples/data/NEConductor/par14ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par14ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par14ew" +REFLAT=-30:12:45.9632 +REFLONG=139:43:23.9659 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par14ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.506533e-03 8.033877e-05 4.628283e-07 3.239963e-08 4.003190e-06 6.475637e-04 +-4.292650e-03 6.061746e-03 8.431029e-03 6.256160e-03 4.045358e-03 2.411833e-03 + 1.375605e-03 7.749309e-04 +>ZXXI ROT=ZROT //14 +-7.216020e-04 1.095006e-05 -1.681490e-07 -5.951166e-08 1.925657e-06 1.437891e-04 +-2.808432e-03 -6.412359e-03 -2.525454e-04 2.031670e-03 2.226337e-03 1.729710e-03 + 1.150532e-03 7.028549e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865843e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316924e+01 + 8.368746e+00 6.580638e+00 5.454110e+00 4.257644e+00 3.000512e+00 1.918258e+00 + 1.142950e+00 6.572198e-01 +>ZXYI ROT=ZROT //14 + 3.082163e+02 1.471555e+02 7.805622e+01 4.294174e+01 2.400288e+01 1.271596e+01 + 6.044375e+00 2.974505e+00 2.002346e+00 1.762441e+00 1.572289e+00 1.248058e+00 + 8.776088e-01 5.613014e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865976e+02 -1.241466e+02 -7.346917e+01 -4.197589e+01 -2.350538e+01 -1.316938e+01 +-8.367814e+00 -6.581913e+00 -5.455963e+00 -4.259073e+00 -3.001460e+00 -1.918831e+00 +-1.143280e+00 -6.574060e-01 +>ZYXI ROT=ZROT //14 +-3.082180e+02 -1.471552e+02 -7.805625e+01 -4.294174e+01 -2.400287e+01 -1.271598e+01 +-6.043792e+00 -2.973093e+00 -2.002234e+00 -1.762856e+00 -1.572781e+00 -1.248454e+00 +-8.778778e-01 -5.614678e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.774942e-03 -1.080335e-04 -1.496931e-06 2.084179e-07 -3.640345e-06 -6.328431e-04 + 4.228994e-03 -5.966571e-03 -8.296924e-03 -6.104170e-03 -3.932917e-03 -2.342564e-03 +-1.335857e-03 -7.525532e-04 +>ZYYI ROT=ZROT //14 + 1.661654e-04 -3.413124e-05 -2.299995e-07 4.945114e-09 -2.142461e-06 -1.359315e-04 + 2.739573e-03 6.328295e-03 2.071328e-04 -2.019812e-03 -2.181837e-03 -1.686365e-03 +-1.119354e-03 -6.832007e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.124429e-02 -8.590006e-05 -3.402474e-05 -6.543270e-07 -3.412759e-09 -7.700404e-06 + 9.923500e-05 -5.692699e-05 -4.062307e-04 -3.627280e-04 -2.488746e-04 -1.556626e-04 +-9.178326e-05 -5.260328e-05 +>TXI.EXP //14 +-5.675835e-04 3.977766e-06 4.686479e-06 1.138077e-06 -2.043636e-08 3.104365e-07 +-3.775068e-06 3.137281e-04 1.401481e-04 -6.358910e-05 -1.099234e-04 -9.704925e-05 +-6.977272e-05 -4.483673e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.396702e-03 1.815636e-04 1.341302e-05 8.359297e-07 -3.706061e-08 -7.836783e-06 + 9.969748e-05 -5.446824e-05 -4.175842e-04 -3.605055e-04 -2.388306e-04 -1.471320e-04 +-8.628844e-05 -4.929405e-05 +>TYI.EXP //14 + 3.509575e-04 -1.868584e-05 -2.903498e-06 -1.399793e-06 -3.913600e-08 2.396050e-07 +-3.861268e-06 3.163259e-04 1.409488e-04 -7.470086e-05 -1.132201e-04 -9.532512e-05 +-6.697307e-05 -4.247323e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par15ew.edi b/examples/data/NEConductor/par15ew.edi new file mode 100644 index 00000000..7368f692 --- /dev/null +++ b/examples/data/NEConductor/par15ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par15ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par15ew" +REFLAT=-30:12:46.1449 +REFLONG=139:43:42.6643 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par15ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 8.104601e-04 4.074766e-05 -2.731269e-06 -2.749447e-08 4.519756e-06 7.228548e-04 +-4.732230e-03 6.688735e-03 9.693461e-03 7.530055e-03 5.032367e-03 3.067534e-03 + 1.772342e-03 1.004404e-03 +>ZXXI ROT=ZROT //14 +-2.631749e-04 -5.842508e-06 -1.024672e-06 1.209229e-08 2.543087e-06 2.100967e-04 +-3.221298e-03 -7.287632e-03 -6.283773e-04 2.140670e-03 2.563093e-03 2.084988e-03 + 1.428843e-03 8.896348e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865938e+02 1.241403e+02 7.346931e+01 4.197590e+01 2.350539e+01 1.316914e+01 + 8.369367e+00 6.578986e+00 5.452383e+00 4.256342e+00 2.999630e+00 1.917715e+00 + 1.142635e+00 6.570403e-01 +>ZXYI ROT=ZROT //14 + 3.082213e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400288e+01 1.271569e+01 + 6.045652e+00 2.975533e+00 2.002259e+00 1.762025e+00 1.571836e+00 1.247691e+00 + 8.773564e-01 5.611435e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865974e+02 -1.241466e+02 -7.346917e+01 -4.197589e+01 -2.350539e+01 -1.316925e+01 +-8.368711e+00 -6.580038e+00 -5.453132e+00 -4.256442e+00 -2.999471e+00 -1.917522e+00 +-1.142491e+00 -6.569502e-01 +>ZYXI ROT=ZROT //14 +-3.082184e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400287e+01 -1.271568e+01 +-6.045179e+00 -2.974927e+00 -2.002741e+00 -1.762479e+00 -1.572038e+00 -1.247719e+00 +-8.773143e-01 -5.610933e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.813338e-03 -1.233861e-04 -1.774831e-06 1.843341e-07 -3.988787e-06 -7.278047e-04 + 4.807883e-03 -6.737242e-03 -1.002410e-02 -7.905144e-03 -5.354517e-03 -3.298898e-03 +-1.918676e-03 -1.090754e-03 +>ZYYI ROT=ZROT //14 + 1.637083e-04 -3.942268e-05 -2.712531e-07 3.264475e-08 -3.063153e-06 -2.152339e-04 + 3.226556e-03 7.546152e-03 7.915192e-04 -2.128772e-03 -2.637544e-03 -2.187763e-03 +-1.520179e-03 -9.552138e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.124225e-02 -8.563603e-05 -3.403405e-05 -6.540963e-07 -7.197951e-10 -9.803988e-06 + 1.286894e-04 -7.397703e-05 -5.175477e-04 -4.725791e-04 -3.288802e-04 -2.070973e-04 +-1.224679e-04 -7.025420e-05 +>TXI.EXP //14 +-5.679875e-04 3.957231e-06 4.687694e-06 1.137585e-06 -2.404230e-08 7.919197e-07 +-5.664322e-06 4.004076e-04 1.855412e-04 -7.534168e-05 -1.405909e-04 -1.268667e-04 +-9.216308e-05 -5.953764e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.964254e-03 7.533452e-05 1.310992e-05 1.190093e-06 -2.610983e-08 -1.167310e-06 + 1.003490e-05 -8.378272e-06 -4.401649e-05 -2.396374e-05 -8.510557e-06 -3.112452e-06 +-1.325521e-06 -6.278178e-07 +>TYI.EXP //14 + 5.203520e-04 -4.900741e-06 -2.252380e-06 -1.516406e-06 -3.077726e-08 -4.501605e-07 + 2.341490e-06 3.135836e-05 5.342910e-06 -1.651874e-05 -1.150392e-05 -5.559963e-06 +-2.443216e-06 -1.009955e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par16.edi b/examples/data/NEConductor/par16.edi new file mode 100644 index 00000000..be881ba1 --- /dev/null +++ b/examples/data/NEConductor/par16.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par16" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par16" +REFLAT=-30:12:29.1739 +REFLONG=139:42:28.0833 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par16" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.788238e-03 2.210684e-04 9.603542e-06 2.314556e-07 1.678277e-06 4.155329e-04 +-3.373452e-03 4.173581e-03 6.922349e-03 5.433787e-03 3.646579e-03 2.238588e-03 + 1.300870e-03 7.394190e-04 +>ZXXI ROT=ZROT //14 +-2.024990e-03 6.792154e-05 2.327368e-06 -2.673161e-07 -2.104781e-07 -2.355218e-05 +-1.457210e-03 -5.499803e-03 -6.933495e-04 1.466910e-03 1.815357e-03 1.494253e-03 + 1.034174e-03 6.486659e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865555e+02 1.241407e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.316980e+01 + 8.365564e+00 6.589869e+00 5.462013e+00 4.262653e+00 3.003544e+00 1.919985e+00 + 1.143907e+00 6.577511e-01 +>ZXYI ROT=ZROT //14 + 3.082061e+02 1.471558e+02 7.805626e+01 4.294175e+01 2.400290e+01 1.271742e+01 + 6.037269e+00 2.970011e+00 2.004020e+00 1.764907e+00 1.574345e+00 1.249480e+00 + 8.784888e-01 5.618142e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865897e+02 -1.241461e+02 -7.346916e+01 -4.197590e+01 -2.350537e+01 -1.317006e+01 +-8.363215e+00 -6.591643e+00 -5.469985e+00 -4.271843e+00 -3.011024e+00 -1.925093e+00 +-1.147044e+00 -6.595770e-01 +>ZYXI ROT=ZROT //14 +-3.082119e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400290e+01 -1.271748e+01 +-6.036625e+00 -2.964043e+00 -2.000068e+00 -1.764881e+00 -1.576463e+00 -1.252027e+00 +-8.805898e-01 -5.632613e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.307445e-03 -5.675483e-05 -6.079308e-07 2.274357e-07 -1.611805e-06 -3.481040e-04 + 2.787286e-03 -3.768113e-03 -4.898087e-03 -3.046530e-03 -1.666292e-03 -8.671462e-04 +-4.517639e-04 -2.432555e-04 +>ZYYI ROT=ZROT //14 + 1.763185e-04 -1.677230e-05 -1.510531e-07 -6.668667e-08 3.519384e-07 3.437674e-05 + 1.335729e-03 3.962121e-03 -3.598186e-04 -1.518864e-03 -1.291385e-03 -8.337685e-04 +-4.771471e-04 -2.603811e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.802531e-03 -1.729248e-04 -3.547597e-05 -4.508404e-07 2.235985e-09 7.513707e-07 +-2.697451e-05 -5.492052e-06 1.404881e-04 1.602872e-04 1.206355e-04 7.839142e-05 + 4.697937e-05 2.702553e-05 +>TXI.EXP //14 +-4.289096e-04 1.613476e-05 6.436809e-06 1.022346e-06 7.600686e-09 -1.605917e-06 + 1.461921e-05 -1.049789e-04 -8.451485e-05 5.237837e-06 4.129209e-05 4.349855e-05 + 3.352654e-05 2.225254e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.274056e-03 4.990106e-04 1.287655e-05 -3.554083e-07 -7.109369e-08 -1.532257e-05 + 2.408920e-04 -5.508637e-05 -1.142991e-03 -1.083311e-03 -7.515833e-04 -4.718705e-04 +-2.787475e-04 -1.597176e-04 +>TYI.EXP //14 +-1.800030e-04 -5.933451e-05 -4.501219e-06 -8.967512e-07 -4.638931e-08 5.636979e-06 +-5.599403e-05 8.611517e-04 4.876166e-04 -1.543256e-04 -3.183410e-04 -2.889843e-04 +-2.098740e-04 -1.354044e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par16ew.edi b/examples/data/NEConductor/par16ew.edi new file mode 100644 index 00000000..0519e1d1 --- /dev/null +++ b/examples/data/NEConductor/par16ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par16ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par16ew" +REFLAT=-30:12:46.326 +REFLONG=139:44:01.3627 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par16ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.123125e-03 6.114996e-07 -5.936705e-06 -8.740324e-08 3.658154e-06 7.684585e-04 +-5.074229e-03 7.061620e-03 1.079744e-02 8.741623e-03 6.005835e-03 3.728030e-03 + 2.176553e-03 1.239378e-03 +>ZXXI ROT=ZROT //14 + 1.811603e-04 -2.324518e-05 -1.884324e-06 8.228709e-08 3.765291e-06 2.437552e-04 +-3.430003e-03 -8.085925e-03 -1.086531e-03 2.172958e-03 2.854878e-03 2.421806e-03 + 1.702817e-03 1.077087e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866034e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316909e+01 + 8.369550e+00 6.578851e+00 5.451985e+00 4.255912e+00 2.999290e+00 1.917487e+00 + 1.142497e+00 6.569605e-01 +>ZXYI ROT=ZROT //14 + 3.082271e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400287e+01 1.271570e+01 + 6.045706e+00 2.975837e+00 2.002423e+00 1.762009e+00 1.571728e+00 1.247572e+00 + 8.772608e-01 5.610790e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865970e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350539e+01 -1.316919e+01 +-8.368906e+00 -6.579847e+00 -5.452641e+00 -4.255918e+00 -2.999051e+00 -1.917237e+00 +-1.142316e+00 -6.568483e-01 +>ZYXI ROT=ZROT //14 +-3.082189e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400287e+01 -1.271567e+01 +-6.045295e+00 -2.975285e+00 -2.002928e+00 -1.762459e+00 -1.571910e+00 -1.247573e+00 +-8.771959e-01 -5.610122e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.818615e-03 -1.373184e-04 -2.054041e-06 1.599388e-07 -4.024260e-06 -7.845106e-04 + 5.189406e-03 -7.196406e-03 -1.129089e-02 -9.299332e-03 -6.479552e-03 -4.064803e-03 +-2.388338e-03 -1.364023e-03 +>ZYYI ROT=ZROT //14 + 1.650691e-04 -4.435025e-05 -3.146433e-07 6.317786e-08 -3.682585e-06 -2.689602e-04 + 3.512912e-03 8.446359e-03 1.308844e-03 -2.163669e-03 -2.970948e-03 -2.575511e-03 +-1.837022e-03 -1.172583e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.125378e-02 -8.563889e-05 -3.407280e-05 -6.544278e-07 -6.406525e-09 -1.144280e-05 + 1.533375e-04 -8.547470e-05 -6.129795e-04 -5.712791e-04 -4.021634e-04 -2.545664e-04 +-1.508690e-04 -8.660925e-05 +>TXI.EXP //14 +-5.692294e-04 3.961853e-06 4.694809e-06 1.138410e-06 -1.896232e-08 1.556154e-06 +-9.159531e-06 4.746377e-04 2.288786e-04 -8.306609e-05 -1.672337e-04 -1.537537e-04 +-1.126409e-04 -7.306979e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.146150e-02 -2.781595e-05 1.263931e-05 1.489003e-06 -2.385105e-08 6.165590e-06 +-8.636004e-05 4.456906e-05 3.501474e-04 3.291962e-04 2.329064e-04 1.478128e-04 + 8.770792e-05 5.036956e-05 +>TYI.EXP //14 + 6.883388e-04 8.604015e-06 -1.616903e-06 -1.605556e-06 -1.262311e-08 -1.024545e-06 + 7.012643e-06 -2.698122e-04 -1.346824e-04 4.572486e-05 9.554620e-05 8.865492e-05 + 6.522517e-05 4.245383e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par17.edi b/examples/data/NEConductor/par17.edi new file mode 100644 index 00000000..2c688765 --- /dev/null +++ b/examples/data/NEConductor/par17.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par17" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par17" +REFLAT=-30:12:12.9342 +REFLONG=139:42:28.2955 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par17" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.934435e-03 2.458236e-04 8.606833e-06 2.234499e-07 1.771846e-06 4.658339e-04 +-3.800054e-03 4.473939e-03 8.497523e-03 7.324243e-03 5.208892e-03 3.312992e-03 + 1.962828e-03 1.125329e-03 +>ZXXI ROT=ZROT //14 +-1.938683e-03 7.607632e-05 2.014575e-06 -2.483356e-07 3.490530e-07 -2.070558e-06 +-1.595726e-03 -6.656114e-03 -1.546237e-03 1.419305e-03 2.234920e-03 2.018921e-03 + 1.472818e-03 9.526546e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865556e+02 1.241407e+02 7.346936e+01 4.197591e+01 2.350537e+01 1.316977e+01 + 8.365773e+00 6.589725e+00 5.461427e+00 4.261998e+00 3.003010e+00 1.919619e+00 + 1.143681e+00 6.576192e-01 +>ZXYI ROT=ZROT //14 + 3.082062e+02 1.471558e+02 7.805626e+01 4.294175e+01 2.400290e+01 1.271743e+01 + 6.037311e+00 2.970463e+00 2.004292e+00 1.764902e+00 1.574194e+00 1.249298e+00 + 8.783383e-01 5.617102e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865831e+02 -1.241458e+02 -7.346918e+01 -4.197590e+01 -2.350537e+01 -1.317003e+01 +-8.363386e+00 -6.591558e+00 -5.469542e+00 -4.271325e+00 -3.010602e+00 -1.924807e+00 +-1.146868e+00 -6.594751e-01 +>ZYXI ROT=ZROT //14 +-3.082076e+02 -1.471549e+02 -7.805628e+01 -4.294175e+01 -2.400290e+01 -1.271750e+01 +-6.036619e+00 -2.964396e+00 -2.000299e+00 -1.764886e+00 -1.576344e+00 -1.251883e+00 +-8.804717e-01 -5.631803e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.221302e-03 -6.023125e-05 -5.199356e-07 2.182553e-07 -1.903289e-06 -3.951782e-04 + 3.239437e-03 -4.058221e-03 -6.524782e-03 -5.007137e-03 -3.282520e-03 -1.975333e-03 +-1.133265e-03 -6.402140e-04 +>ZYYI ROT=ZROT //14 + 1.626003e-04 -1.754444e-05 -1.421806e-07 -6.894540e-08 -2.368308e-07 2.318941e-05 + 1.439810e-03 5.169789e-03 5.347946e-04 -1.468018e-03 -1.728776e-03 -1.378135e-03 +-9.305588e-04 -5.738720e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.218555e-03 -2.598801e-04 -3.662900e-05 -2.077943e-07 1.542904e-08 4.097462e-06 +-8.035561e-05 7.261138e-06 3.922915e-04 3.986576e-04 2.863641e-04 1.825481e-04 + 1.085301e-04 6.230215e-05 +>TXI.EXP //14 +-2.848600e-04 2.829199e-05 8.192067e-06 8.745821e-07 1.571310e-08 -2.929720e-06 + 2.685328e-05 -2.952469e-04 -1.911150e-04 3.902790e-05 1.112335e-04 1.071516e-04 + 7.981632e-05 5.214986e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.249809e-03 4.992467e-04 1.287769e-05 -3.571154e-07 -7.284240e-08 -1.587469e-05 + 2.539470e-04 -5.542506e-05 -1.204526e-03 -1.152302e-03 -8.038884e-04 -5.059398e-04 +-2.991645e-04 -1.714810e-04 +>TYI.EXP //14 +-1.841819e-04 -5.934515e-05 -4.499375e-06 -8.950521e-07 -4.452361e-08 6.369030e-06 +-6.161825e-05 9.085887e-04 5.219745e-04 -1.567141e-04 -3.361170e-04 -3.078194e-04 +-2.244324e-04 -1.450825e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par17ew.edi b/examples/data/NEConductor/par17ew.edi new file mode 100644 index 00000000..04a61228 --- /dev/null +++ b/examples/data/NEConductor/par17ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par17ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par17ew" +REFLAT=-30:12:46.5062 +REFLONG=139:44:20.0611 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par17ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.445328e-03 -3.999719e-05 -9.208204e-06 -1.523955e-07 4.145905e-06 7.781815e-04 +-5.262892e-03 7.093375e-03 1.155961e-02 9.699232e-03 6.814418e-03 4.291715e-03 + 2.526429e-03 1.444020e-03 +>ZXXI ROT=ZROT //14 + 6.026967e-04 -4.143050e-05 -2.769923e-06 1.532302e-07 3.283122e-06 2.327877e-04 +-3.375392e-03 -8.681524e-03 -1.566756e-03 2.116772e-03 3.052950e-03 2.686641e-03 + 1.929785e-03 1.236318e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866135e+02 1.241417e+02 7.346932e+01 4.197589e+01 2.350538e+01 1.316911e+01 + 8.369268e+00 6.580238e+00 5.452956e+00 4.256401e+00 2.999532e+00 1.917603e+00 + 1.142553e+00 6.569896e-01 +>ZXYI ROT=ZROT //14 + 3.082338e+02 1.471562e+02 7.805618e+01 4.294173e+01 2.400288e+01 1.271598e+01 + 6.044538e+00 2.975388e+00 2.002814e+00 1.762390e+00 1.571978e+00 1.247712e+00 + 8.773334e-01 5.611153e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865962e+02 -1.241465e+02 -7.346917e+01 -4.197589e+01 -2.350538e+01 -1.316923e+01 +-8.368353e+00 -6.581363e+00 -5.454570e+00 -4.257584e+00 -3.000268e+00 -1.918021e+00 +-1.142783e+00 -6.571169e-01 +>ZYXI ROT=ZROT //14 +-3.082194e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400287e+01 -1.271594e+01 +-6.044128e+00 -2.974105e+00 -2.002761e+00 -1.762796e+00 -1.572418e+00 -1.248041e+00 +-8.775418e-01 -5.612376e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.792140e-03 -1.497612e-04 -2.333087e-06 1.400162e-07 -3.868518e-06 -7.924918e-04 + 5.295269e-03 -7.223163e-03 -1.184226e-02 -1.002075e-02 -7.097452e-03 -4.498459e-03 +-2.658380e-03 -1.522181e-03 +>ZYYI ROT=ZROT //14 + 1.698144e-04 -4.890019e-05 -3.552928e-07 9.498569e-08 -3.703943e-06 -2.800875e-04 + 3.518606e-03 8.852526e-03 1.675776e-03 -2.108331e-03 -3.114801e-03 -2.775408e-03 +-2.010484e-03 -1.294973e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.127884e-02 -8.591423e-05 -3.414145e-05 -6.552069e-07 -1.722643e-08 -1.216740e-05 + 1.687031e-04 -8.700870e-05 -6.799651e-04 -6.475523e-04 -4.606172e-04 -2.928507e-04 +-1.738671e-04 -9.987235e-05 +>TXI.EXP //14 +-5.712933e-04 3.992237e-06 4.707925e-06 1.140566e-06 -5.671601e-09 2.582182e-06 +-1.517252e-05 5.264522e-04 2.667572e-04 -8.494291e-05 -1.865599e-04 -1.746377e-04 +-1.289191e-04 -8.393508e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.288414e-02 -1.260322e-04 1.203645e-05 1.715410e-06 -2.201516e-08 1.243679e-05 +-1.719363e-04 8.574715e-05 7.092085e-04 6.567759e-04 4.585302e-04 2.892785e-04 + 1.712535e-04 9.824317e-05 +>TYI.EXP //14 + 8.558450e-04 2.159391e-05 -1.037138e-06 -1.665702e-06 4.490984e-09 -2.070827e-06 + 1.510837e-05 -5.439646e-04 -2.690600e-04 9.949646e-05 1.936401e-04 1.761377e-04 + 1.284068e-04 8.314248e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par18.edi b/examples/data/NEConductor/par18.edi new file mode 100644 index 00000000..01415fe7 --- /dev/null +++ b/examples/data/NEConductor/par18.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par18" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par18" +REFLAT=-30:11:56.6946 +REFLONG=139:42:28.5077 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par18" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.039653e-03 2.693062e-04 7.563668e-06 2.135604e-07 2.009152e-06 4.867388e-04 +-4.037856e-03 4.531090e-03 9.598480e-03 8.744134e-03 6.408732e-03 4.147397e-03 + 2.479830e-03 1.427462e-03 +>ZXXI ROT=ZROT //14 +-1.835091e-03 8.420172e-05 1.698019e-06 -2.293621e-07 8.384765e-07 5.567465e-06 +-1.600250e-03 -7.469041e-03 -2.266416e-03 1.327118e-03 2.528418e-03 2.412321e-03 + 1.809224e-03 1.188236e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865558e+02 1.241407e+02 7.346936e+01 4.197590e+01 2.350537e+01 1.316982e+01 + 8.365440e+00 6.590536e+00 5.462351e+00 4.262761e+00 3.003551e+00 1.919960e+00 + 1.143881e+00 6.577333e-01 +>ZXYI ROT=ZROT //14 + 3.082062e+02 1.471558e+02 7.805626e+01 4.294174e+01 2.400290e+01 1.271756e+01 + 6.036705e+00 2.969893e+00 2.004267e+00 1.765088e+00 1.574440e+00 1.249514e+00 + 8.784922e-01 5.618084e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865767e+02 -1.241458e+02 -7.346921e+01 -4.197590e+01 -2.350537e+01 -1.317006e+01 +-8.363305e+00 -6.592204e+00 -5.469590e+00 -4.271023e+00 -3.010268e+00 -1.924551e+00 +-1.146703e+00 -6.593769e-01 +>ZYXI ROT=ZROT //14 +-3.082041e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400290e+01 -1.271763e+01 +-6.036061e+00 -2.964479e+00 -2.000759e+00 -1.765100e+00 -1.576350e+00 -1.251802e+00 +-8.803803e-01 -5.631098e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.194957e-03 -6.491642e-05 -4.098789e-07 2.173501e-07 -1.830528e-06 -4.216124e-04 + 3.594954e-03 -4.171366e-03 -7.973000e-03 -6.832035e-03 -4.810142e-03 -3.031894e-03 +-1.786039e-03 -1.021218e-03 +>ZYYI ROT=ZROT //14 + 1.580817e-04 -1.865434e-05 -1.338990e-07 -7.631061e-08 -3.034734e-08 2.598052e-05 + 1.422166e-03 6.263635e-03 1.437834e-03 -1.372491e-03 -2.116368e-03 -1.883830e-03 +-1.358808e-03 -8.723537e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.585412e-03 -3.469729e-04 -3.737710e-05 5.128098e-08 4.322138e-08 6.795914e-06 +-1.263258e-04 1.350385e-05 6.189789e-04 6.175404e-04 4.396374e-04 2.791108e-04 + 1.656411e-04 9.504378e-05 +>TXI.EXP //14 +-1.390140e-04 4.037799e-05 9.855030e-06 7.109801e-07 1.539869e-08 -4.283089e-06 + 3.996903e-05 -4.659939e-04 -2.920659e-04 6.737532e-05 1.746798e-04 1.656650e-04 + 1.225827e-04 7.983497e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.225899e-03 4.995122e-04 1.287876e-05 -3.586922e-07 -7.258723e-08 -1.521168e-05 + 2.530004e-04 -4.342183e-05 -1.218774e-03 -1.184215e-03 -8.322505e-04 -5.253497e-04 +-3.109979e-04 -1.783412e-04 +>TYI.EXP //14 +-1.882063e-04 -5.936124e-05 -4.497686e-06 -8.934631e-07 -3.513648e-08 7.149529e-06 +-6.872074e-05 9.189055e-04 5.456015e-04 -1.491224e-04 -3.416521e-04 -3.168425e-04 +-2.322214e-04 -1.504951e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par18ew.edi b/examples/data/NEConductor/par18ew.edi new file mode 100644 index 00000000..4c550e68 --- /dev/null +++ b/examples/data/NEConductor/par18ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par18ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par18ew" +REFLAT=-30:12:46.6858 +REFLONG=139:44:38.7596 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par18ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.792210e-03 -8.096556e-05 -1.260339e-05 -2.226279e-07 3.223993e-06 7.474720e-04 +-5.256597e-03 6.762533e-03 1.185507e-02 1.025431e-02 7.334150e-03 4.672681e-03 + 2.768818e-03 1.587289e-03 +>ZXXI ROT=ZROT //14 + 9.915259e-04 -6.057476e-05 -3.705662e-06 2.304715e-07 1.686898e-06 1.802329e-04 +-3.060969e-03 -8.974684e-03 -2.002080e-03 1.976696e-03 3.125102e-03 2.838269e-03 + 2.074893e-03 1.343026e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866243e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350538e+01 1.316923e+01 + 8.368522e+00 6.582867e+00 5.455101e+00 4.257717e+00 3.000309e+00 1.918039e+00 + 1.142793e+00 6.571221e-01 +>ZXYI ROT=ZROT //14 + 3.082413e+02 1.471566e+02 7.805616e+01 4.294173e+01 2.400288e+01 1.271646e+01 + 6.042412e+00 2.974252e+00 2.003348e+00 1.763090e+00 1.572535e+00 1.248086e+00 + 8.775603e-01 5.612457e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865952e+02 -1.241464e+02 -7.346917e+01 -4.197589e+01 -2.350538e+01 -1.316938e+01 +-8.367154e+00 -6.584203e+00 -5.458407e+00 -4.260983e+00 -3.002778e+00 -1.919651e+00 +-1.143759e+00 -6.576784e-01 +>ZYXI ROT=ZROT //14 +-3.082200e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400288e+01 -1.271642e+01 +-6.041999e+00 -2.971684e+00 -2.002304e+00 -1.763412e+00 -1.573428e+00 -1.248993e+00 +-8.782544e-01 -5.617053e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.735731e-03 -1.606683e-04 -2.609715e-06 1.262372e-07 -3.600659e-06 -7.510656e-04 + 5.106572e-03 -6.804427e-03 -1.160140e-02 -9.974631e-03 -7.128256e-03 -4.544200e-03 +-2.694288e-03 -1.545053e-03 +>ZYYI ROT=ZROT //14 + 1.773521e-04 -5.306085e-05 -3.882908e-07 1.244767e-07 -3.185550e-06 -2.469115e-04 + 3.240485e-03 8.706909e-03 1.848725e-03 -1.967188e-03 -3.049113e-03 -2.761112e-03 +-2.018088e-03 -1.306650e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.131747e-02 -8.646817e-05 -3.424111e-05 -6.563126e-07 -2.160167e-08 -1.175486e-05 + 1.723293e-04 -7.683953e-05 -7.117360e-04 -6.943553e-04 -4.988158e-04 -3.183588e-04 +-1.892925e-04 -1.087893e-04 +>TXI.EXP //14 +-5.741659e-04 4.049080e-06 4.727283e-06 1.143980e-06 -4.509631e-09 3.701948e-06 +-2.356642e-05 5.503328e-04 2.964276e-04 -8.053698e-05 -1.967480e-04 -1.875755e-04 +-1.394743e-04 -9.111207e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.422646e-02 -2.175451e-04 1.132448e-05 1.854908e-06 -8.661201e-09 1.632254e-05 +-2.328418e-04 1.015842e-04 9.890568e-04 9.242232e-04 6.458434e-04 4.074308e-04 + 2.411831e-04 1.383461e-04 +>TYI.EXP //14 + 1.023749e-03 3.382963e-05 -5.473000e-07 -1.694017e-06 1.727271e-08 -3.799538e-06 + 2.939554e-05 -7.565257e-04 -3.886239e-04 1.355264e-04 2.714047e-04 2.476996e-04 + 1.807285e-04 1.170285e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par19.edi b/examples/data/NEConductor/par19.edi new file mode 100644 index 00000000..cc6c87a5 --- /dev/null +++ b/examples/data/NEConductor/par19.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par19" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par19" +REFLAT=-30:11:40.4549 +REFLONG=139:42:28.7197 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par19" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.112642e-03 2.911307e-04 6.489691e-06 2.025640e-07 2.145719e-06 4.747600e-04 +-4.049510e-03 4.316532e-03 1.008861e-02 9.531076e-03 7.111736e-03 4.649338e-03 + 2.794898e-03 1.612603e-03 +>ZXXI ROT=ZROT //14 +-1.717731e-03 9.224250e-05 1.386020e-06 -2.117151e-07 1.174274e-06 -2.611472e-06 +-1.461261e-03 -7.836165e-03 -2.782307e-03 1.194022e-03 2.659755e-03 2.629316e-03 + 2.005644e-03 1.329246e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865559e+02 1.241408e+02 7.346937e+01 4.197590e+01 2.350537e+01 1.316995e+01 + 8.364622e+00 6.592130e+00 5.464555e+00 4.264731e+00 3.005009e+00 1.920905e+00 + 1.144446e+00 6.580582e-01 +>ZXYI ROT=ZROT //14 + 3.082061e+02 1.471558e+02 7.805626e+01 4.294174e+01 2.400290e+01 1.271777e+01 + 6.035597e+00 2.968436e+00 2.003974e+00 1.765430e+00 1.575023e+00 1.250066e+00 + 8.789058e-01 5.620795e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865703e+02 -1.241460e+02 -7.346927e+01 -4.197589e+01 -2.350537e+01 -1.317015e+01 +-8.362957e+00 -6.593483e+00 -5.470123e+00 -4.270985e+00 -3.010075e+00 -1.924366e+00 +-1.146574e+00 -6.592977e-01 +>ZYXI ROT=ZROT //14 +-3.082013e+02 -1.471554e+02 -7.805633e+01 -4.294174e+01 -2.400290e+01 -1.271783e+01 +-6.035055e+00 -2.964267e+00 -2.001375e+00 -1.765489e+00 -1.576482e+00 -1.251796e+00 +-8.803308e-01 -5.630612e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.230682e-03 -7.100069e-05 -2.707797e-07 2.252134e-07 -1.431675e-06 -4.219624e-04 + 3.792105e-03 -4.061999e-03 -9.044600e-03 -8.289299e-03 -6.058480e-03 -3.906144e-03 +-2.329737e-03 -1.339469e-03 +>ZYYI ROT=ZROT //14 + 1.646551e-04 -2.015359e-05 -1.276524e-07 -8.957932e-08 -1.976179e-07 4.316894e-05 + 1.271724e-03 7.092008e-03 2.249451e-03 -1.235500e-03 -2.401675e-03 -2.286356e-03 +-1.708330e-03 -1.118832e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.906671e-03 -4.319485e-04 -3.744667e-05 3.046484e-07 6.299438e-08 8.319515e-06 +-1.582292e-04 7.935099e-06 7.972557e-04 7.981536e-04 5.680840e-04 3.604363e-04 + 2.138208e-04 1.226812e-04 +>TXI.EXP //14 + 9.189382e-06 5.210059e-05 1.129131e-05 5.398413e-07 1.716750e-08 -5.572833e-06 + 5.411194e-05 -5.987447e-04 -3.815147e-04 8.569490e-05 2.255836e-04 2.140495e-04 + 1.583336e-04 1.030910e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-3.202009e-03 4.998145e-04 1.287965e-05 -3.601352e-07 -7.081304e-08 -1.347603e-05 + 2.387456e-04 -2.080750e-05 -1.187646e-03 -1.178808e-03 -8.357319e-04 -5.292943e-04 +-3.137195e-04 -1.799838e-04 +>TYI.EXP //14 +-1.921206e-04 -5.938366e-05 -4.496129e-06 -8.919979e-07 -2.484025e-08 7.760426e-06 +-7.611247e-05 8.932906e-04 5.573061e-04 -1.329441e-04 -3.353518e-04 -3.159296e-04 +-2.329913e-04 -1.514301e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par19ew.edi b/examples/data/NEConductor/par19ew.edi new file mode 100644 index 00000000..32b69f7f --- /dev/null +++ b/examples/data/NEConductor/par19ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par19ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par19ew" +REFLAT=-30:12:46.8645 +REFLONG=139:44:57.4582 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par19ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.018056e-02 -1.221332e-04 -1.618354e-05 -2.964372e-07 3.167004e-06 6.779885e-04 +-5.043763e-03 6.121323e-03 1.165923e-02 1.035118e-02 7.510132e-03 4.829631e-03 + 2.877116e-03 1.653375e-03 +>ZXXI ROT=ZROT //14 + 1.335824e-03 -8.087395e-05 -4.717049e-06 3.175044e-07 2.257534e-06 1.029424e-04 +-2.551826e-03 -8.925708e-03 -2.340988e-03 1.772047e-03 3.066434e-03 2.861618e-03 + 2.122821e-03 1.385679e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866360e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.316944e+01 + 8.367362e+00 6.586289e+00 5.458076e+00 4.259659e+00 3.001513e+00 1.918737e+00 + 1.143183e+00 6.573403e-01 +>ZXYI ROT=ZROT //14 + 3.082497e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400289e+01 1.271702e+01 + 6.039742e+00 2.972569e+00 2.003920e+00 1.763986e+00 1.573310e+00 1.248638e+00 + 8.779088e-01 5.614519e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865940e+02 -1.241464e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.316962e+01 +-8.365512e+00 -6.587772e+00 -5.463319e+00 -4.265352e+00 -3.006013e+00 -1.921754e+00 +-1.145017e+00 -6.584033e-01 +>ZYXI ROT=ZROT //14 +-3.082207e+02 -1.471552e+02 -7.805626e+01 -4.294173e+01 -2.400289e+01 -1.271697e+01 +-6.039382e+00 -2.968525e+00 -2.001677e+00 -1.764186e+00 -1.574719e+00 -1.250216e+00 +-8.791722e-01 -5.623084e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.651630e-03 -1.700374e-04 -2.880318e-06 1.171056e-07 -3.248670e-06 -6.691082e-04 + 4.668245e-03 -6.037854e-03 -1.068774e-02 -9.260349e-03 -6.642165e-03 -4.246192e-03 +-2.522002e-03 -1.447444e-03 +>ZYYI ROT=ZROT //14 + 1.869679e-04 -5.680771e-05 -4.093774e-07 1.486879e-07 -2.411464e-06 -1.832967e-04 + 2.752753e-03 8.083886e-03 1.834605e-03 -1.763838e-03 -2.805840e-03 -2.560521e-03 +-1.879782e-03 -1.220348e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.136976e-02 -8.730720e-05 -3.437354e-05 -6.577334e-07 -2.574096e-08 -1.032801e-05 + 1.644844e-04 -5.653825e-05 -7.087098e-04 -7.104328e-04 -5.152829e-04 -3.299873e-04 +-1.964500e-04 -1.129522e-04 +>TXI.EXP //14 +-5.778451e-04 4.133133e-06 4.753267e-06 1.148559e-06 -2.631440e-09 4.644534e-06 +-3.302950e-05 5.463450e-04 3.163361e-04 -7.082008e-05 -1.978182e-04 -1.921905e-04 +-1.439039e-04 -9.429942e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.548095e-02 -3.006828e-04 1.051063e-05 1.897107e-06 8.951534e-09 1.736864e-05 +-2.630021e-04 8.838203e-05 1.168836e-03 1.113345e-03 7.822738e-04 4.943284e-04 + 2.927875e-04 1.679754e-04 +>TYI.EXP //14 + 1.192860e-03 4.506270e-05 -1.736448e-07 -1.685992e-06 1.728582e-08 -5.866769e-06 + 4.882395e-05 -8.905873e-04 -4.867932e-04 1.504911e-04 3.233559e-04 2.984656e-04 + 2.186530e-04 1.418253e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par20.edi b/examples/data/NEConductor/par20.edi new file mode 100644 index 00000000..b9237fdd --- /dev/null +++ b/examples/data/NEConductor/par20.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par20" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par20" +REFLAT=-30:14:06.7956 +REFLONG=139:42:45.5117 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par20" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-8.466893e-03 7.701496e-05 9.992748e-06 1.640363e-07 -1.250344e-07 7.487013e-05 +-9.649076e-04 1.937041e-03 -3.800479e-05 -2.249022e-03 -2.510374e-03 -1.930584e-03 +-1.248158e-03 -7.417825e-04 +>ZXXI ROT=ZROT //14 +-1.517351e-03 1.887529e-05 1.779043e-06 -2.526064e-07 -7.280298e-07 -7.380897e-05 +-3.731220e-04 -3.742129e-04 2.288370e-03 1.276298e-03 -3.753396e-05 -6.387833e-04 +-6.971728e-04 -5.344833e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865679e+02 1.241401e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.317088e+01 + 8.358937e+00 6.600075e+00 5.479924e+00 4.280021e+00 3.016879e+00 1.928827e+00 + 1.149255e+00 6.608440e-01 +>ZXYI ROT=ZROT //14 + 3.082018e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400291e+01 1.271847e+01 + 6.030772e+00 2.957526e+00 1.999690e+00 1.766815e+00 1.579057e+00 1.254326e+00 + 8.822581e-01 5.643374e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866500e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317083e+01 +-8.359495e+00 -6.600536e+00 -5.476139e+00 -4.274551e+00 -3.012120e+00 -1.925477e+00 +-1.147167e+00 -6.596213e-01 +>ZYXI ROT=ZROT //14 +-3.082582e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271846e+01 +-6.030588e+00 -2.960218e+00 -2.002831e+00 -1.767461e+00 -1.578031e+00 -1.252810e+00 +-8.809266e-01 -5.633942e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.340650e-03 -8.185863e-05 -1.478160e-06 3.491340e-07 -1.830420e-07 -8.443778e-05 + 1.156479e-03 -1.904086e-03 -9.486359e-04 9.986947e-04 1.438557e-03 1.172540e-03 + 7.734738e-04 4.629837e-04 +>ZYYI ROT=ZROT //14 + 3.279079e-04 -2.810395e-05 -1.624928e-07 -6.544004e-08 4.598698e-07 8.184929e-05 + 2.958868e-04 1.136406e-03 -1.637889e-03 -1.185722e-03 -2.076677e-04 2.949649e-04 + 3.957496e-04 3.203439e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.784278e-02 2.341102e-04 -3.174870e-05 -7.107359e-07 -3.976483e-09 -5.576443e-06 + 1.229746e-04 5.837255e-05 -7.736843e-04 -8.016237e-04 -5.696979e-04 -3.598518e-04 +-2.128765e-04 -1.220843e-04 +>TXI.EXP //14 +-1.275298e-03 -4.268430e-05 4.285255e-07 1.175313e-06 1.756409e-08 5.069212e-06 +-6.455911e-05 5.617231e-04 4.167427e-04 -7.398392e-05 -2.247467e-04 -2.143624e-04 +-1.582672e-04 -1.028595e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.215223e-03 3.938256e-04 1.332555e-05 5.508711e-08 -3.090544e-08 -2.770948e-06 + 4.871100e-05 1.280361e-05 -2.882029e-04 -2.749192e-04 -1.862779e-04 -1.153775e-04 +-6.776072e-05 -3.872245e-05 +>TYI.EXP //14 + 3.233591e-05 -4.609937e-05 -4.085307e-06 -1.100047e-06 -1.561677e-08 1.764279e-06 +-1.984895e-05 2.083113e-04 1.366049e-04 -4.067239e-05 -8.204254e-05 -7.254198e-05 +-5.184561e-05 -3.311226e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par20ew.edi b/examples/data/NEConductor/par20ew.edi new file mode 100644 index 00000000..7578641b --- /dev/null +++ b/examples/data/NEConductor/par20ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par20ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par20ew" +REFLAT=-30:12:47.0426 +REFLONG=139:45:16.1568 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par20ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.263090e-02 -1.633240e-04 -2.001726e-05 -3.735064e-07 2.838790e-06 5.799211e-04 +-4.649855e-03 5.272663e-03 1.104300e-02 1.003131e-02 7.363381e-03 4.771920e-03 + 2.855429e-03 1.644253e-03 +>ZXXI ROT=ZROT //14 + 1.622095e-03 -1.025674e-04 -5.832500e-06 4.155372e-07 1.074194e-06 2.282145e-05 +-1.945790e-03 -8.561434e-03 -2.559852e-03 1.529826e-03 2.897424e-03 2.768778e-03 + 2.079671e-03 1.367166e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866493e+02 1.241454e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316973e+01 + 8.365885e+00 6.590038e+00 5.461503e+00 4.261990e+00 3.003000e+00 1.919615e+00 + 1.143680e+00 6.576192e-01 +>ZXYI ROT=ZROT //14 + 3.082592e+02 1.471577e+02 7.805612e+01 4.294172e+01 2.400290e+01 1.271756e+01 + 6.036948e+00 2.970516e+00 2.004441e+00 1.764956e+00 1.574204e+00 1.249298e+00 + 8.783372e-01 5.617097e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865925e+02 -1.241463e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.316992e+01 +-8.363661e+00 -6.591500e+00 -5.468483e+00 -4.269937e+00 -3.009403e+00 -1.923956e+00 +-1.146335e+00 -6.591622e-01 +>ZYXI ROT=ZROT //14 +-3.082213e+02 -1.471552e+02 -7.805626e+01 -4.294173e+01 -2.400290e+01 -1.271750e+01 +-6.036722e+00 -2.965144e+00 -2.001013e+00 -1.764999e+00 -1.576076e+00 -1.251500e+00 +-8.801343e-01 -5.629402e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.542424e-03 -1.779330e-04 -3.139004e-06 1.109958e-07 -2.716368e-06 -5.620988e-04 + 4.067087e-03 -5.081526e-03 -9.343158e-03 -8.102805e-03 -5.808004e-03 -3.714748e-03 +-2.207697e-03 -1.267487e-03 +>ZYYI ROT=ZROT //14 + 1.977889e-04 -6.008489e-05 -4.162020e-07 1.673550e-07 -1.572310e-06 -1.100155e-04 + 2.168177e-03 7.143424e-03 1.678132e-03 -1.530887e-03 -2.449234e-03 -2.236558e-03 +-1.643338e-03 -1.067624e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.143586e-02 -8.843800e-05 -3.454121e-05 -6.595133e-07 -2.386935e-08 -8.270210e-06 + 1.477041e-04 -3.000544e-05 -6.769776e-04 -6.995474e-04 -5.121591e-04 -3.289671e-04 +-1.960413e-04 -1.127576e-04 +>TXI.EXP //14 +-5.823369e-04 4.245190e-06 4.786425e-06 1.154272e-06 8.217902e-09 5.176958e-06 +-4.168661e-05 5.190808e-04 3.262916e-04 -5.761330e-05 -1.912627e-04 -1.894779e-04 +-1.428273e-04 -9.386600e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.663789e-02 -3.738992e-04 9.583279e-06 1.837173e-06 1.370257e-08 1.599449e-05 +-2.642817e-04 5.149089e-05 1.250793e-03 1.223007e-03 8.660270e-04 5.485688e-04 + 3.251721e-04 1.866037e-04 +>TYI.EXP //14 + 1.363907e-03 5.503259e-05 6.781080e-08 -1.636014e-06 6.036787e-09 -7.660968e-06 + 6.955337e-05 -9.471787e-04 -5.603686e-04 1.464848e-04 3.498877e-04 3.280869e-04 + 2.417076e-04 1.571584e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par21.edi b/examples/data/NEConductor/par21.edi new file mode 100644 index 00000000..09e29705 --- /dev/null +++ b/examples/data/NEConductor/par21.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par21" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par21" +REFLAT=-30:13:50.556 +REFLONG=139:42:45.7234 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par21" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-8.108671e-03 9.177875e-05 9.451384e-06 1.670804e-07 2.215304e-07 1.202909e-04 +-1.244878e-03 2.260047e-03 4.876719e-04 -1.779404e-03 -2.170954e-03 -1.714178e-03 +-1.120057e-03 -6.683969e-04 +>ZXXI ROT=ZROT //14 +-1.600786e-03 2.361716e-05 1.867156e-06 -2.494576e-07 -9.236993e-07 -8.255885e-05 +-5.339184e-04 -7.612037e-04 2.192545e-03 1.358687e-03 1.038098e-04 -5.082030e-04 +-6.013254e-04 -4.723986e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865666e+02 1.241401e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.317063e+01 + 8.360349e+00 6.597786e+00 5.476651e+00 4.277117e+00 3.014734e+00 1.927435e+00 + 1.148423e+00 6.603653e-01 +>ZXYI ROT=ZROT //14 + 3.082048e+02 1.471555e+02 7.805625e+01 4.294175e+01 2.400291e+01 1.271827e+01 + 6.032196e+00 2.959810e+00 2.000140e+00 1.766309e+00 1.578199e+00 1.253513e+00 + 8.816496e-01 5.639382e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866354e+02 -1.241504e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317060e+01 +-8.360693e+00 -6.598158e+00 -5.473993e+00 -4.273197e+00 -3.011295e+00 -1.925004e+00 +-1.146905e+00 -6.594758e-01 +>ZYXI ROT=ZROT //14 +-3.082474e+02 -1.471573e+02 -7.805623e+01 -4.294172e+01 -2.400291e+01 -1.271825e+01 +-6.032070e+00 -2.961686e+00 -2.002415e+00 -1.766813e+00 -1.577482e+00 -1.252426e+00 +-8.806871e-01 -5.632542e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.870681e-03 -7.838976e-05 -1.343505e-06 3.210877e-07 -4.442299e-07 -1.273815e-04 + 1.385563e-03 -2.255687e-03 -1.187298e-03 9.211398e-04 1.436406e-03 1.193358e-03 + 7.933343e-04 4.763299e-04 +>ZYYI ROT=ZROT //14 + 2.984117e-04 -2.631798e-05 -1.824932e-07 -6.265584e-08 6.051951e-07 8.724634e-05 + 4.835666e-04 1.307316e-03 -1.760295e-03 -1.306131e-03 -2.733313e-04 2.724886e-04 + 3.943905e-04 3.251509e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.671524e-02 1.890547e-04 -3.135708e-05 -8.440670e-07 -1.468076e-08 -7.298939e-06 + 1.376148e-04 2.320110e-05 -7.755801e-04 -7.709730e-04 -5.412955e-04 -3.406327e-04 +-2.012573e-04 -1.153736e-04 +>TXI.EXP //14 +-1.133970e-03 -3.600459e-05 4.427910e-07 1.267928e-06 1.239798e-08 4.743834e-06 +-5.551568e-05 5.722838e-04 3.797319e-04 -8.861868e-05 -2.210483e-04 -2.058266e-04 +-1.506842e-04 -9.756965e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.180330e-03 3.941489e-04 1.332867e-05 5.184213e-08 -3.759710e-08 -4.287995e-06 + 7.098752e-05 4.937071e-06 -3.895189e-04 -3.669462e-04 -2.490786e-04 -1.545537e-04 +-9.084533e-05 -5.193859e-05 +>TYI.EXP //14 + 2.583657e-05 -4.610683e-05 -4.082851e-06 -1.097236e-06 -1.907104e-08 2.178051e-06 +-2.410148e-05 2.856885e-04 1.756108e-04 -5.617205e-05 -1.098023e-04 -9.702723e-05 +-6.941685e-05 -4.438692e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par210.edi b/examples/data/NEConductor/par210.edi new file mode 100644 index 00000000..0957a3f5 --- /dev/null +++ b/examples/data/NEConductor/par210.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par210" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par210" +REFLAT=-30:11:24.399 +REFLONG=139:42:47.6257 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par210" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.005559e-03 2.326603e-04 3.385533e-06 1.484899e-07 2.672639e-06 5.343285e-04 +-4.284005e-03 4.763732e-03 1.059417e-02 9.939616e-03 7.398637e-03 4.829205e-03 + 2.900233e-03 1.672631e-03 +>ZXXI ROT=ZROT //14 +-1.276666e-03 7.060856e-05 8.624708e-07 -1.299880e-07 1.772907e-06 4.502525e-05 +-1.795117e-03 -8.153646e-03 -2.792855e-03 1.299391e-03 2.793678e-03 2.744492e-03 + 2.087364e-03 1.381172e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865656e+02 1.241403e+02 7.346935e+01 4.197591e+01 2.350537e+01 1.316986e+01 + 8.364751e+00 6.591206e+00 5.465016e+00 4.265876e+00 3.006098e+00 1.921699e+00 + 1.144949e+00 6.583546e-01 +>ZXYI ROT=ZROT //14 + 3.082087e+02 1.471556e+02 7.805624e+01 4.294175e+01 2.400290e+01 1.271765e+01 + 6.036350e+00 2.967967e+00 2.002945e+00 1.765063e+00 1.575156e+00 1.250380e+00 + 8.792077e-01 5.623010e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865647e+02 -1.241464e+02 -7.346937e+01 -4.197591e+01 -2.350537e+01 -1.316999e+01 +-8.363995e+00 -6.592279e+00 -5.466883e+00 -4.267441e+00 -3.007240e+00 -1.922449e+00 +-1.145402e+00 -6.586174e-01 +>ZYXI ROT=ZROT //14 +-3.081996e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400290e+01 -1.271771e+01 +-6.035782e+00 -2.966575e+00 -2.002679e+00 -1.765374e+00 -1.575618e+00 -1.250810e+00 +-8.795329e-01 -5.625169e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.380058e-03 -9.482013e-05 -3.690579e-07 2.287464e-07 -2.345516e-06 -5.065034e-04 + 4.384856e-03 -4.658550e-03 -1.074746e-02 -1.011643e-02 -7.516775e-03 -4.894169e-03 +-2.934320e-03 -1.690948e-03 +>ZYYI ROT=ZROT //14 + 1.685505e-04 -2.672125e-05 -9.771467e-08 -7.984954e-08 -4.879564e-07 2.165493e-05 + 1.551599e-03 8.359879e-03 2.919200e-03 -1.305261e-03 -2.847807e-03 -2.793319e-03 +-2.119062e-03 -1.399500e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.163992e-03 -5.108232e-04 -3.652102e-05 5.315837e-07 8.686001e-08 1.165015e-05 +-2.066198e-04 2.603080e-05 1.010036e-03 9.929268e-04 7.018909e-04 4.441930e-04 + 2.632476e-04 1.509950e-04 +>TXI.EXP //14 + 1.595304e-04 6.299084e-05 1.235713e-05 3.669751e-07 5.969881e-09 -6.658513e-06 + 6.199791e-05 -7.608187e-04 -4.639887e-04 1.173317e-04 2.838884e-04 2.659698e-04 + 1.957762e-04 1.271826e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-4.937438e-03 3.972738e-04 1.335362e-05 3.336941e-08 -7.662690e-08 -1.257654e-05 + 2.202452e-04 -2.970765e-05 -1.064660e-03 -1.062214e-03 -7.572838e-04 -4.809454e-04 +-2.853989e-04 -1.638091e-04 +>TYI.EXP //14 +-1.746403e-05 -4.628887e-05 -4.068694e-06 -1.080918e-06 -2.528422e-08 7.179176e-06 +-6.626889e-05 8.044103e-04 4.984921e-04 -1.152255e-04 -3.003089e-04 -2.852207e-04 +-2.111704e-04 -1.375187e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par21ew.edi b/examples/data/NEConductor/par21ew.edi new file mode 100644 index 00000000..d0ea2bcb --- /dev/null +++ b/examples/data/NEConductor/par21ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par21ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par21ew" +REFLAT=-30:12:48.2023 +REFLONG=139:45:34.909 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par21ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.517261e-02 -2.044187e-04 -2.418781e-05 -4.552987e-07 2.321055e-06 4.683975e-04 +-4.127899e-03 4.333441e-03 1.013327e-02 9.399561e-03 6.967041e-03 4.544772e-03 + 2.729978e-03 1.574790e-03 +>ZXXI ROT=ZROT //14 + 1.836033e-03 -1.259798e-04 -7.086084e-06 5.266893e-07 4.535924e-07 -4.326849e-05 +-1.338680e-03 -7.955486e-03 -2.661566e-03 1.276699e-03 2.652902e-03 2.589437e-03 + 1.966211e-03 1.300536e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866645e+02 1.241470e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317007e+01 + 8.364218e+00 6.593734e+00 5.465051e+00 4.264481e+00 3.004623e+00 1.920588e+00 + 1.144235e+00 6.579319e-01 +>ZXYI ROT=ZROT //14 + 3.082697e+02 1.471583e+02 7.805610e+01 4.294172e+01 2.400291e+01 1.271802e+01 + 6.034348e+00 2.968267e+00 2.004856e+00 1.765906e+00 1.575129e+00 1.250003e+00 + 8.788038e-01 5.619941e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865910e+02 -1.241462e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317026e+01 +-8.361806e+00 -6.594980e+00 -5.473297e+00 -4.274185e+00 -3.012535e+00 -1.925987e+00 +-1.147549e+00 -6.598607e-01 +>ZYXI ROT=ZROT //14 +-3.082215e+02 -1.471552e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271794e+01 +-6.034324e+00 -2.961933e+00 -2.000411e+00 -1.765768e+00 -1.577339e+00 -1.252689e+00 +-8.810229e-01 -5.635228e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.410963e-03 -1.844856e-04 -3.376827e-06 1.074532e-07 -2.100137e-06 -4.471831e-04 + 3.399081e-03 -4.090482e-03 -7.827472e-03 -6.751168e-03 -4.815562e-03 -3.074942e-03 +-1.826753e-03 -1.048711e-03 +>ZYYI ROT=ZROT //14 + 2.086362e-04 -6.280291e-05 -4.099765e-07 1.805937e-07 -8.802189e-07 -4.465948e-05 + 1.591310e-03 6.062666e-03 1.438036e-03 -1.298373e-03 -2.048145e-03 -1.858837e-03 +-1.362400e-03 -8.841977e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.151604e-02 -8.986788e-05 -3.474741e-05 -6.616881e-07 -1.620743e-08 -6.032953e-06 + 1.256131e-04 -1.761424e-06 -6.253371e-04 -6.683053e-04 -4.937954e-04 -3.179984e-04 +-1.896572e-04 -1.091165e-04 +>TXI.EXP //14 +-5.876571e-04 4.386151e-06 4.827511e-06 1.161142e-06 1.462200e-08 5.211980e-06 +-4.793825e-05 4.754438e-04 3.272436e-04 -4.288141e-05 -1.792962e-04 -1.812188e-04 +-1.374848e-04 -9.059793e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.768463e-02 -4.358235e-04 8.510114e-06 1.676998e-06 8.701082e-09 1.312218e-05 +-2.437288e-04 9.647810e-07 1.252227e-03 1.264028e-03 9.032332e-04 5.736698e-04 + 3.403404e-04 1.953635e-04 +>TYI.EXP //14 + 1.537505e-03 6.346619e-05 1.737478e-07 -1.537898e-06 -8.829446e-09 -8.704060e-06 + 8.727038e-05 -9.394531e-04 -6.093437e-04 1.286244e-04 3.552564e-04 3.394071e-04 + 2.516619e-04 1.640804e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par22.edi b/examples/data/NEConductor/par22.edi new file mode 100644 index 00000000..3ebc1b09 --- /dev/null +++ b/examples/data/NEConductor/par22.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par22" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par22" +REFLAT=-30:13:34.3164 +REFLONG=139:42:45.9349 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par22" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.700553e-03 1.075204e-04 8.883359e-06 1.706939e-07 7.067774e-07 1.822797e-04 +-1.620133e-03 2.673931e-03 1.336741e-03 -9.431439e-04 -1.534086e-03 -1.295002e-03 +-8.675618e-04 -5.226236e-04 +>ZXXI ROT=ZROT //14 +-1.652551e-03 2.843577e-05 1.890686e-06 -2.441943e-07 -1.018523e-06 -8.342702e-05 +-7.480569e-04 -1.382840e-03 1.947553e-03 1.443892e-03 3.309651e-04 -2.758036e-04 +-4.218494e-04 -3.528312e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865658e+02 1.241401e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.317036e+01 + 8.361915e+00 6.595135e+00 5.472754e+00 4.273590e+00 3.012105e+00 1.925720e+00 + 1.147395e+00 6.597731e-01 +>ZXYI ROT=ZROT //14 + 3.082068e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400290e+01 1.271800e+01 + 6.033924e+00 2.962484e+00 2.000750e+00 1.765742e+00 1.577175e+00 1.252527e+00 + 8.809046e-01 5.634471e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866235e+02 -1.241492e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317037e+01 +-8.361874e+00 -6.595583e+00 -5.471742e+00 -4.271791e+00 -3.010446e+00 -1.924522e+00 +-1.146639e+00 -6.593284e-01 +>ZYXI ROT=ZROT //14 +-3.082382e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271797e+01 +-6.033796e+00 -2.963148e+00 -2.001942e+00 -1.766116e+00 -1.576903e+00 -1.252027e+00 +-8.804409e-01 -5.631112e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.462194e-03 -7.572923e-05 -1.228319e-06 2.952548e-07 -8.317226e-07 -1.819042e-04 + 1.662645e-03 -2.654076e-03 -1.615443e-03 6.176613e-04 1.250194e-03 1.089050e-03 + 7.366179e-04 4.451687e-04 +>ZYYI ROT=ZROT //14 + 2.676747e-04 -2.485892e-05 -1.904027e-07 -5.848083e-08 6.905142e-07 8.486282e-05 + 7.145398e-04 1.606237e-03 -1.784079e-03 -1.424030e-03 -3.911517e-04 1.871689e-04 + 3.414186e-04 2.945364e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.548109e-02 1.328675e-04 -3.141170e-05 -9.084577e-07 -2.502342e-08 -8.472369e-06 + 1.412876e-04 -8.608084e-06 -7.282637e-04 -6.973215e-04 -4.837809e-04 -3.032253e-04 +-1.789022e-04 -1.025111e-04 +>TXI.EXP //14 +-9.928299e-04 -2.769196e-05 9.313311e-07 1.306010e-06 5.461732e-09 3.875420e-06 +-4.246857e-05 5.439546e-04 3.250593e-04 -9.522426e-05 -2.042467e-04 -1.858859e-04 +-1.349314e-04 -8.703472e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.147942e-03 3.944623e-04 1.333183e-05 4.891389e-08 -4.601148e-08 -6.331982e-06 + 9.956105e-05 -8.841704e-06 -5.110079e-04 -4.756425e-04 -3.231271e-04 -2.007593e-04 +-1.180804e-04 -6.753324e-05 +>TYI.EXP //14 + 1.980092e-05 -4.611480e-05 -4.080578e-06 -1.094704e-06 -2.502163e-08 2.540753e-06 +-2.758099e-05 3.790815e-04 2.195062e-04 -7.543504e-05 -1.428170e-04 -1.259779e-04 +-9.016407e-05 -5.769508e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par22ew.edi b/examples/data/NEConductor/par22ew.edi new file mode 100644 index 00000000..15b80df2 --- /dev/null +++ b/examples/data/NEConductor/par22ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par22ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par22ew" +REFLAT=-30:12:48.3971 +REFLONG=139:45:55.5374 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par22ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.785027e-02 -2.454326e-04 -2.880039e-05 -5.441153e-07 1.788228e-06 3.576615e-04 +-3.541086e-03 3.404247e-03 9.066933e-03 8.579862e-03 6.412619e-03 4.207133e-03 + 2.535805e-03 1.465090e-03 +>ZXXI ROT=ZROT //14 + 1.963049e-03 -1.515838e-04 -8.520527e-06 6.542215e-07 8.469871e-09 -8.772463e-05 +-8.003531e-04 -7.198812e-03 -2.665843e-03 1.033547e-03 2.369663e-03 2.358425e-03 + 1.808338e-03 1.202679e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866825e+02 1.241487e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.317041e+01 + 8.362494e+00 6.597121e+00 5.468480e+00 4.266953e+00 3.006263e+00 1.921582e+00 + 1.144807e+00 6.582547e-01 +>ZXYI ROT=ZROT //14 + 3.082815e+02 1.471590e+02 7.805608e+01 4.294172e+01 2.400291e+01 1.271835e+01 + 6.032134e+00 2.965970e+00 2.005147e+00 1.766775e+00 1.576021e+00 1.250702e+00 + 8.792743e-01 5.622839e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865894e+02 -1.241462e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317058e+01 +-8.360090e+00 -6.597991e+00 -5.477433e+00 -4.277795e+00 -3.015183e+00 -1.927699e+00 +-1.148571e+00 -6.604481e-01 +>ZYXI ROT=ZROT //14 +-3.082213e+02 -1.471552e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271826e+01 +-6.032338e+00 -2.959115e+00 -1.999928e+00 -1.766447e+00 -1.578423e+00 -1.253700e+00 +-8.817747e-01 -5.640143e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.260302e-03 -1.898606e-04 -3.582419e-06 1.047231e-07 -1.545530e-06 -3.385762e-04 + 2.743688e-03 -3.176395e-03 -6.344735e-03 -5.405399e-03 -3.818608e-03 -2.428665e-03 +-1.440759e-03 -8.267232e-04 +>ZYYI ROT=ZROT //14 + 2.179161e-04 -6.485565e-05 -3.967045e-07 1.884541e-07 -3.996828e-07 3.436293e-06 + 1.091011e-03 4.985474e-03 1.167168e-03 -1.086921e-03 -1.656510e-03 -1.483151e-03 +-1.080393e-03 -6.991297e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.161070e-02 -9.160558e-05 -3.499642e-05 -6.642747e-07 -6.129019e-09 -3.979289e-06 + 1.017578e-04 2.443440e-05 -5.625851e-04 -6.239199e-04 -4.651877e-04 -3.002520e-04 +-1.791825e-04 -1.031119e-04 +>TXI.EXP //14 +-5.938360e-04 4.557175e-06 4.877509e-06 1.169217e-06 1.988532e-08 4.809452e-06 +-5.097567e-05 4.225426e-04 3.208363e-04 -2.823735e-05 -1.641631e-04 -1.693699e-04 +-1.292929e-04 -8.541047e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.860462e-02 -4.853435e-04 7.237965e-06 1.426777e-06 -2.329009e-09 9.720754e-06 +-2.101074e-04 -5.289241e-05 1.196099e-03 1.252613e-03 9.039360e-04 5.756767e-04 + 3.418083e-04 1.962580e-04 +>TYI.EXP //14 + 1.714143e-03 7.008130e-05 1.560108e-07 -1.385660e-06 -2.065744e-08 -8.845476e-06 + 9.901149e-05 -8.855570e-04 -6.360535e-04 1.026319e-04 3.452131e-04 3.367242e-04 + 2.513830e-04 1.643668e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par23.edi b/examples/data/NEConductor/par23.edi new file mode 100644 index 00000000..adf35aa7 --- /dev/null +++ b/examples/data/NEConductor/par23.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par23" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par23" +REFLAT=-30:13:18.0768 +REFLONG=139:42:46.1464 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par23" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.244461e-03 1.239741e-04 8.294783e-06 1.718499e-07 1.331614e-06 2.610797e-04 +-2.103356e-03 3.197201e-03 2.571356e-03 3.342612e-04 -5.374513e-04 -6.299704e-04 +-4.640734e-04 -2.889450e-04 +>ZXXI ROT=ZROT //14 +-1.675031e-03 3.334792e-05 1.851450e-06 -2.350627e-07 -1.062130e-06 -7.140377e-05 +-1.026939e-03 -2.283008e-03 1.522611e-03 1.529970e-03 6.603113e-04 7.924016e-05 +-1.412141e-04 -1.635939e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865654e+02 1.241402e+02 7.346935e+01 4.197590e+01 2.350537e+01 1.317008e+01 + 8.363546e+00 6.592261e+00 5.468422e+00 4.269614e+00 3.009120e+00 1.923766e+00 + 1.146220e+00 6.590955e-01 +>ZXYI ROT=ZROT //14 + 3.082079e+02 1.471555e+02 7.805625e+01 4.294175e+01 2.400290e+01 1.271766e+01 + 6.035859e+00 2.965417e+00 2.001493e+00 1.765143e+00 1.576037e+00 1.251415e+00 + 8.800589e-01 5.628876e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866135e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.317015e+01 +-8.362968e+00 -6.592980e+00 -5.469499e+00 -4.270391e+00 -3.009603e+00 -1.924045e+00 +-1.146376e+00 -6.591825e-01 +>ZYXI ROT=ZROT //14 +-3.082302e+02 -1.471560e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271764e+01 +-6.035634e+00 -2.964540e+00 -2.001458e+00 -1.765415e+00 -1.576324e+00 -1.251629e+00 +-8.801962e-01 -5.629693e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.113553e-03 -7.396692e-05 -1.127790e-06 2.724425e-07 -1.321511e-06 -2.474734e-04 + 2.003444e-03 -3.108913e-03 -2.316196e-03 -1.630237e-05 7.916344e-04 7.982902e-04 + 5.653669e-04 3.473303e-04 +>ZYYI ROT=ZROT //14 + 2.373134e-04 -2.374026e-05 -1.895646e-07 -5.351518e-08 6.560034e-07 7.156373e-05 + 9.893989e-04 2.096085e-03 -1.659352e-03 -1.533658e-03 -5.830791e-04 9.922773e-06 + 2.120545e-04 2.111801e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.415725e-02 6.697036e-05 -3.193933e-05 -8.966170e-07 -3.255314e-08 -8.529393e-06 + 1.286071e-04 -3.038238e-05 -6.178106e-04 -5.713260e-04 -3.915500e-04 -2.443132e-04 +-1.438967e-04 -8.240918e-05 +>TXI.EXP //14 +-8.518411e-04 -1.804587e-05 1.855084e-06 1.293629e-06 -1.356375e-08 2.592564e-06 +-2.736259e-05 4.656320e-04 2.518415e-04 -9.008936e-05 -1.708933e-04 -1.520711e-04 +-1.094031e-04 -7.027466e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.117698e-03 3.947703e-04 1.333497e-05 4.628577e-08 -5.607476e-08 -8.853120e-06 + 1.335948e-04 -2.829582e-05 -6.485865e-04 -5.979605e-04 -4.066013e-04 -2.529269e-04 +-1.488530e-04 -8.515893e-05 +>TYI.EXP //14 + 1.418126e-05 -4.612402e-05 -4.078486e-06 -1.092430e-06 -3.428448e-08 2.810769e-06 +-2.990657e-05 4.852413e-04 2.671732e-04 -9.750647e-05 -1.800245e-04 -1.586093e-04 +-1.135739e-04 -7.272371e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par23ew.edi b/examples/data/NEConductor/par23ew.edi new file mode 100644 index 00000000..4fa3b48e --- /dev/null +++ b/examples/data/NEConductor/par23ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par23ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par23ew" +REFLAT=-30:12:48.5821 +REFLONG=139:46:15.2282 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par23ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.073020e-02 -2.865694e-04 -3.399198e-05 -6.427936e-07 1.282271e-06 2.579483e-04 +-2.946930e-03 2.554577e-03 7.959160e-03 7.682174e-03 5.783840e-03 3.814080e-03 + 2.306047e-03 1.334273e-03 +>ZXXI ROT=ZROT //14 + 1.987342e-03 -1.800892e-04 -1.019178e-05 8.025572e-07 -2.480812e-07 -1.099870e-04 +-3.675249e-04 -6.375763e-03 -2.598588e-03 8.135639e-04 2.078144e-03 2.106506e-03 + 1.629711e-03 1.089317e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867043e+02 1.241505e+02 7.346934e+01 4.197588e+01 2.350537e+01 1.317073e+01 + 8.360829e+00 6.600069e+00 5.471644e+00 4.269285e+00 3.007834e+00 1.922543e+00 + 1.145363e+00 6.585695e-01 +>ZXYI ROT=ZROT //14 + 3.082947e+02 1.471597e+02 7.805605e+01 4.294172e+01 2.400292e+01 1.271857e+01 + 6.030377e+00 2.963735e+00 2.005318e+00 1.767536e+00 1.576840e+00 1.251360e+00 + 8.797240e-01 5.625634e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865880e+02 -1.241461e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317086e+01 +-8.358589e+00 -6.600471e+00 -5.480789e+00 -4.280678e+00 -3.017282e+00 -1.929049e+00 +-1.149375e+00 -6.609096e-01 +>ZYXI ROT=ZROT //14 +-3.082202e+02 -1.471551e+02 -7.805626e+01 -4.294174e+01 -2.400291e+01 -1.271847e+01 +-6.030792e+00 -2.956773e+00 -1.999583e+00 -1.767021e+00 -1.579300e+00 -1.254507e+00 +-8.823707e-01 -5.644022e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.093812e-03 -1.942214e-04 -3.745297e-06 9.908728e-08 -1.090403e-06 -2.451381e-04 + 2.152666e-03 -2.398249e-03 -5.018425e-03 -4.189810e-03 -2.913819e-03 -1.840387e-03 +-1.088818e-03 -6.241674e-04 +>ZYYI ROT=ZROT //14 + 2.238139e-04 -6.614433e-05 -3.866645e-07 1.932362e-07 -1.048529e-07 3.273597e-05 + 6.967965e-04 4.003320e-03 9.029844e-04 -9.066691e-04 -1.306858e-03 -1.144119e-03 +-8.245860e-04 -5.307820e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.172054e-02 -9.366312e-05 -3.529388e-05 -6.672789e-07 4.892043e-09 -2.321435e-06 + 7.887749e-05 4.619990e-05 -4.959147e-04 -5.727129e-04 -4.308610e-04 -2.786391e-04 +-1.663570e-04 -9.574532e-05 +>TXI.EXP //14 +-6.009268e-04 4.759952e-06 4.937719e-06 1.178553e-06 2.169397e-08 4.115665e-06 +-5.082119e-05 3.663635e-04 3.089493e-04 -1.475349e-05 -1.477207e-04 -1.556517e-04 +-1.195287e-04 -7.913972e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.937602e-02 -5.217321e-04 5.695408e-06 1.106666e-06 -1.453149e-08 6.510072e-06 +-1.713093e-04 -1.022014e-04 1.104314e-03 1.205276e-03 8.788035e-04 5.611410e-04 + 3.334184e-04 1.914838e-04 +>TYI.EXP //14 + 1.894088e-03 7.459658e-05 4.373397e-08 -1.175175e-06 -2.500066e-08 -8.223159e-06 + 1.037683e-04 -8.032756e-04 -6.441246e-04 7.334542e-05 3.252980e-04 3.244354e-04 + 2.439006e-04 1.599273e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par24.edi b/examples/data/NEConductor/par24.edi new file mode 100644 index 00000000..bef44159 --- /dev/null +++ b/examples/data/NEConductor/par24.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par24" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par24" +REFLAT=-30:13:01.8371 +REFLONG=139:42:46.3579 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par24" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-6.742741e-03 1.408327e-04 7.682784e-06 1.693170e-07 1.966727e-06 3.526909e-04 +-2.683548e-03 3.821702e-03 4.186993e-03 2.057080e-03 8.257880e-04 2.867182e-04 + 9.430442e-05 3.498817e-05 +>ZXXI ROT=ZROT //14 +-1.671427e-03 3.837184e-05 1.759544e-06 -2.218766e-07 -5.979331e-07 -4.320414e-05 +-1.367571e-03 -3.456624e-03 9.110767e-04 1.611260e-03 1.090570e-03 5.582126e-04 + 2.424861e-04 9.690221e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865652e+02 1.241402e+02 7.346935e+01 4.197590e+01 2.350537e+01 1.316984e+01 + 8.365106e+00 6.589447e+00 5.464077e+00 4.265574e+00 3.006069e+00 1.921761e+00 + 1.145013e+00 6.583987e-01 +>ZXYI ROT=ZROT //14 + 3.082084e+02 1.471555e+02 7.805625e+01 4.294175e+01 2.400290e+01 1.271730e+01 + 6.037790e+00 2.968340e+00 2.002297e+00 1.764572e+00 1.574895e+00 1.250286e+00 + 8.791951e-01 5.623142e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866049e+02 -1.241473e+02 -7.346920e+01 -4.197589e+01 -2.350537e+01 -1.316997e+01 +-8.363908e+00 -6.590600e+00 -5.467425e+00 -4.269071e+00 -3.008801e+00 -1.923585e+00 +-1.146121e+00 -6.590405e-01 +>ZYXI ROT=ZROT //14 +-3.082232e+02 -1.471555e+02 -7.805625e+01 -4.294174e+01 -2.400290e+01 -1.271731e+01 +-6.037374e+00 -2.965790e+00 -2.001038e+00 -1.764777e+00 -1.575787e+00 -1.251255e+00 +-8.799634e-01 -5.628330e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.824289e-03 -7.316648e-05 -1.036265e-06 2.532457e-07 -1.754614e-06 -3.213370e-04 + 2.418504e-03 -3.620942e-03 -3.354456e-03 -1.066900e-03 -1.374019e-05 2.686782e-04 + 2.469296e-04 1.636884e-04 +>ZYYI ROT=ZROT //14 + 2.086928e-04 -2.296397e-05 -1.823564e-07 -4.860860e-08 3.112458e-07 4.603572e-05 + 1.300012e-03 2.828386e-03 -1.341821e-03 -1.627346e-03 -8.659154e-04 -2.831933e-04 +-1.460126e-05 6.030614e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.275672e-02 -6.991350e-06 -3.287848e-05 -8.098359e-07 -1.614542e-08 -7.002123e-06 + 9.612113e-05 -3.653560e-05 -4.369633e-04 -3.890130e-04 -2.625206e-04 -1.627548e-04 +-9.560459e-05 -5.471155e-05 +>TXI.EXP //14 +-7.108042e-04 -7.357023e-06 3.143264e-06 1.236849e-06 -4.642061e-09 1.160541e-06 +-1.270346e-05 3.317012e-04 1.610275e-04 -7.079895e-05 -1.192619e-04 -1.033325e-04 +-7.348697e-05 -4.694026e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.089254e-03 3.950780e-04 1.333802e-05 4.395057e-08 -6.738743e-08 -1.163340e-05 + 1.705457e-04 -5.123833e-05 -7.930645e-04 -7.270885e-04 -4.953197e-04 -3.085638e-04 +-1.817204e-04 -1.039954e-04 +>TYI.EXP //14 + 8.929343e-06 -4.613522e-05 -4.076577e-06 -1.090393e-06 -4.615826e-08 3.014710e-06 +-3.125725e-05 5.969555e-04 3.167234e-04 -1.202205e-04 -2.190588e-04 -1.931408e-04 +-1.384623e-04 -8.874211e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par24ew.edi b/examples/data/NEConductor/par24ew.edi new file mode 100644 index 00000000..133e0e85 --- /dev/null +++ b/examples/data/NEConductor/par24ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par24ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par24ew" +REFLAT=-30:12:48.7664 +REFLONG=139:46:34.9191 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par24ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.391021e-02 -3.283495e-04 -3.995948e-05 -7.549565e-07 8.507087e-07 1.752738e-04 +-2.388270e-03 1.821898e-03 6.890705e-03 6.787409e-03 5.143951e-03 3.407936e-03 + 2.066423e-03 1.197241e-03 +>ZXXI ROT=ZROT //14 + 1.889091e-03 -2.126238e-04 -1.218270e-05 9.777873e-07 -3.563049e-07 -1.138904e-04 +-4.866405e-05 -5.551635e-03 -2.484516e-03 6.229772e-04 1.799293e-03 1.856213e-03 + 1.448174e-03 9.725018e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867312e+02 1.241523e+02 7.346931e+01 4.197587e+01 2.350537e+01 1.317099e+01 + 8.359300e+00 6.602533e+00 5.474473e+00 4.271409e+00 3.009283e+00 1.923438e+00 + 1.145883e+00 6.588649e-01 +>ZXYI ROT=ZROT //14 + 3.083097e+02 1.471603e+02 7.805602e+01 4.294172e+01 2.400291e+01 1.271869e+01 + 6.029062e+00 2.961637e+00 2.005388e+00 1.768181e+00 1.577568e+00 1.251958e+00 + 8.801382e-01 5.628230e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865868e+02 -1.241461e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317109e+01 +-8.357328e+00 -6.602448e+00 -5.483407e+00 -4.282874e+00 -3.018863e+00 -1.930060e+00 +-1.149974e+00 -6.612531e-01 +>ZYXI ROT=ZROT //14 +-3.082182e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400292e+01 -1.271859e+01 +-6.029645e+00 -2.954898e+00 -1.999366e+00 -1.767495e+00 -1.579982e+00 -1.255122e+00 +-8.828200e-01 -5.646929e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.915805e-03 -1.977037e-04 -3.862843e-06 8.664026e-08 -7.418460e-07 -1.703899e-04 + 1.650966e-03 -1.772667e-03 -3.901228e-03 -3.160643e-03 -2.145960e-03 -1.340341e-03 +-7.893890e-04 -4.517643e-04 +>ZYYI ROT=ZROT //14 + 2.253259e-04 -6.659411e-05 -3.902624e-07 1.994152e-07 5.305901e-08 4.639848e-05 + 4.090870e-04 3.159553e-03 6.667975e-04 -7.596673e-04 -1.012954e-03 -8.573448e-04 +-6.075733e-04 -3.877402e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.184662e-02 -9.605857e-05 -3.564721e-05 -6.707065e-07 1.449329e-08 -1.125111e-06 + 5.867216e-05 6.250834e-05 -4.303960e-04 -5.194723e-04 -3.943421e-04 -2.554534e-04 +-1.525572e-04 -8.781062e-05 +>TXI.EXP //14 +-6.090092e-04 4.997144e-06 5.009889e-06 1.189233e-06 1.980120e-08 3.299293e-06 +-4.806914e-05 3.112607e-04 2.933615e-04 -2.992749e-06 -1.312969e-04 -1.413696e-04 +-1.091837e-04 -7.244176e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.997004e-02 -5.448308e-04 3.799161e-06 7.478822e-07 -2.256889e-08 3.878651e-06 +-1.331070e-04 -1.422948e-04 9.944573e-04 1.136062e-03 8.371997e-04 5.358974e-04 + 3.186125e-04 1.830128e-04 +>TYI.EXP //14 + 2.077330e-03 7.675153e-05 -1.154444e-07 -9.066117e-07 -2.212617e-08 -7.114762e-06 + 1.021487e-04 -7.072250e-04 -6.375762e-04 4.418419e-05 2.999999e-04 3.062901e-04 + 2.318633e-04 1.524530e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par25ew.edi b/examples/data/NEConductor/par25ew.edi new file mode 100644 index 00000000..cd64e052 --- /dev/null +++ b/examples/data/NEConductor/par25ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par25ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par25ew" +REFLAT=-30:12:48.9411 +REFLONG=139:46:53.6723 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par25ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.755429e-02 -3.728660e-04 -4.711799e-05 -8.879302e-07 4.936203e-07 1.115679e-04 +-1.891140e-03 1.218345e-03 5.909028e-03 5.946207e-03 4.533804e-03 3.016599e-03 + 1.834072e-03 1.063977e-03 +>ZXXI ROT=ZROT //14 + 1.644235e-03 -2.514971e-04 -1.467907e-05 1.190484e-06 -3.684111e-07 -1.054083e-04 + 1.661866e-04 -4.770054e-03 -2.343633e-03 4.629478e-04 1.545074e-03 1.621566e-03 + 1.275235e-03 8.601487e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.867651e+02 1.241539e+02 7.346928e+01 4.197588e+01 2.350537e+01 1.317121e+01 + 8.357954e+00 6.604531e+00 5.476945e+00 4.273296e+00 3.010586e+00 1.924249e+00 + 1.146356e+00 6.591343e-01 +>ZXYI ROT=ZROT //14 + 3.083268e+02 1.471608e+02 7.805600e+01 4.294172e+01 2.400292e+01 1.271875e+01 + 6.028134e+00 2.959720e+00 2.005378e+00 1.768717e+00 1.578201e+00 1.252488e+00 + 8.805099e-01 5.630576e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865860e+02 -1.241461e+02 -7.346918e+01 -4.197589e+01 -2.350537e+01 -1.317128e+01 +-8.356297e+00 -6.603992e+00 -5.485390e+00 -4.284486e+00 -3.020006e+00 -1.930783e+00 +-1.150400e+00 -6.614970e-01 +>ZYXI ROT=ZROT //14 +-3.082149e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271865e+01 +-6.028823e+00 -2.953431e+00 -1.999257e+00 -1.767880e+00 -1.580498e+00 -1.255574e+00 +-8.831450e-01 -5.649015e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.733476e-03 -2.004082e-04 -3.951639e-06 6.604503e-08 -4.910665e-07 -1.139652e-04 + 1.243641e-03 -1.290153e-03 -2.998009e-03 -2.327242e-03 -1.523730e-03 -9.348660e-04 +-5.464922e-04 -3.118850e-04 +>ZYYI ROT=ZROT //14 + 2.256097e-04 -6.616594e-05 -4.089733e-07 2.110289e-07 1.256636e-07 4.919774e-05 + 2.125288e-04 2.463516e-03 4.674232e-04 -6.431625e-04 -7.759202e-04 -6.253456e-04 +-4.317687e-04 -2.717752e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.199065e-02 -9.882432e-05 -3.606722e-05 -6.745787e-07 2.099507e-08 -3.487081e-07 + 4.190925e-05 7.334715e-05 -3.691390e-04 -4.674183e-04 -3.580755e-04 -2.323023e-04 +-1.387513e-04 -7.986686e-05 +>TXI.EXP //14 +-6.182079e-04 5.273143e-06 5.096500e-06 1.201405e-06 1.545191e-08 2.499793e-06 +-4.355749e-05 2.599993e-04 2.755704e-04 6.861500e-06 -1.157240e-04 -1.274026e-04 +-9.894184e-05 -6.577407e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.034841e-02 -5.552993e-04 1.464883e-06 3.927381e-07 -2.493384e-08 1.941794e-06 +-9.897501e-05 -1.713262e-04 8.790629e-04 1.055620e-03 7.864354e-04 5.045577e-04 + 3.001250e-04 1.724147e-04 +>TYI.EXP //14 + 2.263451e-03 7.633807e-05 -2.558613e-07 -5.874863e-07 -1.472507e-08 -5.802706e-06 + 9.566914e-05 -6.080350e-04 -6.202175e-04 1.721376e-05 2.725559e-04 2.851362e-04 + 2.173306e-04 1.432738e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par26.edi b/examples/data/NEConductor/par26.edi new file mode 100644 index 00000000..9d87fbf4 --- /dev/null +++ b/examples/data/NEConductor/par26.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par26" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par26" +REFLAT=-30:12:29.3578 +REFLONG=139:42:46.7807 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par26" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.615536e-03 1.744548e-04 6.359674e-06 1.650207e-07 2.644568e-06 5.308762e-04 +-3.905700e-03 5.091891e-03 7.963812e-03 6.237726e-03 4.187051e-03 2.566191e-03 + 1.488799e-03 8.454801e-04 +>ZXXI ROT=ZROT //14 +-1.599483e-03 4.879120e-05 1.478619e-06 -1.901926e-07 4.101875e-07 4.527354e-05 +-2.068898e-03 -6.193289e-03 -6.899438e-04 1.708185e-03 2.094991e-03 1.720573e-03 + 1.187988e-03 7.436773e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865653e+02 1.241402e+02 7.346934e+01 4.197591e+01 2.350537e+01 1.316950e+01 + 8.367248e+00 6.585682e+00 5.457900e+00 4.259702e+00 3.001591e+00 1.918800e+00 + 1.143224e+00 6.573648e-01 +>ZXYI ROT=ZROT //14 + 3.082088e+02 1.471556e+02 7.805624e+01 4.294175e+01 2.400289e+01 1.271681e+01 + 6.040368e+00 2.972516e+00 2.003616e+00 1.763839e+00 1.573274e+00 1.248646e+00 + 8.779280e-01 5.614684e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865903e+02 -1.241461e+02 -7.346915e+01 -4.197590e+01 -2.350537e+01 -1.316975e+01 +-8.365120e+00 -6.587658e+00 -5.464561e+00 -4.267041e+00 -3.007476e+00 -1.922789e+00 +-1.145665e+00 -6.587833e-01 +>ZYXI ROT=ZROT //14 +-3.082122e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400289e+01 -1.271690e+01 +-6.039528e+00 -2.967547e+00 -2.000731e+00 -1.764014e+00 -1.575038e+00 -1.250682e+00 +-8.795828e-01 -5.626003e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.427294e-03 -7.483829e-05 -8.637359e-07 2.206104e-07 -2.535281e-06 -4.675110e-04 + 3.412825e-03 -4.674172e-03 -6.339909e-03 -4.362778e-03 -2.643188e-03 -1.501550e-03 +-8.311468e-04 -4.615789e-04 +>ZYYI ROT=ZROT //14 + 1.614532e-04 -2.250911e-05 -1.565830e-07 -4.379963e-08 -2.131939e-07 -2.325977e-05 + 1.896232e-03 4.975079e-03 -9.457507e-05 -1.723324e-03 -1.673140e-03 -1.201073e-03 +-7.535130e-04 -4.420413e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.763067e-03 -1.717583e-04 -3.540046e-05 -4.493109e-07 -2.507915e-09 5.834591e-07 +-2.012940e-05 -2.133499e-06 9.765127e-05 1.108148e-04 8.316024e-05 5.408708e-05 + 3.245097e-05 1.866385e-05 +>TXI.EXP //14 +-4.272178e-04 1.602690e-05 6.420974e-06 1.018365e-06 1.138075e-09 -1.305886e-06 + 9.960792e-06 -7.245276e-05 -5.840411e-05 4.149886e-06 2.861135e-05 3.000707e-05 + 2.312675e-05 1.535373e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.036398e-03 3.957150e-04 1.334384e-05 3.997233e-08 -7.607129e-08 -1.628126e-05 + 2.349119e-04 -8.879384e-05 -1.043106e-03 -9.610186e-04 -6.603522e-04 -4.132468e-04 +-2.438430e-04 -1.396594e-04 +>TYI.EXP //14 +-6.586563e-07 -4.616664e-05 -4.073304e-06 -1.086864e-06 -6.287524e-08 3.773365e-06 +-3.531317e-05 7.906774e-04 4.104832e-04 -1.538587e-04 -2.872849e-04 -2.560954e-04 +-1.846974e-04 -1.187765e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par26ew.edi b/examples/data/NEConductor/par26ew.edi new file mode 100644 index 00000000..4804b067 --- /dev/null +++ b/examples/data/NEConductor/par26ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par26ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par26ew" +REFLAT=-30:12:50.0927 +REFLONG=139:47:12.4136 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par26ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.203670e-02 -4.281322e-04 -5.664178e-05 -1.068295e-06 2.164333e-07 6.548229e-05 +-1.467044e-03 7.394448e-04 5.035814e-03 5.184710e-03 3.975650e-03 2.655755e-03 + 1.618797e-03 9.402317e-04 +>ZXXI ROT=ZROT //14 + 1.245651e-03 -3.022806e-04 -1.819577e-05 1.455126e-06 -3.159810e-07 -9.038045e-05 + 2.959207e-04 -4.055924e-03 -2.190491e-03 3.315675e-04 1.320614e-03 1.409722e-03 + 1.117147e-03 7.566875e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.868081e+02 1.241552e+02 7.346923e+01 4.197588e+01 2.350538e+01 1.317137e+01 + 8.356808e+00 6.606111e+00 5.479077e+00 4.274946e+00 3.011736e+00 1.924970e+00 + 1.146779e+00 6.593754e-01 +>ZXYI ROT=ZROT //14 + 3.083465e+02 1.471611e+02 7.805597e+01 4.294172e+01 2.400292e+01 1.271876e+01 + 6.027515e+00 2.958001e+00 2.005306e+00 1.769156e+00 1.578743e+00 1.252951e+00 + 8.808376e-01 5.632660e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865841e+02 -1.241461e+02 -7.346919e+01 -4.197589e+01 -2.350537e+01 -1.317141e+01 +-8.355469e+00 -6.605186e+00 -5.486868e+00 -4.285634e+00 -3.020800e+00 -1.931279e+00 +-1.150690e+00 -6.616622e-01 +>ZYXI ROT=ZROT //14 +-3.082126e+02 -1.471547e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271868e+01 +-6.028255e+00 -2.952298e+00 -1.999232e+00 -1.768194e+00 -1.580878e+00 -1.255896e+00 +-8.833717e-01 -5.650449e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.558992e-03 -2.016448e-04 -3.958048e-06 4.037802e-08 -3.155991e-07 -7.335767e-05 + 9.237495e-04 -9.290642e-04 -2.287858e-03 -1.672991e-03 -1.035651e-03 -6.168511e-04 +-3.559904e-04 -2.021789e-04 +>ZYYI ROT=ZROT //14 + 2.296102e-04 -6.540412e-05 -4.741500e-07 2.216798e-07 1.472142e-07 4.559916e-05 + 8.642922e-05 1.905036e-03 3.057379e-04 -5.523137e-04 -5.900907e-04 -4.434131e-04 +-2.938946e-04 -1.808275e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.215579e-02 -1.020538e-04 -3.657527e-05 -6.790299e-07 2.388501e-08 1.013179e-07 + 2.868021e-05 7.931512e-05 -3.137403e-04 -4.184707e-04 -3.235764e-04 -2.101948e-04 +-1.255499e-04 -7.226721e-05 +>TXI.EXP //14 +-6.287079e-04 5.593532e-06 5.201139e-06 1.215487e-06 1.030183e-08 1.801696e-06 +-3.811234e-05 2.140603e-04 2.567359e-04 1.486476e-05 -1.014477e-04 -1.142745e-04 +-8.922454e-05 -5.942173e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.046133e-02 -5.549021e-04 -1.378370e-06 9.234290e-08 -2.375202e-08 6.463688e-07 +-7.049483e-05 -1.894318e-04 7.662134e-04 9.713623e-04 7.317528e-04 4.704694e-04 + 2.799497e-04 1.608358e-04 +>TYI.EXP //14 + 2.451658e-03 7.323660e-05 -2.976462e-07 -2.358158e-07 -6.108737e-09 -4.501895e-06 + 8.610068e-05 -5.126603e-04 -5.953328e-04 -6.540155e-06 2.450904e-04 2.629575e-04 + 2.017725e-04 1.333492e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par27.edi b/examples/data/NEConductor/par27.edi new file mode 100644 index 00000000..6c543035 --- /dev/null +++ b/examples/data/NEConductor/par27.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par27" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par27" +REFLAT=-30:12:13.1181 +REFLONG=139:42:46.992 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par27" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.998880e-03 1.905749e-04 5.644224e-06 1.635902e-07 2.575797e-06 5.883962e-04 +-4.359714e-03 5.488841e-03 9.568368e-03 8.112147e-03 5.724578e-03 3.619837e-03 + 2.136827e-03 1.222984e-03 +>ZXXI ROT=ZROT //14 +-1.537251e-03 5.416923e-05 1.318027e-06 -1.732487e-07 1.066258e-06 8.044251e-05 +-2.278068e-03 -7.361166e-03 -1.489308e-03 1.689776e-03 2.521286e-03 2.241286e-03 + 1.620032e-03 1.042055e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865654e+02 1.241402e+02 7.346935e+01 4.197591e+01 2.350537e+01 1.316945e+01 + 8.367496e+00 6.585473e+00 5.457242e+00 4.258985e+00 3.001014e+00 1.918407e+00 + 1.142983e+00 6.572238e-01 +>ZXYI ROT=ZROT //14 + 3.082089e+02 1.471556e+02 7.805624e+01 4.294175e+01 2.400289e+01 1.271682e+01 + 6.040460e+00 2.973014e+00 2.003891e+00 1.763820e+00 1.573103e+00 1.248448e+00 + 8.777654e-01 5.613565e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865837e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350538e+01 -1.316971e+01 +-8.365314e+00 -6.587539e+00 -5.464098e+00 -4.266514e+00 -3.007052e+00 -1.922503e+00 +-1.145490e+00 -6.586821e-01 +>ZYXI ROT=ZROT //14 +-3.082079e+02 -1.471549e+02 -7.805628e+01 -4.294175e+01 -2.400289e+01 -1.271692e+01 +-6.039546e+00 -2.967911e+00 -2.000954e+00 -1.764010e+00 -1.574913e+00 -1.250535e+00 +-8.794639e-01 -5.625192e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.320069e-03 -7.752626e-05 -7.703935e-07 2.089810e-07 -2.691222e-06 -5.213417e-04 + 3.887897e-03 -5.049616e-03 -7.968960e-03 -6.278720e-03 -4.211218e-03 -2.572703e-03 +-1.488597e-03 -8.442042e-04 +>ZYYI ROT=ZROT //14 + 1.469246e-04 -2.286849e-05 -1.409973e-07 -4.592445e-08 -1.060459e-06 -4.447094e-05 + 2.061532e-03 6.176544e-03 7.369973e-04 -1.700612e-03 -2.110600e-03 -1.733567e-03 +-1.193691e-03 -7.452936e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.183308e-03 -2.585924e-04 -3.656087e-05 -2.063041e-07 1.049515e-08 5.209700e-06 +-8.746848e-05 2.389935e-05 3.951598e-04 3.847209e-04 2.718779e-04 1.723341e-04 + 1.022553e-04 5.865593e-05 +>TXI.EXP //14 +-2.837814e-04 2.817061e-05 8.177830e-06 8.707428e-07 1.629114e-08 -2.465914e-06 + 1.987571e-05 -2.986480e-04 -1.745664e-04 4.767676e-05 1.103258e-04 1.030888e-04 + 7.592295e-05 4.935154e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-5.011308e-03 3.960574e-04 1.334658e-05 3.815281e-08 -7.868984e-08 -1.719353e-05 + 2.521068e-04 -9.274529e-05 -1.116981e-03 -1.040993e-03 -7.204585e-04 -4.523105e-04 +-2.672384e-04 -1.531363e-04 +>TYI.EXP //14 +-5.086899e-06 -4.618840e-05 -4.071930e-06 -1.085236e-06 -6.091138e-08 4.583669e-06 +-4.058423e-05 8.479744e-04 4.483853e-04 -1.580885e-04 -3.082982e-04 -2.779069e-04 +-2.014544e-04 -1.298894e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par27ew.edi b/examples/data/NEConductor/par27ew.edi new file mode 100644 index 00000000..81a7f236 --- /dev/null +++ b/examples/data/NEConductor/par27ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par27ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par27ew" +REFLAT=-30:12:52.2125 +REFLONG=139:47:30.2054 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par27ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.767036e-02 -4.913412e-04 -6.896051e-05 -1.304055e-06 2.937434e-08 3.397783e-05 +-1.116997e-03 3.717112e-04 4.275587e-03 4.512108e-03 3.478575e-03 2.332313e-03 + 1.425079e-03 8.286766e-04 +>ZXXI ROT=ZROT //14 + 7.649021e-04 -3.638999e-04 -2.301639e-05 1.780945e-06 -2.258361e-07 -7.314768e-05 + 3.615308e-04 -3.420290e-03 -2.034834e-03 2.254311e-04 1.126575e-03 1.223108e-03 + 9.764407e-04 6.640474e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.868630e+02 1.241559e+02 7.346918e+01 4.197588e+01 2.350538e+01 1.317149e+01 + 8.355860e+00 6.607331e+00 5.480898e+00 4.276374e+00 3.012739e+00 1.925604e+00 + 1.147152e+00 6.595885e-01 +>ZXYI ROT=ZROT //14 + 3.083696e+02 1.471612e+02 7.805595e+01 4.294172e+01 2.400292e+01 1.271875e+01 + 6.027132e+00 2.956482e+00 2.005193e+00 1.769514e+00 1.579202e+00 1.253350e+00 + 8.811233e-01 5.634488e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865795e+02 -1.241459e+02 -7.346919e+01 -4.197589e+01 -2.350537e+01 -1.317151e+01 +-8.354815e+00 -6.606104e+00 -5.487956e+00 -4.286426e+00 -3.021332e+00 -1.931603e+00 +-1.150877e+00 -6.617684e-01 +>ZYXI ROT=ZROT //14 +-3.082145e+02 -1.471548e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271868e+01 +-6.027872e+00 -2.951428e+00 -1.999267e+00 -1.768450e+00 -1.581157e+00 -1.256119e+00 +-8.835235e-01 -5.651393e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.408090e-03 -2.001212e-04 -3.832726e-06 1.976656e-08 -1.919218e-07 -4.530218e-05 + 6.787254e-04 -6.647678e-04 -1.739757e-03 -1.170479e-03 -6.616589e-04 -3.733924e-04 +-2.102110e-04 -1.182425e-04 +>ZYYI ROT=ZROT //14 + 2.437700e-04 -6.533913e-05 -6.072376e-07 2.169696e-07 1.427395e-07 3.897121e-05 + 1.090633e-05 1.465220e-03 1.784192e-04 -4.819116e-04 -4.471623e-04 -3.038474e-04 +-1.882596e-04 -1.111928e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.234738e-02 -1.058804e-04 -3.720457e-05 -6.843642e-07 2.365768e-08 3.242977e-07 + 1.867001e-05 8.129103e-05 -2.647611e-04 -3.735986e-04 -2.916617e-04 -1.896858e-04 +-1.132910e-04 -6.520764e-05 +>TXI.EXP //14 +-6.407634e-04 5.960308e-06 5.327453e-06 1.232136e-06 5.735324e-09 1.238227e-06 +-3.240609e-05 1.740047e-04 2.376982e-04 2.119824e-05 -8.864664e-05 -1.022498e-04 +-8.025649e-05 -5.353963e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-2.024508e-02 -5.467696e-04 -4.764087e-06 -1.000954e-07 -2.146471e-08 -1.360585e-07 +-4.794355e-05 -1.978961e-04 6.605962e-04 8.880728e-04 6.766520e-04 4.358959e-04 + 2.594412e-04 1.490562e-04 +>TYI.EXP //14 + 2.640700e-03 6.745489e-05 -1.568789e-07 1.179326e-07 8.695566e-10 -3.342261e-06 + 7.504178e-05 -4.251429e-04 -5.655784e-04 -2.674721e-05 2.188727e-04 2.410346e-04 + 1.861648e-04 1.233238e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par28.edi b/examples/data/NEConductor/par28.edi new file mode 100644 index 00000000..3af186f8 --- /dev/null +++ b/examples/data/NEConductor/par28.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par28" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par28" +REFLAT=-30:11:56.8784 +REFLONG=139:42:47.2033 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par28" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.354110e-03 2.058287e-04 4.900941e-06 1.597573e-07 2.587823e-06 6.089909e-04 +-4.589609e-03 5.573117e-03 1.060446e-02 9.432619e-03 6.838691e-03 4.394323e-03 + 2.616624e-03 1.503356e-03 +>ZXXI ROT=ZROT //14 +-1.461076e-03 5.962628e-05 1.157714e-06 -1.568738e-07 1.652028e-06 9.231242e-05 +-2.300922e-03 -8.125451e-03 -2.144232e-03 1.611268e-03 2.796340e-03 2.607357e-03 + 1.932565e-03 1.260787e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865655e+02 1.241402e+02 7.346935e+01 4.197590e+01 2.350537e+01 1.316949e+01 + 8.367102e+00 6.586509e+00 5.458460e+00 4.260005e+00 3.001745e+00 1.918871e+00 + 1.143257e+00 6.573808e-01 +>ZXYI ROT=ZROT //14 + 3.082089e+02 1.471556e+02 7.805624e+01 4.294174e+01 2.400289e+01 1.271699e+01 + 6.039670e+00 2.972272e+00 2.003836e+00 1.764056e+00 1.573427e+00 1.248735e+00 + 8.779733e-01 5.614903e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865773e+02 -1.241458e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.316973e+01 +-8.365196e+00 -6.588384e+00 -5.464378e+00 -4.266400e+00 -3.006853e+00 -1.922334e+00 +-1.145377e+00 -6.586139e-01 +>ZYXI ROT=ZROT //14 +-3.082045e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400290e+01 -1.271709e+01 +-6.038816e+00 -2.967868e+00 -2.001410e+00 -1.764272e+00 -1.574978e+00 -1.250507e+00 +-8.794113e-01 -5.624740e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.274310e-03 -8.159757e-05 -6.602004e-07 2.062688e-07 -2.755923e-06 -5.488826e-04 + 4.245855e-03 -5.195169e-03 -9.364778e-03 -8.016692e-03 -5.662333e-03 -3.575125e-03 +-2.107526e-03 -1.205351e-03 +>ZYYI ROT=ZROT //14 + 1.420555e-04 -2.364366e-05 -1.250656e-07 -5.195590e-08 -7.391960e-07 -4.285692e-05 + 2.060487e-03 7.233464e-03 1.578915e-03 -1.619975e-03 -2.483350e-03 -2.215450e-03 +-1.600638e-03 -1.028569e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.554612e-03 -3.455696e-04 -3.731671e-05 5.277111e-08 4.366962e-08 9.010689e-06 +-1.460208e-04 4.141886e-05 6.635429e-04 6.368689e-04 4.470412e-04 2.824204e-04 + 1.673136e-04 9.594374e-05 +>TXI.EXP //14 +-1.385600e-04 4.024369e-05 9.842520e-06 7.072322e-07 2.660905e-08 -3.804207e-06 + 3.163133e-05 -5.024009e-04 -2.850950e-04 8.441628e-05 1.845562e-04 1.704551e-04 + 1.248760e-04 8.096159e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-4.986672e-03 3.964255e-04 1.334915e-05 3.642253e-08 -8.056448e-08 -1.677841e-05 + 2.548860e-04 -8.289888e-05 -1.143660e-03 -1.084640e-03 -7.573324e-04 -4.772132e-04 +-2.823573e-04 -1.618886e-04 +>TYI.EXP //14 +-9.333387e-06 -4.621533e-05 -4.070713e-06 -1.083686e-06 -5.004796e-08 5.602624e-06 +-4.842582e-05 8.684140e-04 4.765663e-04 -1.519738e-04 -3.171398e-04 -2.901110e-04 +-2.116339e-04 -1.368743e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par28ew.edi b/examples/data/NEConductor/par28ew.edi new file mode 100644 index 00000000..bbfaf4ad --- /dev/null +++ b/examples/data/NEConductor/par28ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par28ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par28ew" +REFLAT=-30:12:49.4693 +REFLONG=139:47:50.87 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par28ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.380491e-02 -5.528344e-04 -8.255892e-05 -1.570821e-06 -6.785677e-08 1.367881e-05 +-8.355710e-04 9.805153e-05 3.622900e-03 3.927267e-03 3.043428e-03 2.047600e-03 + 1.253985e-03 7.299966e-04 +>ZXXI ROT=ZROT //14 + 2.582634e-04 -4.268678e-04 -2.854737e-05 2.136114e-06 -1.149805e-07 -5.642004e-05 + 3.821777e-04 -2.865043e-03 -1.882729e-03 1.406744e-04 9.610881e-04 1.061289e-03 + 8.533305e-04 5.825711e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.869339e+02 1.241559e+02 7.346914e+01 4.197589e+01 2.350538e+01 1.317157e+01 + 8.355090e+00 6.608256e+00 5.482447e+00 4.277602e+00 3.013609e+00 1.926156e+00 + 1.147478e+00 6.597753e-01 +>ZXYI ROT=ZROT //14 + 3.083970e+02 1.471609e+02 7.805595e+01 4.294173e+01 2.400291e+01 1.271872e+01 + 6.026916e+00 2.955157e+00 2.005051e+00 1.769802e+00 1.579590e+00 1.253692e+00 + 8.813708e-01 5.636080e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865720e+02 -1.241454e+02 -7.346920e+01 -4.197589e+01 -2.350537e+01 -1.317158e+01 +-8.354300e+00 -6.606813e+00 -5.488752e+00 -4.286959e+00 -3.021671e+00 -1.931803e+00 +-1.150990e+00 -6.618314e-01 +>ZYXI ROT=ZROT //14 +-3.082206e+02 -1.471549e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271867e+01 +-6.027623e+00 -2.950761e+00 -1.999343e+00 -1.768662e+00 -1.581358e+00 -1.256269e+00 +-8.836209e-01 -5.651978e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.312066e-03 -1.950151e-04 -3.623814e-06 1.614653e-08 -1.033200e-07 -2.662022e-05 + 4.945592e-04 -4.744693e-04 -1.321712e-03 -7.905139e-04 -3.800547e-04 -1.904014e-04 +-1.007335e-04 -5.523144e-05 +>ZYYI ROT=ZROT //14 + 3.052332e-04 -6.662609e-05 -7.803353e-07 1.903036e-07 1.259545e-07 3.150162e-05 +-3.041900e-05 1.123103e-03 8.044741e-05 -4.272532e-04 -3.386065e-04 -1.984700e-04 +-1.087193e-04 -5.883570e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.256988e-02 -1.103705e-04 -3.798286e-05 -6.909057e-07 2.142456e-08 4.026230e-07 + 1.137338e-05 8.020987e-05 -2.221240e-04 -3.331385e-04 -2.626712e-04 -1.710166e-04 +-1.021239e-04 -5.877511e-05 +>TXI.EXP //14 +-6.545247e-04 6.367592e-06 5.477033e-06 1.251812e-06 2.561437e-09 8.093584e-07 +-2.691116e-05 1.397966e-04 2.190316e-04 2.609298e-05 -7.733218e-05 -9.141967e-05 +-7.212813e-05 -4.819369e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.961496e-02 -5.355844e-04 -8.635220e-06 -1.428571e-07 -1.923510e-08 -5.478148e-07 +-3.083827e-05 -1.985099e-04 5.645394e-04 8.085966e-04 6.233093e-04 4.022659e-04 + 2.394592e-04 1.375721e-04 +>TYI.EXP //14 + 2.827626e-03 5.921801e-05 2.320710e-07 4.332570e-07 4.311911e-09 -2.381601e-06 + 6.372175e-05 -3.474321e-04 -5.330037e-04 -4.349042e-05 1.945730e-04 2.201285e-04 + 1.711089e-04 1.136017e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par29.edi b/examples/data/NEConductor/par29.edi new file mode 100644 index 00000000..2bf6785d --- /dev/null +++ b/examples/data/NEConductor/par29.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par29" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par29" +REFLAT=-30:11:40.6387 +REFLONG=139:42:47.4145 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par29" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.687441e-03 2.199385e-04 4.142451e-06 1.535953e-07 2.481141e-06 5.892278e-04 +-4.557816e-03 5.313175e-03 1.093508e-02 1.003712e-02 7.395360e-03 4.797408e-03 + 2.871348e-03 1.653458e-03 +>ZXXI ROT=ZROT //14 +-1.373419e-03 6.512315e-05 1.004357e-06 -1.421477e-07 1.993406e-06 7.807431e-05 +-2.125263e-03 -8.384177e-03 -2.584585e-03 1.475869e-03 2.884019e-03 2.773722e-03 + 2.087918e-03 1.373766e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865655e+02 1.241402e+02 7.346935e+01 4.197590e+01 2.350537e+01 1.316964e+01 + 8.366134e+00 6.588551e+00 5.461241e+00 4.262477e+00 3.003572e+00 1.920055e+00 + 1.143964e+00 6.577877e-01 +>ZXYI ROT=ZROT //14 + 3.082088e+02 1.471556e+02 7.805624e+01 4.294174e+01 2.400290e+01 1.271729e+01 + 6.038198e+00 2.970472e+00 2.003489e+00 1.764496e+00 1.574161e+00 1.249428e+00 + 8.784913e-01 5.618298e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865710e+02 -1.241460e+02 -7.346928e+01 -4.197589e+01 -2.350537e+01 -1.316983e+01 +-8.364748e+00 -6.590048e+00 -5.465350e+00 -4.266719e+00 -3.006914e+00 -1.922312e+00 +-1.145344e+00 -6.585900e-01 +>ZYXI ROT=ZROT //14 +-3.082017e+02 -1.471554e+02 -7.805633e+01 -4.294174e+01 -2.400290e+01 -1.271738e+01 +-6.037482e+00 -2.967412e+00 -2.002017e+00 -1.764751e+00 -1.575225e+00 -1.250602e+00 +-8.794341e-01 -5.624722e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.292391e-03 -8.723612e-05 -5.265638e-07 2.131380e-07 -2.127808e-06 -5.440679e-04 + 4.421209e-03 -5.060424e-03 -1.032285e-02 -9.338195e-03 -6.800570e-03 -4.374571e-03 +-2.605420e-03 -1.496970e-03 +>ZYYI ROT=ZROT //14 + 1.489675e-04 -2.488219e-05 -1.100026e-07 -6.289141e-08 -7.089045e-07 -1.810641e-05 + 1.879376e-03 7.989577e-03 2.329922e-03 -1.484189e-03 -2.737217e-03 -2.580355e-03 +-1.919296e-03 -1.253863e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.880499e-03 -4.304371e-04 -3.739418e-05 3.061853e-07 6.700225e-08 1.122626e-05 +-1.869970e-04 4.272083e-05 8.733001e-04 8.438495e-04 5.933248e-04 3.749022e-04 + 2.220820e-04 1.273573e-04 +>TXI.EXP //14 + 9.014288e-06 5.195425e-05 1.128060e-05 5.361171e-07 3.576894e-08 -5.282322e-06 + 4.605750e-05 -6.603714e-04 -3.832015e-04 1.083617e-04 2.436771e-04 2.258859e-04 + 1.656547e-04 1.074411e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-4.962163e-03 3.968274e-04 1.335151e-05 3.482728e-08 -8.021191e-08 -1.511765e-05 + 2.433597e-04 -6.053578e-05 -1.123638e-03 -1.090363e-03 -7.690210e-04 -4.864830e-04 +-2.882701e-04 -1.653703e-04 +>TYI.EXP //14 +-1.344314e-05 -4.624842e-05 -4.069637e-06 -1.082245e-06 -3.911469e-08 6.563750e-06 +-5.762638e-05 8.519933e-04 4.933834e-04 -1.367598e-04 -3.138458e-04 -2.922113e-04 +-2.147002e-04 -1.393288e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par29ew.edi b/examples/data/NEConductor/par29ew.edi new file mode 100644 index 00000000..d64fe2d5 --- /dev/null +++ b/examples/data/NEConductor/par29ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par29ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par29ew" +REFLAT=-30:12:50.6529 +REFLONG=139:48:13.3623 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par29ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.893238e-02 -6.000464e-04 -9.413272e-05 -1.807965e-06 -8.953755e-08 1.521703e-06 +-6.141184e-04 -9.891619e-05 3.067403e-03 3.423559e-03 2.666505e-03 1.799781e-03 + 1.104619e-03 6.437291e-04 +>ZXXI ROT=ZROT //14 +-2.361010e-04 -4.758767e-04 -3.333086e-05 2.452646e-06 -4.619994e-10 -4.167217e-05 + 3.735006e-04 -2.386617e-03 -1.737656e-03 7.356427e-05 8.210976e-04 9.223158e-04 + 7.467463e-04 5.117059e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.870242e+02 1.241548e+02 7.346912e+01 4.197589e+01 2.350538e+01 1.317162e+01 + 8.354478e+00 6.608941e+00 5.483760e+00 4.278656e+00 3.014359e+00 1.926636e+00 + 1.147763e+00 6.599384e-01 +>ZXYI ROT=ZROT //14 + 3.084300e+02 1.471601e+02 7.805595e+01 4.294173e+01 2.400291e+01 1.271870e+01 + 6.026817e+00 2.954010e+00 2.004891e+00 1.770036e+00 1.579916e+00 1.253984e+00 + 8.815842e-01 5.637460e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865626e+02 -1.241449e+02 -7.346920e+01 -4.197590e+01 -2.350537e+01 -1.317162e+01 +-8.353902e+00 -6.607361e+00 -5.489333e+00 -4.287302e+00 -3.021871e+00 -1.931913e+00 +-1.151050e+00 -6.618639e-01 +>ZYXI ROT=ZROT //14 +-3.082292e+02 -1.471552e+02 -7.805627e+01 -4.294174e+01 -2.400291e+01 -1.271865e+01 +-6.027469e+00 -2.950245e+00 -1.999444e+00 -1.768839e+00 -1.581502e+00 -1.256366e+00 +-8.836789e-01 -5.652305e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.299285e-03 -1.865498e-04 -3.362832e-06 3.070288e-08 -3.932334e-08 -1.461777e-05 + 3.581055e-04 -3.391356e-04 -1.005123e-03 -5.065600e-04 -1.709632e-04 -5.491659e-05 +-1.979124e-05 -8.672715e-06 +>ZYYI ROT=ZROT //14 + 4.508552e-04 -6.893802e-05 -9.817373e-07 1.499523e-07 1.015828e-07 2.442387e-05 +-4.984249e-05 8.590799e-04 6.538512e-06 -3.844618e-04 -2.568182e-04 -1.198576e-04 +-4.965112e-05 -2.004802e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.282122e-02 -1.154475e-04 -3.890682e-05 -6.987082e-07 1.851206e-08 3.969523e-07 + 6.240235e-06 7.693517e-05 -1.853992e-04 -2.970403e-04 -2.366439e-04 -1.542293e-04 +-9.207716e-05 -5.298684e-05 +>TXI.EXP //14 +-6.698493e-04 6.804766e-06 5.648244e-06 1.274295e-06 1.077413e-09 4.985404e-07 +-2.191264e-05 1.110512e-04 2.011041e-04 2.978482e-05 -6.742153e-05 -8.176996e-05 +-6.484591e-05 -4.339361e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.846441e-02 -5.278923e-04 -1.276163e-05 -2.851682e-08 -1.696496e-08 -7.137205e-07 +-1.834427e-05 -1.931508e-04 4.788498e-04 7.344437e-04 5.729617e-04 3.704088e-04 + 2.205063e-04 1.266745e-04 +>TYI.EXP //14 + 3.005884e-03 4.917207e-05 8.768400e-07 6.724409e-07 3.644091e-09 -1.628661e-06 + 5.296659e-05 -2.800854e-04 -4.991320e-04 -5.706797e-05 1.724718e-04 2.006421e-04 + 1.569425e-04 1.044154e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par30.edi b/examples/data/NEConductor/par30.edi new file mode 100644 index 00000000..2973550c --- /dev/null +++ b/examples/data/NEConductor/par30.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par30" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par30" +REFLAT=-30:14:06.979 +REFLONG=139:43:04.2143 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par30" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.278342e-03 8.318315e-05 5.648128e-06 8.228781e-08 -6.039377e-07 1.050580e-04 +-1.206284e-03 2.095418e-03 7.247831e-04 -1.345130e-03 -1.776590e-03 -1.432597e-03 +-9.436333e-04 -5.648431e-04 +>ZXXI ROT=ZROT //14 +-1.078891e-03 1.791336e-05 3.117671e-07 -1.778185e-07 -9.475730e-07 -7.708841e-05 +-4.465028e-04 -9.282631e-04 1.883036e-03 1.266656e-03 1.716245e-04 -3.878554e-04 +-4.915262e-04 -3.935074e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865777e+02 1.241399e+02 7.346933e+01 4.197590e+01 2.350537e+01 1.317078e+01 + 8.359424e+00 6.599041e+00 5.479257e+00 4.279796e+00 3.016833e+00 1.928840e+00 + 1.149276e+00 6.608601e-01 +>ZXYI ROT=ZROT //14 + 3.082052e+02 1.471554e+02 7.805623e+01 4.294175e+01 2.400291e+01 1.271839e+01 + 6.031412e+00 2.957975e+00 1.999316e+00 1.766500e+00 1.578890e+00 1.254260e+00 + 8.822416e-01 5.643381e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866501e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317070e+01 +-8.360317e+00 -6.599430e+00 -5.473953e+00 -4.272373e+00 -3.010427e+00 -1.924346e+00 +-1.146481e+00 -6.592234e-01 +>ZYXI ROT=ZROT //14 +-3.082584e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271837e+01 +-6.031221e+00 -2.961794e+00 -2.003449e+00 -1.767269e+00 -1.577459e+00 -1.252203e+00 +-8.804483e-01 -5.630719e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.574490e-03 -1.080070e-04 -1.871697e-06 3.311061e-07 -4.709337e-07 -1.237277e-04 + 1.513549e-03 -2.098212e-03 -2.177482e-03 -4.794872e-04 2.205286e-04 3.359056e-04 + 2.581845e-04 1.626008e-04 +>ZYYI ROT=ZROT //14 + 3.195942e-04 -3.792499e-05 -2.220638e-07 -3.626682e-08 4.639585e-07 8.824724e-05 + 3.544128e-04 2.052122e-03 -9.532124e-04 -1.147296e-03 -5.360116e-04 -1.143657e-04 + 5.398244e-05 8.362017e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.780394e-02 2.345357e-04 -3.168502e-05 -7.098387e-07 -1.882624e-08 -7.056820e-06 + 1.475988e-04 5.040538e-05 -8.848044e-04 -9.064700e-04 -6.432298e-04 -4.063076e-04 +-2.403936e-04 -1.378698e-04 +>TXI.EXP //14 +-1.272547e-03 -4.271307e-05 4.150387e-07 1.172756e-06 1.018023e-08 5.747704e-06 +-7.063155e-05 6.476660e-04 4.621222e-04 -8.857436e-05 -2.552962e-04 -2.424590e-04 +-1.788288e-04 -1.161865e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.920842e-03 2.867114e-04 1.347878e-05 4.596256e-07 -3.033460e-08 -2.207458e-06 + 3.026831e-05 -2.817339e-06 -1.589383e-04 -1.324512e-04 -8.258744e-05 -4.925748e-05 +-2.849607e-05 -1.617982e-05 +>TYI.EXP //14 + 2.093649e-04 -3.240148e-05 -3.534086e-06 -1.267265e-06 -2.153905e-08 7.783713e-07 +-6.763929e-06 1.154293e-04 5.852800e-05 -3.245691e-05 -4.364989e-05 -3.425984e-05 +-2.309391e-05 -1.427654e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par30ew.edi b/examples/data/NEConductor/par30ew.edi new file mode 100644 index 00000000..996e6b1a --- /dev/null +++ b/examples/data/NEConductor/par30ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par30ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par30ew" +REFLAT=-30:12:50.8747 +REFLONG=139:48:37.7419 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par30ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.282769e-02 -6.400036e-04 -1.042666e-04 -2.026781e-06 -2.372347e-08 -7.949392e-06 +-3.128266e-04 -3.242226e-04 2.199752e-03 2.623131e-03 2.063406e-03 1.400777e-03 + 8.632010e-04 5.040469e-04 +>ZXXI ROT=ZROT //14 +-9.134962e-04 -5.061520e-04 -3.736272e-05 2.790127e-06 1.618792e-07 -2.002044e-05 + 3.120422e-04 -1.633324e-03 -1.474606e-03 -2.049031e-05 6.040565e-04 7.024526e-04 + 5.763294e-04 3.977173e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.872831e+02 1.241464e+02 7.346923e+01 4.197589e+01 2.350538e+01 1.317168e+01 + 8.353628e+00 6.609781e+00 5.485817e+00 4.280334e+00 3.015563e+00 1.927411e+00 + 1.148225e+00 6.602041e-01 +>ZXYI ROT=ZROT //14 + 3.085200e+02 1.471564e+02 7.805605e+01 4.294173e+01 2.400291e+01 1.271864e+01 + 6.026820e+00 2.952186e+00 2.004546e+00 1.770376e+00 1.580422e+00 1.254447e+00 + 8.819264e-01 5.639691e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865426e+02 -1.241438e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.317166e+01 +-8.353353e+00 -6.608120e+00 -5.490069e+00 -4.287626e+00 -3.022009e+00 -1.931966e+00 +-1.151069e+00 -6.618723e-01 +>ZYXI ROT=ZROT //14 +-3.082462e+02 -1.471556e+02 -7.805628e+01 -4.294174e+01 -2.400291e+01 -1.271862e+01 +-6.027329e+00 -2.949530e+00 -1.999685e+00 -1.769118e+00 -1.581678e+00 -1.256457e+00 +-8.837205e-01 -5.652481e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.355069e-03 -1.669177e-04 -2.775116e-06 5.938494e-08 3.813216e-08 -2.811117e-06 + 1.854051e-04 -1.771420e-04 -5.863183e-04 -1.421459e-04 9.334768e-05 1.151855e-04 + 8.148674e-05 4.949665e-05 +>ZYYI ROT=ZROT //14 + 7.127931e-04 -7.026739e-05 -1.440630e-06 9.722792e-08 4.199181e-08 1.334184e-05 +-5.470595e-05 5.010422e-04 -8.776369e-05 -3.230992e-04 -1.496648e-04 -1.930804e-05 + 2.506472e-05 2.872560e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.336702e-02 -1.265000e-04 -4.100809e-05 -7.162814e-07 1.464865e-08 2.839945e-07 + 4.945164e-07 6.659310e-05 -1.272643e-04 -2.367684e-04 -1.928519e-04 -1.259395e-04 +-7.513854e-05 -4.322608e-05 +>TXI.EXP //14 +-7.031717e-04 7.734521e-06 6.034828e-06 1.323149e-06 2.678893e-09 1.408512e-07 +-1.384973e-05 6.763990e-05 1.682312e-04 3.440183e-05 -5.128128e-05 -6.569277e-05 +-5.263035e-05 -3.532008e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.408421e-02 -5.668571e-04 -1.968742e-05 3.491564e-07 -9.673547e-09 -6.653544e-07 +-3.559936e-06 -1.711689e-04 3.376312e-04 6.041255e-04 4.832714e-04 3.134360e-04 + 1.865646e-04 1.071486e-04 +>TYI.EXP //14 + 3.287411e-03 3.048940e-05 2.418666e-06 9.307258e-07 -1.543749e-09 -6.586799e-07 + 3.479130e-05 -1.748016e-04 -4.315510e-04 -7.628940e-05 1.348955e-04 1.664602e-04 + 1.318097e-04 8.803760e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par31.edi b/examples/data/NEConductor/par31.edi new file mode 100644 index 00000000..3044f355 --- /dev/null +++ b/examples/data/NEConductor/par31.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par31" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par31" +REFLAT=-30:13:50.7394 +REFLONG=139:43:04.425 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par31" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-5.042360e-03 8.914409e-05 5.280127e-06 8.741556e-08 -8.648514e-08 1.628894e-04 +-1.541986e-03 2.515421e-03 1.347938e-03 -8.098721e-04 -1.396412e-03 -1.192896e-03 +-8.026794e-04 -4.843435e-04 +>ZXXI ROT=ZROT //14 +-1.139530e-03 1.965482e-05 4.832199e-07 -1.733844e-07 -1.259737e-06 -8.024757e-05 +-6.671478e-04 -1.383373e-03 1.798849e-03 1.376568e-03 3.386569e-04 -2.386780e-04 +-3.839809e-04 -3.245738e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865763e+02 1.241399e+02 7.346933e+01 4.197590e+01 2.350537e+01 1.317050e+01 + 8.360975e+00 6.596383e+00 5.475631e+00 4.276639e+00 3.014521e+00 1.927348e+00 + 1.148387e+00 6.603487e-01 +>ZXYI ROT=ZROT //14 + 3.082082e+02 1.471554e+02 7.805624e+01 4.294175e+01 2.400291e+01 1.271813e+01 + 6.033130e+00 2.960462e+00 1.999728e+00 1.765900e+00 1.577939e+00 1.253376e+00 + 8.815854e-01 5.639096e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866356e+02 -1.241504e+02 -7.346937e+01 -4.197589e+01 -2.350537e+01 -1.317044e+01 +-8.361713e+00 -6.596621e+00 -5.471247e+00 -4.270529e+00 -3.009240e+00 -1.923639e+00 +-1.146079e+00 -6.589976e-01 +>ZYXI ROT=ZROT //14 +-3.082477e+02 -1.471573e+02 -7.805624e+01 -4.294172e+01 -2.400291e+01 -1.271810e+01 +-6.033023e+00 -2.963619e+00 -2.003092e+00 -1.766528e+00 -1.576762e+00 -1.251681e+00 +-8.801065e-01 -5.628649e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.077160e-03 -1.024485e-04 -1.703340e-06 3.050930e-07 -8.519305e-07 -1.819251e-04 + 1.823804e-03 -2.571569e-03 -2.584893e-03 -6.990090e-04 1.159570e-04 2.912270e-04 + 2.392179e-04 1.536927e-04 +>ZYYI ROT=ZROT //14 + 2.915008e-04 -3.516921e-05 -2.345115e-07 -3.530550e-08 4.966581e-07 8.746758e-05 + 6.097899e-04 2.346393e-03 -1.059518e-03 -1.297610e-03 -6.455306e-04 -1.766068e-04 + 2.352878e-05 6.959276e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.667772e-02 1.895479e-04 -3.129470e-05 -8.431749e-07 -2.957778e-08 -9.304274e-06 + 1.676445e-04 9.171298e-06 -9.018725e-04 -8.874276e-04 -6.224291e-04 -3.917814e-04 +-2.315317e-04 -1.327364e-04 +>TXI.EXP //14 +-1.131442e-03 -3.604060e-05 4.294727e-07 1.265298e-06 7.972879e-10 5.324637e-06 +-6.017991e-05 6.703727e-04 4.274985e-04 -1.064888e-04 -2.554561e-04 -2.370319e-04 +-1.734041e-04 -1.122621e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.884456e-03 2.871869e-04 1.348455e-05 4.562802e-07 -3.324280e-08 -3.401621e-06 + 4.712566e-05 -8.019420e-06 -2.383185e-04 -2.055079e-04 -1.325149e-04 -8.037647e-05 +-4.682097e-05 -2.666778e-05 +>TYI.EXP //14 + 2.024079e-04 -3.242390e-05 -3.532202e-06 -1.264605e-06 -2.326370e-08 9.828931e-07 +-9.795384e-06 1.754156e-04 9.023923e-05 -4.429841e-05 -6.560503e-05 -5.369842e-05 +-3.704728e-05 -2.322701e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par310.edi b/examples/data/NEConductor/par310.edi new file mode 100644 index 00000000..06a58125 --- /dev/null +++ b/examples/data/NEConductor/par310.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par310" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par310" +REFLAT=-30:11:24.5821 +REFLONG=139:43:06.3197 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par310" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.887077e-03 1.545860e-04 1.463024e-06 1.047313e-07 3.286391e-06 6.211993e-04 +-4.569246e-03 5.555260e-03 1.082088e-02 9.763214e-03 7.135372e-03 4.607528e-03 + 2.750928e-03 1.582397e-03 +>ZXXI ROT=ZROT //14 +-9.446570e-04 4.089748e-05 6.768475e-07 -6.664097e-08 3.178033e-06 1.246299e-04 +-2.375970e-03 -8.236305e-03 -2.333595e-03 1.563863e-03 2.852760e-03 2.699048e-03 + 2.015869e-03 1.320781e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865750e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.316962e+01 + 8.365827e+00 6.588403e+00 5.462731e+00 4.264498e+00 3.005300e+00 1.921262e+00 + 1.144714e+00 6.582261e-01 +>ZXYI ROT=ZROT //14 + 3.082122e+02 1.471555e+02 7.805623e+01 4.294175e+01 2.400290e+01 1.271725e+01 + 6.038464e+00 2.969290e+00 2.002368e+00 1.764308e+00 1.574560e+00 1.249987e+00 + 8.789751e-01 5.621701e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865651e+02 -1.241464e+02 -7.346937e+01 -4.197591e+01 -2.350537e+01 -1.316972e+01 +-8.365507e+00 -6.589373e+00 -5.462781e+00 -4.263736e+00 -3.004482e+00 -1.920653e+00 +-1.144326e+00 -6.579977e-01 +>ZYXI ROT=ZROT //14 +-3.082000e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400290e+01 -1.271732e+01 +-6.037853e+00 -2.969270e+00 -2.003277e+00 -1.764762e+00 -1.574536e+00 -1.249773e+00 +-8.787510e-01 -5.620022e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.374601e-03 -1.088904e-04 -6.462038e-07 2.066645e-07 -2.957836e-06 -6.106177e-04 + 4.848419e-03 -5.532013e-03 -1.153042e-02 -1.059800e-02 -7.799831e-03 -5.051107e-03 +-3.019504e-03 -1.737756e-03 +>ZYYI ROT=ZROT //14 + 1.573719e-04 -3.081957e-05 -8.828694e-08 -4.499721e-08 -1.090267e-06 -4.242887e-05 + 2.118396e-03 8.883784e-03 2.761054e-03 -1.552121e-03 -3.050096e-03 -2.929647e-03 +-2.201172e-03 -1.446274e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.148984e-03 -5.097000e-04 -3.649345e-05 5.329381e-07 9.618581e-08 1.453410e-05 +-2.334870e-04 6.066529e-05 1.077925e-03 1.030663e-03 7.214312e-04 4.550023e-04 + 2.693263e-04 1.544152e-04 +>TXI.EXP //14 + 1.590804e-04 6.287991e-05 1.235209e-05 3.643017e-07 3.562887e-08 -6.171636e-06 + 5.280455e-05 -8.159998e-04 -4.619334e-04 1.390954e-04 2.997566e-04 2.756745e-04 + 2.015020e-04 1.304867e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.634730e-03 2.912888e-04 1.352634e-05 4.370094e-07 -7.083821e-08 -1.262210e-05 + 2.054026e-04 -5.334126e-05 -9.335196e-04 -9.198291e-04 -6.551603e-04 -4.162882e-04 +-2.471196e-04 -1.418582e-04 +>TYI.EXP //14 + 1.567565e-04 -3.270498e-05 -3.522642e-06 -1.249345e-06 -3.142285e-08 5.896293e-06 +-4.870677e-05 7.100344e-04 4.180216e-04 -1.056456e-04 -2.613594e-04 -2.471829e-04 +-1.828808e-04 -1.190788e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par31ew.edi b/examples/data/NEConductor/par31ew.edi new file mode 100644 index 00000000..087620cf --- /dev/null +++ b/examples/data/NEConductor/par31ew.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par31ew" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par31ew" +REFLAT=-30:12:53.0083 +REFLONG=139:48:57.4097 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par31ew" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.338972e-02 -6.480649e-04 -1.046093e-04 -2.080100e-06 1.476130e-08 -8.646429e-06 +-2.153100e-04 -3.776084e-04 1.864571e-03 2.307928e-03 1.824458e-03 1.241762e-03 + 7.666353e-04 4.480801e-04 +>ZXXI ROT=ZROT //14 +-7.211541e-04 -5.006128e-04 -3.767871e-05 2.833054e-06 1.851216e-07 -1.290769e-05 + 2.733331e-04 -1.343029e-03 -1.357373e-03 -5.256619e-05 5.206991e-04 6.163006e-04 + 5.088634e-04 3.523300e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.874769e+02 1.241385e+02 7.346933e+01 4.197589e+01 2.350538e+01 1.317169e+01 + 8.353344e+00 6.610013e+00 5.486619e+00 4.281000e+00 3.016045e+00 1.927724e+00 + 1.148412e+00 6.603119e-01 +>ZXYI ROT=ZROT //14 + 3.085834e+02 1.471535e+02 7.805611e+01 4.294172e+01 2.400291e+01 1.271862e+01 + 6.026871e+00 2.951473e+00 2.004371e+00 1.770498e+00 1.580617e+00 1.254630e+00 + 8.820630e-01 5.640587e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865336e+02 -1.241433e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.317168e+01 +-8.353169e+00 -6.608384e+00 -5.490300e+00 -4.287676e+00 -3.021999e+00 -1.931943e+00 +-1.151050e+00 -6.618598e-01 +>ZYXI ROT=ZROT //14 +-3.082528e+02 -1.471557e+02 -7.805629e+01 -4.294173e+01 -2.400291e+01 -1.271861e+01 +-6.027308e+00 -2.949281e+00 -1.999810e+00 -1.769230e+00 -1.581730e+00 -1.256472e+00 +-8.837187e-01 -5.652426e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.273471e-03 -1.585711e-04 -2.615562e-06 6.387823e-08 5.371533e-08 -3.741984e-07 + 1.328811e-04 -1.307919e-04 -4.507065e-04 -3.003180e-05 1.724940e-04 1.654884e-04 + 1.112479e-04 6.654255e-05 +>ZYYI ROT=ZROT //14 + 6.218324e-04 -6.827457e-05 -1.561903e-06 8.903761e-08 1.260116e-08 9.465483e-06 +-4.961492e-05 3.822968e-04 -1.156900e-04 -3.005382e-04 -1.154555e-04 1.146341e-05 + 4.747119e-05 4.319278e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.362805e-02 -1.319726e-04 -4.203162e-05 -7.245150e-07 1.423576e-08 2.181513e-07 +-9.014065e-07 6.056264e-05 -1.045857e-04 -2.118273e-04 -1.746034e-04 -1.141386e-04 +-6.807096e-05 -3.915290e-05 +>TXI.EXP //14 +-7.194423e-04 8.211457e-06 6.231285e-06 1.345613e-06 4.778735e-09 5.155605e-08 +-1.078852e-05 5.172763e-05 1.534381e-04 3.567627e-05 -4.476350e-05 -5.905505e-05 +-4.755614e-05 -3.195827e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.047473e-02 -6.476642e-04 -2.126515e-05 3.086535e-07 -7.352781e-09 -5.640871e-07 + 3.292007e-07 -1.571982e-04 2.806274e-04 5.478457e-04 4.440854e-04 2.884718e-04 + 1.716769e-04 9.858087e-05 +>TYI.EXP //14 + 3.349696e-03 2.762864e-05 2.894225e-06 1.021646e-06 -4.246746e-10 -3.773169e-07 + 2.761688e-05 -1.350712e-04 -3.991205e-04 -8.271560e-05 1.191635e-04 1.517295e-04 + 1.208726e-04 8.088011e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par32.edi b/examples/data/NEConductor/par32.edi new file mode 100644 index 00000000..6091fa53 --- /dev/null +++ b/examples/data/NEConductor/par32.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par32" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par32" +REFLAT=-30:13:34.4997 +REFLONG=139:43:04.6357 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par32" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.779812e-03 9.597149e-05 4.898084e-06 9.298232e-08 6.571067e-07 2.397678e-04 +-1.975368e-03 3.048148e-03 2.289992e-03 7.429346e-05 -7.365523e-04 -7.636472e-04 +-5.457790e-04 -3.364546e-04 +>ZXXI ROT=ZROT //14 +-1.178496e-03 2.140643e-05 6.037361e-07 -1.672778e-07 -1.331229e-06 -7.140338e-05 +-9.616500e-04 -2.065138e-03 1.584677e-03 1.497031e-03 5.902247e-04 7.485954e-06 +-1.977148e-04 -2.018308e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865755e+02 1.241399e+02 7.346933e+01 4.197590e+01 2.350537e+01 1.317020e+01 + 8.362706e+00 6.593257e+00 5.471243e+00 4.272741e+00 3.011638e+00 1.925475e+00 + 1.147267e+00 6.597041e-01 +>ZXYI ROT=ZROT //14 + 3.082101e+02 1.471554e+02 7.805623e+01 4.294175e+01 2.400290e+01 1.271777e+01 + 6.035242e+00 2.963416e+00 2.000314e+00 1.765216e+00 1.576787e+00 1.252285e+00 + 8.807675e-01 5.633727e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866236e+02 -1.241492e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317017e+01 +-8.363106e+00 -6.593524e+00 -5.468354e+00 -4.268574e+00 -3.007993e+00 -1.922901e+00 +-1.145660e+00 -6.587624e-01 +>ZYXI ROT=ZROT //14 +-3.082384e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271773e+01 +-6.035155e+00 -2.965473e+00 -2.002665e+00 -1.765715e+00 -1.576015e+00 -1.251128e+00 +-8.797467e-01 -5.626480e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.642751e-03 -9.794064e-05 -1.559107e-06 2.813761e-07 -1.365967e-06 -2.538662e-04 + 2.180289e-03 -3.111558e-03 -3.163826e-03 -1.111216e-03 -1.420766e-04 1.435390e-04 + 1.576326e-04 1.084974e-04 +>ZYYI ROT=ZROT //14 + 2.608277e-04 -3.284632e-05 -2.351303e-07 -3.279480e-08 4.077949e-07 7.443636e-05 + 9.299894e-04 2.749575e-03 -1.093289e-03 -1.453415e-03 -8.025225e-04 -2.925781e-04 +-5.001814e-05 2.633639e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.544519e-02 1.334312e-04 -3.135134e-05 -9.075438e-07 -3.976102e-08 -1.092978e-05 + 1.754541e-04 -2.805894e-05 -8.650096e-04 -8.215576e-04 -5.700096e-04 -3.575220e-04 +-2.110269e-04 -1.209324e-04 +>TXI.EXP //14 +-9.905550e-04 -2.773579e-05 9.183713e-07 1.303307e-06 -9.854539e-09 4.266428e-06 +-4.530619e-05 6.503256e-04 3.738549e-04 -1.154653e-04 -2.412876e-04 -2.191897e-04 +-1.591034e-04 -1.026447e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.850739e-03 2.876401e-04 1.349013e-05 4.532509e-07 -3.803191e-08 -5.079663e-06 + 7.016364e-05 -1.861318e-05 -3.384814e-04 -2.961457e-04 -1.944163e-04 -1.190074e-04 +-6.958781e-05 -3.970271e-05 +>TYI.EXP //14 + 1.959619e-04 -3.244569e-05 -3.530480e-06 -1.262234e-06 -2.644813e-08 1.154010e-06 +-1.236911e-05 2.518615e-04 1.275385e-04 -5.981248e-05 -9.301175e-05 -7.784862e-05 +-5.437661e-05 -3.434683e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par33.edi b/examples/data/NEConductor/par33.edi new file mode 100644 index 00000000..f433b708 --- /dev/null +++ b/examples/data/NEConductor/par33.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par33" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par33" +REFLAT=-30:13:18.2601 +REFLONG=139:43:04.8464 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par33" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.491159e-03 1.034460e-04 4.508886e-06 9.626671e-08 1.583201e-06 3.350810e-04 +-2.514936e-03 3.709445e-03 3.606407e-03 1.374800e-03 2.597978e-04 -1.053990e-04 +-1.485178e-04 -1.069182e-04 +>ZXXI ROT=ZROT //14 +-1.197647e-03 2.323234e-05 6.748739e-07 -1.582353e-07 -1.135850e-06 -4.469340e-05 +-1.341094e-03 -3.011850e-03 1.212249e-03 1.625726e-03 9.408763e-04 3.694841e-04 + 8.325732e-05 -1.412310e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865750e+02 1.241399e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316990e+01 + 8.364524e+00 6.589816e+00 5.466294e+00 4.268273e+00 3.008311e+00 1.923305e+00 + 1.145965e+00 6.589540e-01 +>ZXYI ROT=ZROT //14 + 3.082112e+02 1.471555e+02 7.805623e+01 4.294175e+01 2.400290e+01 1.271733e+01 + 6.037643e+00 2.966702e+00 2.001050e+00 1.764481e+00 1.575487e+00 1.251035e+00 + 8.798241e-01 5.627508e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866137e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316993e+01 +-8.364402e+00 -6.590340e+00 -5.465427e+00 -4.266603e+00 -3.006741e+00 -1.922161e+00 +-1.145241e+00 -6.585270e-01 +>ZYXI ROT=ZROT //14 +-3.082304e+02 -1.471560e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271729e+01 +-6.037465e+00 -2.967267e+00 -2.002211e+00 -1.764881e+00 -1.575256e+00 -1.250570e+00 +-8.793852e-01 -5.624305e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.269133e-03 -9.455047e-05 -1.434183e-06 2.606070e-07 -1.972765e-06 -3.374623e-04 + 2.589840e-03 -3.719199e-03 -3.978126e-03 -1.800617e-03 -6.260264e-04 -1.578564e-04 +-1.806509e-05 8.591839e-06 +>ZYYI ROT=ZROT //14 + 2.296882e-04 -3.095972e-05 -2.272921e-07 -2.895353e-08 1.418507e-07 4.566258e-05 + 1.312048e-03 3.309845e-03 -1.011160e-03 -1.607779e-03 -1.023856e-03 -4.857693e-04 +-1.869766e-04 -6.044793e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.412324e-02 6.760685e-05 -3.188165e-05 -8.956325e-07 -4.351456e-08 -1.119832e-05 + 1.641677e-04 -5.277361e-05 -7.561998e-04 -6.966075e-04 -4.785673e-04 -2.991327e-04 +-1.763375e-04 -1.010132e-04 +>TXI.EXP //14 +-8.498501e-04 -1.809801e-05 1.842666e-06 1.290835e-06 -3.306468e-08 2.773266e-06 +-2.861043e-05 5.732629e-04 2.998744e-04 -1.107716e-04 -2.083086e-04 -1.856917e-04 +-1.338076e-04 -8.603698e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.819323e-03 2.880771e-04 1.349549e-05 4.505368e-07 -4.503081e-08 -7.256032e-06 + 9.931729e-05 -3.505352e-05 -4.577106e-04 -4.032198e-04 -2.677364e-04 -1.648707e-04 +-9.664817e-05 -5.520327e-05 +>TYI.EXP //14 + 1.899754e-04 -3.246773e-05 -3.528919e-06 -1.260139e-06 -3.249869e-08 1.263397e-06 +-1.404276e-05 3.434102e-04 1.698457e-04 -7.850923e-05 -1.254180e-04 -1.064337e-04 +-7.492669e-05 -4.755138e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par34.edi b/examples/data/NEConductor/par34.edi new file mode 100644 index 00000000..3bafa246 --- /dev/null +++ b/examples/data/NEConductor/par34.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par34" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par34" +REFLAT=-30:13:02.0204 +REFLONG=139:43:05.057 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par34" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-4.177209e-03 1.113241e-04 4.111461e-06 9.634208e-08 2.424302e-06 4.430898e-04 +-3.143906e-03 4.482904e-03 5.282533e-03 3.087716e-03 1.593827e-03 7.841745e-04 + 3.909903e-04 2.054757e-04 +>ZXXI ROT=ZROT //14 +-1.199223e-03 2.519173e-05 7.054248e-07 -1.461199e-07 -3.586484e-07 2.955503e-06 +-1.797083e-03 -4.211411e-03 6.754376e-04 1.754877e-03 1.386601e-03 8.462966e-04 + 4.592387e-04 2.391344e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865749e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350538e+01 1.316963e+01 + 8.366271e+00 6.586393e+00 5.461262e+00 4.263673e+00 3.004863e+00 1.921049e+00 + 1.144609e+00 6.581720e-01 +>ZXYI ROT=ZROT //14 + 3.082118e+02 1.471554e+02 7.805624e+01 4.294175e+01 2.400289e+01 1.271685e+01 + 6.040078e+00 2.970016e+00 2.001868e+00 1.763768e+00 1.574164e+00 1.249748e+00 + 8.788471e-01 5.621047e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866051e+02 -1.241473e+02 -7.346920e+01 -4.197589e+01 -2.350538e+01 -1.316973e+01 +-8.365516e+00 -6.587379e+00 -5.462702e+00 -4.264752e+00 -3.005560e+00 -1.921462e+00 +-1.144844e+00 -6.583037e-01 +>ZYXI ROT=ZROT //14 +-3.082236e+02 -1.471555e+02 -7.805625e+01 -4.294174e+01 -2.400289e+01 -1.271685e+01 +-6.039687e+00 -2.968885e+00 -2.001801e+00 -1.764109e+00 -1.574547e+00 -1.250047e+00 +-8.790448e-01 -5.622250e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.955552e-03 -9.232641e-05 -1.322937e-06 2.428497e-07 -2.481673e-06 -4.277846e-04 + 3.054254e-03 -4.381867e-03 -5.073993e-03 -2.836679e-03 -1.398074e-03 -6.574244e-04 +-3.157972e-04 -1.624327e-04 +>ZYYI ROT=ZROT //14 + 1.998024e-04 -2.950622e-05 -2.133468e-07 -2.432974e-08 -4.328535e-07 8.134771e-07 + 1.738820e-03 4.065991e-03 -7.714705e-04 -1.750117e-03 -1.321377e-03 -7.754504e-04 +-4.047648e-04 -2.032607e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.272486e-02 -6.280744e-06 -3.282409e-05 -8.087324e-07 -2.607693e-08 -9.474224e-06 + 1.289554e-04 -5.743484e-05 -5.643719e-04 -5.059303e-04 -3.443722e-04 -2.144848e-04 +-1.262544e-04 -7.229646e-05 +>TXI.EXP //14 +-7.091201e-04 -7.417813e-06 3.131560e-06 1.233943e-06 -2.090846e-08 1.237732e-06 +-1.346387e-05 4.306980e-04 2.062159e-04 -8.901464e-05 -1.538307e-04 -1.347770e-04 +-9.643335e-05 -6.179928e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.789851e-03 2.885044e-04 1.350059e-05 4.481448e-07 -5.389656e-08 -9.803411e-06 + 1.329675e-04 -5.607730e-05 -5.895130e-04 -5.220280e-04 -3.496814e-04 -2.163329e-04 +-1.270651e-04 -7.263856e-05 +>TYI.EXP //14 + 1.843967e-04 -3.249091e-05 -3.527525e-06 -1.258290e-06 -4.148528e-08 1.339322e-06 +-1.481497e-05 4.449884e-04 2.157949e-04 -9.878459e-05 -1.611479e-04 -1.382360e-04 +-9.790680e-05 -6.235950e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par36.edi b/examples/data/NEConductor/par36.edi new file mode 100644 index 00000000..82fa8e33 --- /dev/null +++ b/examples/data/NEConductor/par36.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par36" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par36" +REFLAT=-30:12:29.541 +REFLONG=139:43:05.4781 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par36" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.479834e-03 1.273257e-04 3.271124e-06 1.006407e-07 3.478512e-06 6.441422e-04 +-4.410421e-03 6.011150e-03 9.045856e-03 7.100233e-03 4.778618e-03 2.930085e-03 + 1.699486e-03 9.649142e-04 +>ZXXI ROT=ZROT //14 +-1.158019e-03 2.966789e-05 6.968245e-07 -1.171266e-07 1.508153e-06 1.336900e-04 +-2.715060e-03 -6.897032e-03 -7.172501e-04 1.943643e-03 2.385677e-03 1.963100e-03 + 1.356158e-03 8.489259e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865749e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350538e+01 1.316926e+01 + 8.368690e+00 6.581722e+00 5.454051e+00 4.256947e+00 2.999776e+00 1.917700e+00 + 1.142591e+00 6.570065e-01 +>ZXYI ROT=ZROT //14 + 3.082122e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400288e+01 1.271618e+01 + 6.043415e+00 2.974777e+00 2.003216e+00 1.762828e+00 1.572269e+00 1.247869e+00 + 8.774061e-01 5.611470e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865906e+02 -1.241461e+02 -7.346915e+01 -4.197590e+01 -2.350538e+01 -1.316948e+01 +-8.366937e+00 -6.583655e+00 -5.459022e+00 -4.262084e+00 -3.003794e+00 -1.920390e+00 +-1.144227e+00 -6.579546e-01 +>ZYXI ROT=ZROT //14 +-3.082126e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400289e+01 -1.271627e+01 +-6.042510e+00 -2.971081e+00 -2.001469e+00 -1.763159e+00 -1.573583e+00 -1.249294e+00 +-8.785380e-01 -5.619124e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.510310e-03 -9.170110e-05 -1.125419e-06 2.089503e-07 -3.441736e-06 -5.941873e-04 + 4.070198e-03 -5.663077e-03 -7.963768e-03 -5.875409e-03 -3.778866e-03 -2.244590e-03 +-1.277374e-03 -7.188587e-04 +>ZYYI ROT=ZROT //14 + 1.499512e-04 -2.794696e-05 -1.748267e-07 -1.909022e-08 -1.249387e-06 -1.059422e-04 + 2.533969e-03 6.102610e-03 2.353688e-04 -1.935427e-03 -2.102192e-03 -1.623064e-03 +-1.074724e-03 -6.545678e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.736187e-03 -1.708996e-04 -3.535411e-05 -4.481498e-07 -6.005489e-09 -1.073170e-07 +-6.193270e-06 -4.364496e-06 3.247702e-05 4.071501e-05 3.082688e-05 2.022159e-05 + 1.221011e-05 7.013710e-06 +>TXI.EXP //14 +-4.262067e-04 1.594836e-05 6.411139e-06 1.015550e-06 -7.092197e-09 -8.281249e-07 + 5.287908e-06 -2.201602e-05 -2.500854e-05 1.118211e-07 1.000644e-05 1.091722e-05 + 8.547427e-06 5.714374e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.735359e-03 2.893576e-04 1.351010e-05 4.440820e-07 -6.136235e-08 -1.462289e-05 + 1.982324e-04 -9.596190e-05 -8.390765e-04 -7.560886e-04 -5.152182e-04 -3.214641e-04 +-1.894859e-04 -1.084810e-04 +>TYI.EXP //14 + 1.742669e-04 -3.254416e-05 -3.525248e-06 -1.255087e-06 -5.556056e-08 1.927833e-06 +-1.727594e-05 6.381056e-04 3.089595e-04 -1.320532e-04 -2.292509e-04 -2.012855e-04 +-1.442892e-04 -9.251590e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par37.edi b/examples/data/NEConductor/par37.edi new file mode 100644 index 00000000..5962cf43 --- /dev/null +++ b/examples/data/NEConductor/par37.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par37" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par37" +REFLAT=-30:12:13.3013 +REFLONG=139:43:05.6886 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par37" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-3.101351e-03 1.350123e-04 2.824935e-06 1.047407e-07 3.409849e-06 7.041622e-04 +-4.845992e-03 6.469197e-03 1.053527e-02 8.790091e-03 6.153075e-03 3.868338e-03 + 2.275450e-03 1.300169e-03 +>ZXXI ROT=ZROT //14 +-1.118756e-03 3.220950e-05 6.815105e-07 -1.018939e-07 2.409002e-06 1.821657e-04 +-2.984021e-03 -7.966829e-03 -1.391401e-03 1.956240e-03 2.780312e-03 2.432961e-03 + 1.742755e-03 1.114901e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865749e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350538e+01 1.316919e+01 + 8.368965e+00 6.581436e+00 5.453335e+00 4.256193e+00 2.999176e+00 1.917294e+00 + 1.142343e+00 6.568620e-01 +>ZXYI ROT=ZROT //14 + 3.082122e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400288e+01 1.271616e+01 + 6.043575e+00 2.975302e+00 2.003477e+00 1.762790e+00 1.572083e+00 1.247659e+00 + 8.772370e-01 5.610315e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865840e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350538e+01 -1.316943e+01 +-8.367146e+00 -6.583491e+00 -5.458556e+00 -4.261569e+00 -3.003388e+00 -1.920119e+00 +-1.144062e+00 -6.578597e-01 +>ZYXI ROT=ZROT //14 +-3.082083e+02 -1.471549e+02 -7.805628e+01 -4.294175e+01 -2.400288e+01 -1.271628e+01 +-6.042571e+00 -2.971438e+00 -2.001666e+00 -1.763143e+00 -1.573454e+00 -1.249151e+00 +-8.784240e-01 -5.618355e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.379451e-03 -9.348462e-05 -1.027166e-06 1.947521e-07 -3.405751e-06 -6.500625e-04 + 4.519533e-03 -6.085402e-03 -9.441779e-03 -7.568259e-03 -5.152416e-03 -3.178650e-03 +-1.849326e-03 -1.051383e-03 +>ZYYI ROT=ZROT //14 + 1.345380e-04 -2.786961e-05 -1.529498e-07 -2.032091e-08 -2.192989e-06 -1.366640e-04 + 2.748677e-03 7.181494e-03 9.284473e-04 -1.942494e-03 -2.498966e-03 -2.094028e-03 +-1.460573e-03 -9.192516e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.159203e-03 -2.576618e-04 -3.651907e-05 -2.051858e-07 4.911348e-09 5.804353e-06 +-8.687316e-05 3.533598e-05 3.725064e-04 3.471808e-04 2.404642e-04 1.512503e-04 + 8.949174e-05 5.127570e-05 +>TXI.EXP //14 +-2.831272e-04 2.808332e-05 8.169111e-06 8.680539e-07 1.641187e-08 -1.674396e-06 + 1.205980e-05 -2.814812e-04 -1.492413e-04 5.297539e-05 1.026369e-04 9.263922e-05 + 6.727176e-05 4.343737e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.709659e-03 2.897990e-04 1.351453e-05 4.421626e-07 -6.564711e-08 -1.594089e-05 + 2.196537e-04 -1.040535e-04 -9.253094e-04 -8.465895e-04 -5.826310e-04 -3.651616e-04 +-2.156347e-04 -1.235398e-04 +>TYI.EXP //14 + 1.696177e-04 -3.257603e-05 -3.524364e-06 -1.253565e-06 -5.453908e-08 2.726973e-06 +-2.169421e-05 7.051356e-04 3.499053e-04 -1.383994e-04 -2.534802e-04 -2.259387e-04 +-1.631099e-04 -1.049647e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par38.edi b/examples/data/NEConductor/par38.edi new file mode 100644 index 00000000..857ab62a --- /dev/null +++ b/examples/data/NEConductor/par38.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par38" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par38" +REFLAT=-30:11:57.0616 +REFLONG=139:43:05.899 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par38" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.707248e-03 1.422296e-04 2.367687e-06 1.065917e-07 3.307621e-06 7.204677e-04 +-5.027963e-03 6.547150e-03 1.137376e-02 9.857664e-03 7.055825e-03 4.496966e-03 + 2.665253e-03 1.528045e-03 +>ZXXI ROT=ZROT //14 +-1.069104e-03 3.494368e-05 6.700261e-07 -8.802849e-08 3.145370e-06 1.966628e-04 +-3.013157e-03 -8.582671e-03 -1.916539e-03 1.892340e-03 3.001757e-03 2.729019e-03 + 1.996108e-03 1.292443e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865749e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.316923e+01 + 8.368508e+00 6.582693e+00 5.454865e+00 4.257491e+00 3.000114e+00 1.917895e+00 + 1.142699e+00 6.570665e-01 +>ZXYI ROT=ZROT //14 + 3.082123e+02 1.471555e+02 7.805624e+01 4.294175e+01 2.400288e+01 1.271638e+01 + 6.042609e+00 2.974373e+00 2.003380e+00 1.763074e+00 1.572488e+00 1.248024e+00 + 8.775040e-01 5.612044e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865777e+02 -1.241458e+02 -7.346922e+01 -4.197591e+01 -2.350538e+01 -1.316945e+01 +-8.366979e+00 -6.584548e+00 -5.459121e+00 -4.261704e+00 -3.003374e+00 -1.920072e+00 +-1.144022e+00 -6.578338e-01 +>ZYXI ROT=ZROT //14 +-3.082048e+02 -1.471551e+02 -7.805630e+01 -4.294175e+01 -2.400289e+01 -1.271650e+01 +-6.041666e+00 -2.971230e+00 -2.002091e+00 -1.763451e+00 -1.573594e+00 -1.249192e+00 +-8.784241e-01 -5.618250e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.311183e-03 -9.680112e-05 -9.175793e-07 1.892174e-07 -3.684194e-06 -6.743225e-04 + 4.833553e-03 -6.222977e-03 -1.063383e-02 -9.045681e-03 -6.385195e-03 -4.029989e-03 +-2.374880e-03 -1.358020e-03 +>ZYYI ROT=ZROT //14 + 1.292553e-04 -2.828070e-05 -1.303631e-07 -2.404898e-08 -1.722662e-06 -1.341926e-04 + 2.749499e-03 8.087602e-03 1.637492e-03 -1.877022e-03 -2.816834e-03 -2.503811e-03 +-1.806350e-03 -1.159859e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.533433e-03 -3.445703e-04 -3.727965e-05 5.391462e-08 3.964383e-08 1.077628e-05 +-1.579739e-04 6.504930e-05 6.809243e-04 6.309454e-04 4.363889e-04 2.741547e-04 + 1.620810e-04 9.287112e-05 +>TXI.EXP //14 +-1.382708e-04 4.014796e-05 9.834997e-06 7.046136e-07 4.066782e-08 -2.869446e-06 + 2.156562e-05 -5.168163e-04 -2.682427e-04 9.794558e-05 1.871894e-04 1.684303e-04 + 1.220990e-04 7.877038e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.684545e-03 2.902614e-04 1.351873e-05 4.402975e-07 -7.019641e-08 -1.602325e-05 + 2.281799e-04 -9.908265e-05 -9.701275e-04 -9.056724e-04 -6.301282e-04 -3.967703e-04 +-2.347302e-04 -1.345748e-04 +>TYI.EXP //14 + 1.651813e-04 -3.261270e-05 -3.523640e-06 -1.252072e-06 -4.635005e-08 3.832258e-06 +-2.913324e-05 7.399995e-04 3.829581e-04 -1.353925e-04 -2.670531e-04 -2.422906e-04 +-1.762861e-04 -1.138837e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par39.edi b/examples/data/NEConductor/par39.edi new file mode 100644 index 00000000..ac766086 --- /dev/null +++ b/examples/data/NEConductor/par39.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par39" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par39" +REFLAT=-30:11:40.8218 +REFLONG=139:43:06.1094 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par39" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.301174e-03 1.488040e-04 1.909290e-06 1.055566e-07 3.085943e-06 6.905032e-04 +-4.925259e-03 6.217388e-03 1.144437e-02 1.016415e-02 7.371705e-03 4.736558e-03 + 2.819910e-03 1.619975e-03 +>ZXXI ROT=ZROT //14 +-1.010569e-03 3.784998e-05 6.674492e-07 -7.633187e-08 3.430905e-06 1.739800e-04 +-2.790853e-03 -8.658116e-03 -2.232744e-03 1.755008e-03 3.019247e-03 2.812655e-03 + 2.083844e-03 1.359082e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865749e+02 1.241400e+02 7.346934e+01 4.197590e+01 2.350537e+01 1.316938e+01 + 8.367400e+00 6.585183e+00 5.458235e+00 4.260478e+00 3.002320e+00 1.919325e+00 + 1.143554e+00 6.575585e-01 +>ZXYI ROT=ZROT //14 + 3.082122e+02 1.471555e+02 7.805623e+01 4.294175e+01 2.400289e+01 1.271678e+01 + 6.040772e+00 2.972223e+00 2.002974e+00 1.763614e+00 1.573376e+00 1.248862e+00 + 8.781300e-01 5.616148e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865714e+02 -1.241460e+02 -7.346928e+01 -4.197590e+01 -2.350537e+01 -1.316954e+01 +-8.366421e+00 -6.586619e+00 -5.460603e+00 -4.262462e+00 -3.003754e+00 -1.920256e+00 +-1.144113e+00 -6.578813e-01 +>ZYXI ROT=ZROT //14 +-3.082021e+02 -1.471554e+02 -7.805633e+01 -4.294175e+01 -2.400289e+01 -1.271688e+01 +-6.039989e+00 -2.970480e+00 -2.002661e+00 -1.764022e+00 -1.573973e+00 -1.249409e+00 +-8.785378e-01 -5.618828e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.307961e-03 -1.018227e-04 -7.905490e-07 1.936018e-07 -2.815356e-06 -6.610954e-04 + 4.951476e-03 -6.029777e-03 -1.135461e-02 -1.009088e-02 -7.298805e-03 -4.676337e-03 +-2.778869e-03 -1.594996e-03 +>ZYYI ROT=ZROT //14 + 1.364409e-04 -2.922331e-05 -1.081023e-07 -3.168798e-08 -1.324379e-06 -9.899939e-05 + 2.524463e-03 8.678906e-03 2.270363e-03 -1.741953e-03 -3.006699e-03 -2.792056e-03 +-2.061935e-03 -1.341778e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.862363e-03 -4.293732e-04 -3.736193e-05 3.074409e-07 6.414164e-08 1.379121e-05 +-2.084639e-04 7.440030e-05 9.218201e-04 8.638425e-04 6.002394e-04 3.776396e-04 + 2.233519e-04 1.280123e-04 +>TXI.EXP //14 + 8.933484e-06 5.185058e-05 1.127432e-05 5.334836e-07 5.940990e-08 -4.466348e-06 + 3.551588e-05 -6.996965e-04 -3.743416e-04 1.275320e-04 2.544097e-04 2.308031e-04 + 1.678344e-04 1.084298e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-6.659685e-03 2.907543e-04 1.352268e-05 4.385720e-07 -7.099764e-08 -1.482472e-05 + 2.228256e-04 -8.110401e-05 -9.711175e-04 -9.294194e-04 -6.541850e-04 -4.138312e-04 +-2.452585e-04 -1.407050e-04 +>TYI.EXP //14 + 1.609107e-04 -3.265526e-05 -3.523067e-06 -1.250651e-06 -4.006896e-08 4.993953e-06 +-3.874673e-05 7.404096e-04 4.059632e-04 -1.237021e-04 -2.692628e-04 -2.492186e-04 +-1.828360e-04 -1.185848e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par40.edi b/examples/data/NEConductor/par40.edi new file mode 100644 index 00000000..baeba8d2 --- /dev/null +++ b/examples/data/NEConductor/par40.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par40" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par40" +REFLAT=-30:14:07.1617 +REFLONG=139:43:22.9168 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par40" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-2.112400e-03 8.824503e-05 1.415643e-06 2.186549e-09 1.186660e-06 1.387305e-04 +-1.498497e-03 2.257987e-03 1.753504e-03 -9.568545e-05 -7.496740e-04 -7.303285e-04 +-5.124010e-04 -3.138236e-04 +>ZXXI ROT=ZROT //14 +-6.315281e-04 1.674502e-05 -1.097705e-06 -1.064432e-07 -4.348460e-07 -7.806254e-05 +-5.117249e-04 -1.682035e-03 1.299463e-03 1.232487e-03 4.513148e-04 -4.121070e-05 +-2.036996e-04 -1.948743e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865873e+02 1.241400e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317071e+01 + 8.359798e+00 6.598278e+00 5.478669e+00 4.279508e+00 3.016696e+00 1.928778e+00 + 1.149248e+00 6.608461e-01 +>ZXYI ROT=ZROT //14 + 3.082095e+02 1.471554e+02 7.805622e+01 4.294174e+01 2.400291e+01 1.271833e+01 + 6.031887e+00 2.958375e+00 1.999103e+00 1.766274e+00 1.578741e+00 1.254178e+00 + 8.822007e-01 5.643185e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866501e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317060e+01 +-8.360970e+00 -6.598573e+00 -5.472154e+00 -4.270552e+00 -3.009002e+00 -1.923390e+00 +-1.145899e+00 -6.588863e-01 +>ZYXI ROT=ZROT //14 +-3.082586e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271830e+01 +-6.031709e+00 -2.963094e+00 -2.003996e+00 -1.767129e+00 -1.576988e+00 -1.251696e+00 +-8.800461e-01 -5.627999e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.777300e-03 -1.331237e-04 -2.266694e-06 3.093478e-07 -6.585458e-07 -1.661556e-04 + 1.906643e-03 -2.301475e-03 -3.600150e-03 -2.210592e-03 -1.212354e-03 -6.503841e-04 +-3.498702e-04 -1.919986e-04 +>ZYYI ROT=ZROT //14 + 3.167620e-04 -4.742887e-05 -2.982550e-07 -4.638438e-09 4.920208e-07 9.035358e-05 + 4.150204e-04 3.110699e-03 -1.399343e-04 -1.090813e-03 -9.160574e-04 -5.939065e-04 +-3.480217e-04 -1.953367e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.778375e-02 2.349657e-04 -3.166104e-05 -7.095769e-07 -2.334539e-08 -8.287792e-06 + 1.687010e-04 4.425786e-05 -9.806593e-04 -9.994501e-04 -7.093241e-04 -4.482864e-04 +-2.653087e-04 -1.521734e-04 +>TXI.EXP //14 +-1.271817e-03 -4.274186e-05 4.088788e-07 1.171437e-06 7.358124e-09 6.353032e-06 +-7.613553e-05 7.216787e-04 5.033391e-04 -9.987133e-05 -2.818698e-04 -2.674575e-04 +-1.972940e-04 -1.282075e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.560471e-03 1.787283e-04 1.337468e-05 8.500445e-07 -3.348198e-08 -1.122289e-06 + 4.392884e-06 -1.390560e-05 -5.009019e-07 3.415285e-05 3.705224e-05 2.672296e-05 + 1.656419e-05 9.678281e-06 +>TYI.EXP //14 + 3.828836e-04 -1.851164e-05 -2.908569e-06 -1.409840e-06 -2.629519e-08 -3.675266e-07 + 7.185383e-06 -4.479938e-07 -2.814226e-05 -1.876391e-05 2.401208e-06 1.041227e-05 + 1.014837e-05 7.414491e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par41.edi b/examples/data/NEConductor/par41.edi new file mode 100644 index 00000000..6cfa93b6 --- /dev/null +++ b/examples/data/NEConductor/par41.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par41" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par41" +REFLAT=-30:13:50.922 +REFLONG=139:43:23.1268 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par41" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.999039e-03 8.544817e-05 1.221514e-06 9.581642e-09 1.569664e-06 2.094321e-04 +-1.900291e-03 2.786614e-03 2.514907e-03 5.530125e-04 -2.890948e-04 -4.400233e-04 +-3.417620e-04 -2.163961e-04 +>ZXXI ROT=ZROT //14 +-6.719746e-04 1.553171e-05 -8.447064e-07 -1.009562e-07 -2.652088e-07 -7.353427e-05 +-7.974889e-04 -2.235243e-03 1.207274e-03 1.369169e-03 6.547370e-04 1.398996e-04 +-7.330459e-05 -1.113622e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865859e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.317040e+01 + 8.361456e+00 6.595327e+00 5.474765e+00 4.276154e+00 3.014255e+00 1.927208e+00 + 1.148314e+00 6.603094e-01 +>ZXYI ROT=ZROT //14 + 3.082124e+02 1.471554e+02 7.805622e+01 4.294174e+01 2.400290e+01 1.271802e+01 + 6.033835e+00 2.961021e+00 1.999484e+00 1.765600e+00 1.577718e+00 1.253238e+00 + 8.815072e-01 5.638672e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866356e+02 -1.241504e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317031e+01 +-8.362535e+00 -6.595407e+00 -5.468966e+00 -4.268278e+00 -3.007496e+00 -1.922476e+00 +-1.145373e+00 -6.585886e-01 +>ZYXI ROT=ZROT //14 +-3.082479e+02 -1.471574e+02 -7.805624e+01 -4.294172e+01 -2.400290e+01 -1.271797e+01 +-6.033775e+00 -2.965228e+00 -2.003699e+00 -1.766312e+00 -1.576165e+00 -1.251054e+00 +-8.796136e-01 -5.625331e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.252694e-03 -1.254596e-04 -2.065584e-06 2.849125e-07 -1.167438e-06 -2.404024e-04 + 2.309920e-03 -2.911344e-03 -4.221019e-03 -2.623808e-03 -1.462078e-03 -7.899409e-04 +-4.257585e-04 -2.337065e-04 +>ZYYI ROT=ZROT //14 + 2.895927e-04 -4.371485e-05 -3.010759e-07 -4.920857e-09 4.321138e-07 8.093783e-05 + 7.458713e-04 3.560730e-03 -2.097715e-04 -1.270676e-03 -1.081177e-03 -7.103547e-04 +-4.195964e-04 -2.365191e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.665817e-02 1.899935e-04 -3.127061e-05 -8.428801e-07 -3.532608e-08 -1.102695e-05 + 1.941111e-04 -2.595536e-06 -1.013330e-03 -9.929667e-04 -6.969799e-04 -4.390468e-04 +-2.595690e-04 -1.488293e-04 +>TXI.EXP //14 +-1.130728e-03 -3.607202e-05 4.233572e-07 1.263910e-06 -3.749857e-09 5.873655e-06 +-6.457842e-05 7.568612e-04 4.718412e-04 -1.208312e-04 -2.860426e-04 -2.654064e-04 +-1.942633e-04 -1.258141e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.522787e-03 1.793492e-04 1.338320e-05 8.466281e-07 -3.265050e-08 -1.686550e-06 + 1.248311e-05 -1.320295e-05 -4.732625e-05 -1.181619e-05 5.198171e-06 6.834477e-06 + 4.854607e-06 2.977975e-06 +>TYI.EXP //14 + 3.754877e-04 -1.854789e-05 -2.907264e-06 -1.407319e-06 -2.834199e-08 -3.473378e-07 + 4.836601e-06 3.375895e-05 -5.798635e-06 -2.461280e-05 -1.102566e-05 -1.829228e-06 + 1.286179e-06 1.713215e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par410.edi b/examples/data/NEConductor/par410.edi new file mode 100644 index 00000000..ccefc702 --- /dev/null +++ b/examples/data/NEConductor/par410.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par410" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par410" +REFLAT=-30:11:24.7644 +REFLONG=139:43:25.0138 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par410" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-7.969174e-04 7.658260e-05 -4.004056e-07 6.009552e-08 2.168744e-06 6.800914e-04 +-4.655876e-03 6.131890e-03 1.055213e-02 9.068707e-03 6.463541e-03 4.112050e-03 + 2.435261e-03 1.395772e-03 +>ZXXI ROT=ZROT //14 +-6.053721e-04 1.089948e-05 5.152738e-07 -4.621475e-09 1.968521e-06 2.016281e-04 +-2.860723e-03 -7.947627e-03 -1.703092e-03 1.798647e-03 2.780359e-03 2.509062e-03 + 1.829302e-03 1.182554e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865842e+02 1.241401e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316945e+01 + 8.366583e+00 6.586150e+00 5.461017e+00 4.263528e+00 3.004775e+00 1.920993e+00 + 1.144576e+00 6.581528e-01 +>ZXYI ROT=ZROT //14 + 3.082164e+02 1.471555e+02 7.805621e+01 4.294174e+01 2.400289e+01 1.271688e+01 + 6.040249e+00 2.970207e+00 2.001837e+00 1.763695e+00 1.574109e+00 1.249710e+00 + 8.788209e-01 5.620882e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865652e+02 -1.241464e+02 -7.346937e+01 -4.197590e+01 -2.350537e+01 -1.316951e+01 +-8.366699e+00 -6.586900e+00 -5.459391e+00 -4.260692e+00 -3.002223e+00 -1.919185e+00 +-1.143448e+00 -6.574920e-01 +>ZYXI ROT=ZROT //14 +-3.082004e+02 -1.471560e+02 -7.805636e+01 -4.294174e+01 -2.400289e+01 -1.271695e+01 +-6.039684e+00 -2.971445e+00 -2.003731e+00 -1.764240e+00 -1.573640e+00 -1.248919e+00 +-8.781105e-01 -5.615813e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.319184e-03 -1.209960e-04 -9.314591e-07 1.793680e-07 -3.504619e-06 -6.914217e-04 + 5.110249e-03 -6.228870e-03 -1.178714e-02 -1.050768e-02 -7.625958e-03 -4.899557e-03 +-2.916486e-03 -1.675320e-03 +>ZYYI ROT=ZROT //14 + 1.493670e-04 -3.445648e-05 -9.276302e-08 -6.683874e-09 -1.875040e-06 -1.122514e-04 + 2.630330e-03 9.002216e-03 2.387788e-03 -1.781201e-03 -3.112861e-03 -2.906849e-03 +-2.154768e-03 -1.405492e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.140232e-03 -5.090638e-04 -3.648211e-05 5.340959e-07 8.945714e-08 1.657549e-05 +-2.483984e-04 8.689116e-05 1.104383e-03 1.032860e-03 7.166565e-04 4.505173e-04 + 2.663504e-04 1.526410e-04 +>TXI.EXP //14 + 1.590103e-04 6.281504e-05 1.235071e-05 3.626488e-07 4.661665e-08 -5.315917e-06 + 4.278580e-05 -8.381372e-04 -4.475350e-04 1.538614e-04 3.047482e-04 2.758719e-04 + 2.003801e-04 1.293800e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.268296e-03 1.843560e-04 1.344250e-05 8.266493e-07 -5.666072e-08 -1.072515e-05 + 1.669858e-04 -5.731751e-05 -7.232474e-04 -7.124312e-04 -5.095584e-04 -3.245674e-04 +-1.928863e-04 -1.107701e-04 +>TYI.EXP //14 + 3.277433e-04 -1.891791e-05 -2.902384e-06 -1.393224e-06 -3.239710e-08 4.424978e-06 +-3.232595e-05 5.528744e-04 3.173447e-04 -8.112587e-05 -2.018100e-04 -1.918036e-04 +-1.423214e-04 -9.280595e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par42.edi b/examples/data/NEConductor/par42.edi new file mode 100644 index 00000000..dde46f1b --- /dev/null +++ b/examples/data/NEConductor/par42.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par42" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par42" +REFLAT=-30:13:34.6823 +REFLONG=139:43:23.3366 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par42" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.882680e-03 8.343838e-05 1.024788e-06 1.759330e-08 2.053433e-06 3.007214e-04 +-2.395871e-03 3.446310e-03 3.572061e-03 1.510995e-03 4.154471e-04 1.432398e-05 +-7.116990e-05 -6.097114e-05 +>ZXXI ROT=ZROT //14 +-6.997938e-04 1.423585e-05 -6.293223e-07 -9.415458e-08 1.184445e-08 -5.249211e-05 +-1.177516e-03 -2.992424e-03 1.014018e-03 1.524488e-03 9.364642e-04 4.070864e-04 + 1.258644e-04 1.880941e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865851e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.317008e+01 + 8.363315e+00 6.591823e+00 5.469993e+00 4.271966e+00 3.011177e+00 1.925216e+00 + 1.147124e+00 6.596250e-01 +>ZXYI ROT=ZROT //14 + 3.082144e+02 1.471554e+02 7.805622e+01 4.294174e+01 2.400290e+01 1.271760e+01 + 6.036258e+00 2.964192e+00 2.000046e+00 1.764821e+00 1.576465e+00 1.252066e+00 + 8.806335e-01 5.632954e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866237e+02 -1.241492e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317001e+01 +-8.364106e+00 -6.591870e+00 -5.465512e+00 -4.265835e+00 -3.005891e+00 -1.921506e+00 +-1.144816e+00 -6.582737e-01 +>ZYXI ROT=ZROT //14 +-3.082387e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271753e+01 +-6.036249e+00 -2.967427e+00 -2.003325e+00 -1.765404e+00 -1.575270e+00 -1.250364e+00 +-8.791522e-01 -5.622497e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.792054e-03 -1.190782e-04 -1.892904e-06 2.623103e-07 -1.824692e-06 -3.300881e-04 + 2.754513e-03 -3.608043e-03 -4.985885e-03 -3.184228e-03 -1.824422e-03 -1.003331e-03 +-5.459565e-04 -3.009455e-04 +>ZYYI ROT=ZROT //14 + 2.585900e-04 -4.053414e-05 -2.927399e-07 -3.683959e-09 1.582863e-07 5.411544e-05 + 1.165028e-03 4.092505e-03 -2.396516e-04 -1.464816e-03 -1.286507e-03 -8.680300e-04 +-5.228801e-04 -2.987457e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.542643e-02 1.338946e-04 -3.132763e-05 -9.071848e-07 -4.736309e-08 -1.312526e-05 + 2.066515e-04 -4.535735e-05 -9.893531e-04 -9.374183e-04 -6.515569e-04 -4.091769e-04 +-2.416605e-04 -1.385142e-04 +>TXI.EXP //14 +-9.898819e-04 -2.777022e-05 9.124307e-07 1.301837e-06 -1.683314e-08 4.678091e-06 +-4.814253e-05 7.470269e-04 4.204170e-04 -1.323486e-04 -2.751766e-04 -2.503526e-04 +-1.819463e-04 -1.174680e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.487940e-03 1.799355e-04 1.339129e-05 8.435165e-07 -3.214602e-08 -2.587279e-06 + 2.575096e-05 -1.619996e-05 -1.130942e-04 -7.453994e-05 -3.828184e-05 -2.040371e-05 +-1.121407e-05 -6.224634e-06 +>TYI.EXP //14 + 3.686519e-04 -1.858243e-05 -2.906101e-06 -1.405067e-06 -3.051139e-08 -2.816046e-07 + 2.156417e-06 8.300848e-05 2.259583e-05 -3.342571e-05 -2.948100e-05 -1.856725e-05 +-1.084535e-05 -6.103832e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par43.edi b/examples/data/NEConductor/par43.edi new file mode 100644 index 00000000..b89146a4 --- /dev/null +++ b/examples/data/NEConductor/par43.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par43" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par43" +REFLAT=-30:13:18.4426 +REFLONG=139:43:23.5464 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par43" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.762266e-03 8.203857e-05 8.329954e-07 2.410072e-08 2.668930e-06 4.104889e-04 +-2.984006e-03 4.243385e-03 4.956563e-03 2.819578e-03 1.399839e-03 6.580656e-04 + 3.152042e-04 1.617311e-04 +>ZXXI ROT=ZROT //14 +-7.164266e-04 1.297335e-05 -4.502656e-07 -8.484287e-08 4.119516e-07 -8.938525e-06 +-1.658695e-03 -3.973973e-03 7.008186e-04 1.695326e-03 1.304645e-03 7.718955e-04 + 4.039090e-04 2.027955e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865846e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316976e+01 + 8.365273e+00 6.587919e+00 5.464555e+00 4.267119e+00 3.007587e+00 1.922882e+00 + 1.145726e+00 6.588203e-01 +>ZXYI ROT=ZROT //14 + 3.082154e+02 1.471554e+02 7.805622e+01 4.294174e+01 2.400289e+01 1.271706e+01 + 6.039042e+00 2.967750e+00 2.000768e+00 1.763975e+00 1.575036e+00 1.250709e+00 + 8.796152e-01 5.626261e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866137e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316975e+01 +-8.365577e+00 -6.588182e+00 -5.461978e+00 -4.263350e+00 -3.004265e+00 -1.920526e+00 +-1.144253e+00 -6.579563e-01 +>ZYXI ROT=ZROT //14 +-3.082307e+02 -1.471560e+02 -7.805624e+01 -4.294173e+01 -2.400289e+01 -1.271700e+01 +-6.038967e+00 -2.969578e+00 -2.002908e+00 -1.764457e+00 -1.574352e+00 -1.249662e+00 +-8.786845e-01 -5.619632e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.392742e-03 -1.140210e-04 -1.743942e-06 2.421432e-07 -2.554779e-06 -4.309786e-04 + 3.232883e-03 -4.377651e-03 -5.922613e-03 -3.937593e-03 -2.340812e-03 -1.320286e-03 +-7.291649e-04 -4.047124e-04 +>ZYYI ROT=ZROT //14 + 2.263589e-04 -3.787998e-05 -2.766265e-07 -1.295508e-09 -3.969725e-07 6.577951e-06 + 1.662711e-03 4.727320e-03 -1.996982e-04 -1.664849e-03 -1.539395e-03 -1.079599e-03 +-6.694535e-04 -3.903632e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.410538e-02 6.808989e-05 -3.185874e-05 -8.951574e-07 -5.049925e-08 -1.370942e-05 + 1.982151e-04 -7.398467e-05 -8.872439e-04 -8.180402e-04 -5.640751e-04 -3.533273e-04 +-2.084866e-04 -1.194670e-04 +>TXI.EXP //14 +-8.492326e-04 -1.813578e-05 1.837025e-06 1.289263e-06 -4.368178e-08 3.022223e-06 +-2.995194e-05 6.752276e-04 3.473405e-04 -1.288515e-04 -2.439114e-04 -2.183880e-04 +-1.577750e-04 -1.015924e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.455548e-03 1.804948e-04 1.339894e-05 8.407007e-07 -3.263492e-08 -3.923093e-06 + 4.511113e-05 -2.420327e-05 -1.990765e-04 -1.552344e-04 -9.438329e-05 -5.567078e-05 +-3.205727e-05 -1.817086e-05 +>TYI.EXP //14 + 3.623209e-04 -1.861629e-05 -2.905080e-06 -1.403078e-06 -3.337374e-08 -1.733115e-07 +-3.637842e-07 1.483429e-04 5.711990e-05 -4.532224e-05 -5.328055e-05 -4.015312e-05 +-2.652978e-05 -1.623041e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par44.edi b/examples/data/NEConductor/par44.edi new file mode 100644 index 00000000..6ccb9544 --- /dev/null +++ b/examples/data/NEConductor/par44.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par44" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par44" +REFLAT=-30:13:02.2029 +REFLONG=139:43:23.7562 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par44" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.636988e-03 8.106229e-05 6.467991e-07 2.819459e-08 3.285839e-06 5.308745e-04 +-3.637470e-03 5.146021e-03 6.627914e-03 4.449409e-03 2.645733e-03 1.480636e-03 + 8.114800e-04 4.484382e-04 +>ZXXI ROT=ZROT //14 +-7.233330e-04 1.185025e-05 -3.001453e-07 -7.295690e-08 1.070092e-06 5.892030e-05 +-2.222552e-03 -5.149956e-03 2.678863e-04 1.871245e-03 1.748350e-03 1.226182e-03 + 7.556173e-04 4.375052e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865844e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316947e+01 + 8.367163e+00 6.583992e+00 5.458977e+00 4.262085e+00 3.003838e+00 1.920434e+00 + 1.144258e+00 6.579742e-01 +>ZXYI ROT=ZROT //14 + 3.082160e+02 1.471554e+02 7.805622e+01 4.294174e+01 2.400288e+01 1.271648e+01 + 6.041905e+00 2.971365e+00 2.001579e+00 1.763141e+00 1.573569e+00 1.249300e+00 + 8.785515e-01 5.619248e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866052e+02 -1.241472e+02 -7.346920e+01 -4.197589e+01 -2.350538e+01 -1.316953e+01 +-8.366841e+00 -6.584707e+00 -5.458667e+00 -4.261014e+00 -3.002738e+00 -1.919606e+00 +-1.143725e+00 -6.576580e-01 +>ZYXI ROT=ZROT //14 +-3.082239e+02 -1.471555e+02 -7.805625e+01 -4.294174e+01 -2.400289e+01 -1.271644e+01 +-6.041619e+00 -2.971527e+00 -2.002515e+00 -1.763567e+00 -1.573488e+00 -1.249002e+00 +-8.782452e-01 -5.616940e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.053723e-03 -1.103198e-04 -1.613178e-06 2.245538e-07 -3.141008e-06 -5.353923e-04 + 3.731973e-03 -5.185612e-03 -7.039152e-03 -4.915270e-03 -3.043860e-03 -1.765611e-03 +-9.914056e-04 -5.545325e-04 +>ZYYI ROT=ZROT //14 + 1.949527e-04 -3.574404e-05 -2.550447e-07 1.879636e-09 -1.289831e-06 -5.998970e-05 + 2.207547e-03 5.477483e-03 -5.824245e-05 -1.856628e-03 -1.841540e-03 -1.353669e-03 +-8.683850e-04 -5.182687e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.270802e-02 -5.776616e-06 -3.280235e-05 -8.080904e-07 -3.390286e-08 -1.198962e-05 + 1.626569e-04 -7.912304e-05 -6.922953e-04 -6.255671e-04 -4.291572e-04 -2.683720e-04 +-1.582569e-04 -9.067393e-05 +>TXI.EXP //14 +-7.085751e-04 -7.459201e-06 3.126324e-06 1.232252e-06 -3.263829e-08 1.409533e-06 +-1.415353e-05 5.302239e-04 2.529294e-04 -1.060539e-04 -1.886378e-04 -1.670531e-04 +-1.201962e-04 -7.725535e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.425252e-03 1.810348e-04 1.340618e-05 8.381806e-07 -3.479701e-08 -5.716004e-06 + 7.038993e-05 -3.748783e-05 -3.030012e-04 -2.523783e-04 -1.623498e-04 -9.857796e-05 +-5.746622e-05 -3.274569e-05 +>TYI.EXP //14 + 3.564401e-04 -1.865044e-05 -2.904211e-06 -1.401334e-06 -3.673530e-08 -1.492362e-08 +-2.340531e-06 2.280032e-04 9.711079e-05 -5.964881e-05 -8.182451e-05 -6.621438e-05 +-4.555480e-05 -2.854843e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par46.edi b/examples/data/NEConductor/par46.edi new file mode 100644 index 00000000..e32d6883 --- /dev/null +++ b/examples/data/NEConductor/par46.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par46" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par46" +REFLAT=-30:12:29.7235 +REFLONG=139:43:24.1756 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par46" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.371141e-03 7.972983e-05 2.782327e-07 3.836951e-08 4.406254e-06 7.423654e-04 +-4.853161e-03 6.837055e-03 1.009307e-02 7.974282e-03 5.395449e-03 3.317327e-03 + 1.926496e-03 1.094358e-03 +>ZXXI ROT=ZROT //14 +-7.119492e-04 1.032547e-05 -4.346451e-08 -4.584690e-08 2.454506e-06 2.272022e-04 +-3.311743e-03 -7.574432e-03 -7.928629e-04 2.147360e-03 2.666218e-03 2.208367e-03 + 1.531238e-03 9.605113e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865843e+02 1.241400e+02 7.346932e+01 4.197590e+01 2.350539e+01 1.316908e+01 + 8.369776e+00 6.578535e+00 5.450940e+00 4.254705e+00 2.998295e+00 1.916802e+00 + 1.142073e+00 6.567134e-01 +>ZXYI ROT=ZROT //14 + 3.082164e+02 1.471555e+02 7.805621e+01 4.294174e+01 2.400287e+01 1.271563e+01 + 6.045924e+00 2.976565e+00 2.002908e+00 1.762014e+00 1.571455e+00 1.247236e+00 + 8.769808e-01 5.608846e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865907e+02 -1.241461e+02 -7.346915e+01 -4.197590e+01 -2.350538e+01 -1.316928e+01 +-8.368429e+00 -6.580259e+00 -5.454253e+00 -4.257774e+00 -3.000580e+00 -1.918290e+00 +-1.142966e+00 -6.572278e-01 +>ZYXI ROT=ZROT //14 +-3.082130e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400288e+01 -1.271571e+01 +-6.045074e+00 -2.974104e+00 -2.002150e+00 -1.762445e+00 -1.572329e+00 -1.248088e+00 +-8.776261e-01 -5.613106e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.556671e-03 -1.072351e-04 -1.391041e-06 1.924074e-07 -4.204769e-06 -7.121762e-04 + 4.686784e-03 -6.621367e-03 -9.587515e-03 -7.416471e-03 -4.948119e-03 -3.014721e-03 +-1.741600e-03 -9.869651e-04 +>ZYYI ROT=ZROT //14 + 1.421328e-04 -3.305247e-05 -2.031188e-07 6.948155e-09 -2.643864e-06 -2.028646e-04 + 3.172026e-03 7.219917e-03 5.950998e-04 -2.130092e-03 -2.530238e-03 -2.052879e-03 +-1.405365e-03 -8.746216e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.721734e-03 -1.703505e-04 -3.533555e-05 -4.473675e-07 -5.624259e-09 -1.415039e-06 + 1.497011e-05 -1.305203e-05 -5.403515e-05 -4.872058e-05 -3.536312e-05 -2.255053e-05 +-1.335087e-05 -7.698835e-06 +>TXI.EXP //14 +-4.258418e-04 1.589916e-05 6.407004e-06 1.013882e-06 -1.860792e-08 -2.537424e-07 + 1.459779e-06 4.532798e-05 1.473014e-05 -6.954773e-06 -1.422413e-05 -1.342262e-05 +-9.936111e-06 -6.480821e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.369555e-03 1.820897e-04 1.341952e-05 8.338588e-07 -3.635024e-08 -9.965000e-06 + 1.292781e-04 -7.141557e-05 -5.305691e-04 -4.700471e-04 -3.176542e-04 -1.975561e-04 +-1.163131e-04 -6.655306e-05 +>TYI.EXP //14 + 3.458209e-04 -1.872349e-05 -2.902950e-06 -1.398382e-06 -4.001762e-08 6.783844e-07 +-5.693611e-06 4.037868e-04 1.860479e-04 -8.784499e-05 -1.442902e-04 -1.249496e-04 +-8.903818e-05 -5.690488e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par47.edi b/examples/data/NEConductor/par47.edi new file mode 100644 index 00000000..860769ee --- /dev/null +++ b/examples/data/NEConductor/par47.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par47" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par47" +REFLAT=-30:12:13.4837 +REFLONG=139:43:24.3852 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par47" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.231490e-03 7.912943e-05 9.371560e-08 4.506707e-08 4.296830e-06 7.984841e-04 +-5.214850e-03 7.299295e-03 1.129373e-02 9.283824e-03 6.447841e-03 4.031919e-03 + 2.364055e-03 1.348783e-03 +>ZXXI ROT=ZROT //14 +-6.949060e-04 1.000236e-05 8.244005e-08 -3.275108e-08 2.760660e-06 2.850986e-04 +-3.613142e-03 -8.418377e-03 -1.265512e-03 2.188917e-03 2.983107e-03 2.572824e-03 + 1.827671e-03 1.163392e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865842e+02 1.241401e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316901e+01 + 8.370060e+00 6.578165e+00 5.450191e+00 4.253947e+00 2.997703e+00 1.916404e+00 + 1.141832e+00 6.565731e-01 +>ZXYI ROT=ZROT //14 + 3.082165e+02 1.471555e+02 7.805622e+01 4.294174e+01 2.400287e+01 1.271560e+01 + 6.046170e+00 2.977091e+00 2.003135e+00 1.761954e+00 1.571259e+00 1.247025e+00 + 8.768134e-01 5.607714e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865841e+02 -1.241458e+02 -7.346918e+01 -4.197590e+01 -2.350539e+01 -1.316922e+01 +-8.368640e+00 -6.580037e+00 -5.453796e+00 -4.257296e+00 -3.000211e+00 -1.918049e+00 +-1.142821e+00 -6.571444e-01 +>ZYXI ROT=ZROT //14 +-3.082087e+02 -1.471550e+02 -7.805629e+01 -4.294175e+01 -2.400288e+01 -1.271570e+01 +-6.045201e+00 -2.974434e+00 -2.002304e+00 -1.762411e+00 -1.572201e+00 -1.247954e+00 +-8.775226e-01 -5.612419e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.399674e-03 -1.079992e-04 -1.288285e-06 1.787221e-07 -3.960894e-06 -7.639801e-04 + 5.053449e-03 -7.034645e-03 -1.073851e-02 -8.687018e-03 -5.965208e-03 -3.701348e-03 +-2.160434e-03 -1.230061e-03 +>ZYYI ROT=ZROT //14 + 1.257152e-04 -3.251553e-05 -1.752054e-07 7.431968e-09 -3.626958e-06 -2.401004e-04 + 3.411196e-03 8.045658e-03 1.071196e-03 -2.165380e-03 -2.839586e-03 -2.406800e-03 +-1.691336e-03 -1.069464e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.146080e-03 -2.570899e-04 -3.650237e-05 -2.044022e-07 3.476151e-09 5.544091e-06 +-7.623925e-05 3.800158e-05 3.188976e-04 2.827420e-04 1.902960e-04 1.182572e-04 + 6.964897e-05 3.982793e-05 +>TXI.EXP //14 +-2.828651e-04 2.803007e-05 8.165635e-06 8.664736e-07 6.085978e-09 -7.587370e-07 + 5.224921e-06 -2.398037e-04 -1.153223e-04 5.324371e-05 8.683681e-05 7.493790e-05 + 5.333211e-05 3.409428e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.343478e-03 1.826220e-04 1.342571e-05 8.318785e-07 -4.293255e-08 -1.164053e-05 + 1.542452e-04 -8.330654e-05 -6.272595e-04 -5.690144e-04 -3.907597e-04 -2.448139e-04 +-1.445658e-04 -8.281798e-05 +>TYI.EXP //14 + 3.409815e-04 -1.876439e-05 -2.902567e-06 -1.397028e-06 -3.879097e-08 1.385721e-06 +-9.031080e-06 4.789130e-04 2.291705e-04 -9.623980e-05 -1.712211e-04 -1.518742e-04 +-1.094704e-04 -7.038499e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par48.edi b/examples/data/NEConductor/par48.edi new file mode 100644 index 00000000..50278b2a --- /dev/null +++ b/examples/data/NEConductor/par48.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par48" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par48" +REFLAT=-30:11:57.244 +REFLONG=139:43:24.5948 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par48" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-1.088503e-03 7.845082e-05 -8.630110e-08 5.112560e-08 3.776063e-06 8.056581e-04 +-5.303105e-03 7.326732e-03 1.178604e-02 9.929450e-03 7.001334e-03 4.420492e-03 + 2.606042e-03 1.490511e-03 +>ZXXI ROT=ZROT //14 +-6.710219e-04 9.991511e-06 2.154323e-07 -2.139358e-08 2.784491e-06 2.992336e-04 +-3.629227e-03 -8.775465e-03 -1.593000e-03 2.139026e-03 3.111682e-03 2.751810e-03 + 1.983064e-03 1.273053e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865842e+02 1.241401e+02 7.346933e+01 4.197590e+01 2.350538e+01 1.316904e+01 + 8.369542e+00 6.579591e+00 5.452003e+00 4.255509e+00 2.998842e+00 1.917138e+00 + 1.142269e+00 6.568246e-01 +>ZXYI ROT=ZROT //14 + 3.082165e+02 1.471555e+02 7.805621e+01 4.294174e+01 2.400287e+01 1.271585e+01 + 6.045079e+00 2.975981e+00 2.002982e+00 1.762273e+00 1.571736e+00 1.247464e+00 + 8.771374e-01 5.609826e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865777e+02 -1.241458e+02 -7.346921e+01 -4.197591e+01 -2.350538e+01 -1.316923e+01 +-8.368415e+00 -6.581264e+00 -5.454640e+00 -4.257693e+00 -3.000397e+00 -1.918135e+00 +-1.142862e+00 -6.571656e-01 +>ZYXI ROT=ZROT //14 +-3.082053e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400288e+01 -1.271595e+01 +-6.044165e+00 -2.974050e+00 -2.002675e+00 -1.762754e+00 -1.572412e+00 -1.248068e+00 +-8.775794e-01 -5.612696e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.305863e-03 -1.104205e-04 -1.180086e-06 1.710983e-07 -4.497081e-06 -7.798384e-04 + 5.271708e-03 -7.114726e-03 -1.156267e-02 -9.717839e-03 -6.828053e-03 -4.298105e-03 +-2.529093e-03 -1.445222e-03 +>ZYYI ROT=ZROT //14 + 1.199016e-04 -3.253385e-05 -1.466672e-07 6.455469e-09 -3.099104e-06 -2.339255e-04 + 3.393248e-03 8.678451e-03 1.573155e-03 -2.114069e-03 -3.059236e-03 -2.692691e-03 +-1.933306e-03 -1.238069e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.521714e-03 -3.439759e-04 -3.726484e-05 5.476438e-08 3.454580e-08 1.156619e-05 +-1.580745e-04 7.879009e-05 6.604732e-04 5.926657e-04 4.034649e-04 2.518307e-04 + 1.485124e-04 8.501341e-05 +>TXI.EXP //14 +-1.381170e-04 4.009069e-05 9.832219e-06 7.030822e-07 3.787533e-08 -1.740249e-06 + 1.219035e-05 -5.012234e-04 -2.409642e-04 1.050409e-04 1.799256e-04 1.577161e-04 + 1.130415e-04 7.252558e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.318136e-03 1.831701e-04 1.343161e-05 8.299888e-07 -5.141894e-08 -1.242349e-05 + 1.700998e-04 -8.568704e-05 -6.949178e-04 -6.462258e-04 -4.502157e-04 -2.838280e-04 +-1.680186e-04 -9.634685e-05 +>TYI.EXP //14 + 3.363880e-04 -1.880961e-05 -2.902346e-06 -1.395700e-06 -3.443091e-08 2.361393e-06 +-1.480543e-05 5.316175e-04 2.670299e-04 -9.789824e-05 -1.906865e-04 -1.730623e-04 +-1.260313e-04 -8.145382e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par49.edi b/examples/data/NEConductor/par49.edi new file mode 100644 index 00000000..6b3f405c --- /dev/null +++ b/examples/data/NEConductor/par49.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par49" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par49" +REFLAT=-30:11:41.0042 +REFLONG=139:43:24.8043 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par49" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 +-9.432420e-04 7.762097e-05 -2.543769e-07 5.570027e-08 2.861310e-06 7.632210e-04 +-5.101575e-03 6.905105e-03 1.149831e-02 9.823629e-03 6.982348e-03 4.431929e-03 + 2.620797e-03 1.501046e-03 +>ZXXI ROT=ZROT //14 +-6.409475e-04 1.029372e-05 3.591226e-07 -1.224676e-08 2.386720e-06 2.668650e-04 +-3.353918e-03 -8.593110e-03 -1.736005e-03 2.001152e-03 3.033230e-03 2.720980e-03 + 1.976733e-03 1.275041e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865842e+02 1.241401e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316919e+01 + 8.368313e+00 6.582453e+00 5.455893e+00 4.258961e+00 3.001393e+00 1.918795e+00 + 1.143260e+00 6.573951e-01 +>ZXYI ROT=ZROT //14 + 3.082165e+02 1.471555e+02 7.805621e+01 4.294174e+01 2.400288e+01 1.271632e+01 + 6.042946e+00 2.973515e+00 2.002507e+00 1.762894e+00 1.572761e+00 1.248431e+00 + 8.778614e-01 5.614578e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865714e+02 -1.241460e+02 -7.346928e+01 -4.197590e+01 -2.350538e+01 -1.316932e+01 +-8.367754e+00 -6.583689e+00 -5.456610e+00 -4.258884e+00 -3.001101e+00 -1.918532e+00 +-1.143081e+00 -6.572869e-01 +>ZYXI ROT=ZROT //14 +-3.082025e+02 -1.471554e+02 -7.805633e+01 -4.294175e+01 -2.400288e+01 -1.271641e+01 +-6.042199e+00 -2.973011e+00 -2.003184e+00 -1.763401e+00 -1.572919e+00 -1.248407e+00 +-8.777852e-01 -5.613884e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.277747e-03 -1.146537e-04 -1.060941e-06 1.714430e-07 -3.492166e-06 -7.552014e-04 + 5.295943e-03 -6.831718e-03 -1.192484e-02 -1.034797e-02 -7.403423e-03 -4.713460e-03 +-2.791248e-03 -1.599630e-03 +>ZYYI ROT=ZROT //14 + 1.272346e-04 -3.314561e-05 -1.183967e-07 2.349338e-09 -2.197390e-06 -1.864337e-04 + 3.113893e-03 9.013131e-03 2.030438e-03 -1.980038e-03 -3.153326e-03 -2.865731e-03 +-2.093863e-03 -1.354544e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.852107e-03 -4.287572e-04 -3.734894e-05 3.084481e-07 5.389863e-08 1.539387e-05 +-2.174790e-04 9.640663e-05 9.290871e-04 8.486486e-04 5.830629e-04 3.652119e-04 + 2.156400e-04 1.235140e-04 +>TXI.EXP //14 + 8.975861e-06 5.178940e-05 1.127225e-05 5.319216e-07 6.138498e-08 -3.361808e-06 + 2.499073e-05 -7.062085e-04 -3.537906e-04 1.396321e-04 2.543415e-04 2.262930e-04 + 1.632238e-04 1.050438e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-8.293191e-03 1.837441e-04 1.343720e-05 8.282417e-07 -5.396265e-08 -1.208750e-05 + 1.742982e-04 -7.659590e-05 -7.267465e-04 -6.945430e-04 -4.904494e-04 -3.108916e-04 +-1.844280e-04 -1.058420e-04 +>TYI.EXP //14 + 3.319924e-04 -1.886034e-05 -2.902284e-06 -1.394414e-06 -3.395854e-08 3.459839e-06 +-2.297220e-05 5.562749e-04 2.969489e-04 -9.245033e-05 -2.008676e-04 -1.865324e-04 +-1.371555e-04 -8.905826e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par50.edi b/examples/data/NEConductor/par50.edi new file mode 100644 index 00000000..e9045689 --- /dev/null +++ b/examples/data/NEConductor/par50.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par50" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par50" +REFLAT=-30:14:07.3436 +REFLONG=139:43:41.6195 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par50" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.041240e-03 9.258767e-05 -2.772569e-06 -7.730726e-08 1.870261e-07 1.715614e-04 +-1.816618e-03 2.399079e-03 2.972149e-03 1.414019e-03 5.021935e-04 1.304054e-04 + 1.768608e-05 -4.861665e-06 +>ZXXI ROT=ZROT //14 +-1.827531e-04 1.514394e-05 -2.482488e-06 -3.744842e-08 -7.662136e-07 -7.740003e-05 +-5.532952e-04 -2.581514e-03 5.708695e-04 1.171940e-03 7.807338e-04 3.773544e-04 + 1.471686e-04 4.842439e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865969e+02 1.241403e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317066e+01 + 8.360044e+00 6.597868e+00 5.478184e+00 4.279140e+00 3.016444e+00 1.928621e+00 + 1.149156e+00 6.607937e-01 +>ZXYI ROT=ZROT //14 + 3.082145e+02 1.471555e+02 7.805620e+01 4.294174e+01 2.400291e+01 1.271830e+01 + 6.032120e+00 2.958723e+00 1.999101e+00 1.766165e+00 1.578617e+00 1.254075e+00 + 8.821284e-01 5.642729e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866500e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317055e+01 +-8.361368e+00 -6.598102e+00 -5.471002e+00 -4.269347e+00 -3.008046e+00 -1.922744e+00 +-1.145504e+00 -6.586565e-01 +>ZYXI ROT=ZROT //14 +-3.082589e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271827e+01 +-6.031960e+00 -2.963937e+00 -2.004402e+00 -1.767064e+00 -1.576688e+00 -1.251362e+00 +-8.797765e-01 -5.626160e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.948855e-03 -1.570844e-04 -2.662449e-06 2.856685e-07 -7.119909e-07 -2.056535e-04 + 2.288282e-03 -2.471769e-03 -5.070647e-03 -4.031149e-03 -2.727966e-03 -1.696468e-03 +-9.956377e-04 -5.687975e-04 +>ZYYI ROT=ZROT //14 + 3.203262e-04 -5.657358e-05 -3.864619e-07 2.901707e-08 4.745070e-07 8.945887e-05 + 4.604675e-04 4.202564e-03 7.365259e-04 -1.014096e-03 -1.309160e-03 -1.098242e-03 +-7.731122e-04 -4.910454e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.778214e-02 2.353945e-04 -3.167589e-05 -7.099365e-07 -2.003833e-08 -9.006581e-06 + 1.831911e-04 4.265820e-05 -1.050983e-03 -1.072310e-03 -7.625248e-04 -4.824111e-04 +-2.856359e-04 -1.638585e-04 +>TXI.EXP //14 +-1.273065e-03 -4.277029e-05 4.098686e-07 1.171358e-06 6.666499e-09 6.884577e-06 +-8.130387e-05 7.755893e-04 5.379741e-04 -1.058432e-04 -3.018079e-04 -2.871598e-04 +-2.121215e-04 -1.379433e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.013192e-02 7.191853e-05 1.305971e-05 1.204771e-06 -3.959223e-08 2.990051e-07 +-2.588321e-05 -2.198364e-05 1.746904e-04 2.142515e-04 1.654747e-04 1.080944e-04 + 6.478358e-05 3.734150e-05 +>TYI.EXP //14 + 5.538971e-04 -4.672309e-06 -2.254737e-06 -1.526221e-06 -2.414083e-08 -1.574161e-06 + 2.137404e-05 -1.295238e-04 -1.193373e-04 -1.729564e-06 5.282511e-05 5.864916e-05 + 4.586677e-05 3.067012e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par51.edi b/examples/data/NEConductor/par51.edi new file mode 100644 index 00000000..ea907e9e --- /dev/null +++ b/examples/data/NEConductor/par51.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par51" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par51" +REFLAT=-30:13:51.1039 +REFLONG=139:43:41.8285 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par51" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.031638e-03 8.102063e-05 -2.791677e-06 -6.723015e-08 7.799180e-07 2.537693e-04 +-2.289406e-03 3.036073e-03 3.898801e-03 2.212208e-03 1.074521e-03 4.934686e-04 + 2.318468e-04 1.176069e-04 +>ZXXI ROT=ZROT //14 +-2.057067e-04 1.100741e-05 -2.148667e-06 -3.134883e-08 -8.787068e-07 -6.489809e-05 +-8.997656e-04 -3.254630e-03 4.518814e-04 1.331957e-03 1.027436e-03 6.004085e-04 + 3.092155e-04 1.527607e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865955e+02 1.241403e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317035e+01 + 8.361772e+00 6.594752e+00 5.474111e+00 4.275660e+00 3.013918e+00 1.926999e+00 + 1.148192e+00 6.602402e-01 +>ZXYI ROT=ZROT //14 + 3.082174e+02 1.471555e+02 7.805620e+01 4.294174e+01 2.400290e+01 1.271798e+01 + 6.034197e+00 2.961471e+00 1.999470e+00 1.765449e+00 1.577549e+00 1.253099e+00 + 8.814110e-01 5.638067e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866354e+02 -1.241504e+02 -7.346937e+01 -4.197589e+01 -2.350537e+01 -1.317023e+01 +-8.363044e+00 -6.594726e+00 -5.467513e+00 -4.266799e+00 -3.006335e+00 -1.921695e+00 +-1.144897e+00 -6.583124e-01 +>ZYXI ROT=ZROT //14 +-3.082482e+02 -1.471574e+02 -7.805623e+01 -4.294172e+01 -2.400290e+01 -1.271791e+01 +-6.034176e+00 -2.966270e+00 -2.004150e+00 -1.766204e+00 -1.575786e+00 -1.250643e+00 +-8.792858e-01 -5.623109e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.397262e-03 -1.473047e-04 -2.429478e-06 2.624078e-07 -1.291001e-06 -2.942870e-04 + 2.782711e-03 -3.212878e-03 -5.913858e-03 -4.654527e-03 -3.138376e-03 -1.942248e-03 +-1.135636e-03 -6.475448e-04 +>ZYYI ROT=ZROT //14 + 2.933368e-04 -5.191610e-05 -3.778292e-07 2.806454e-08 3.633509e-07 7.079088e-05 + 8.620066e-04 4.815633e-03 7.143137e-04 -1.219604e-03 -1.532143e-03 -1.273488e-03 +-8.901546e-04 -5.625603e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.665651e-02 1.903867e-04 -3.128394e-05 -8.431683e-07 -3.278661e-08 -1.210694e-05 + 2.130272e-04 -8.236278e-06 -1.097169e-03 -1.077504e-03 -7.583370e-04 -4.783520e-04 +-2.829752e-04 -1.622834e-04 +>TXI.EXP //14 +-1.131795e-03 -3.609848e-05 4.242558e-07 1.263777e-06 -4.458967e-09 6.444302e-06 +-6.935305e-05 8.216338e-04 5.100477e-04 -1.290081e-04 -3.095092e-04 -2.882637e-04 +-2.113915e-04 -1.370417e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.009314e-02 7.267737e-05 1.307103e-05 1.201317e-06 -3.840064e-08 5.761562e-07 +-2.882976e-05 -1.314092e-05 1.676488e-04 2.009037e-04 1.552416e-04 1.016016e-04 + 6.095533e-05 3.515166e-05 +>TYI.EXP //14 + 5.460836e-04 -4.721218e-06 -2.254008e-06 -1.523830e-06 -2.700765e-08 -1.708137e-06 + 1.929337e-05 -1.267901e-04 -1.077670e-04 2.012208e-09 4.978269e-05 5.507134e-05 + 4.310080e-05 2.884903e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par510.edi b/examples/data/NEConductor/par510.edi new file mode 100644 index 00000000..49c2f5c5 --- /dev/null +++ b/examples/data/NEConductor/par510.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par510" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par510" +REFLAT=-30:11:24.946 +REFLONG=139:43:43.7079 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par510" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.729865e-04 -1.669344e-06 -2.237477e-06 1.296250e-08 4.034121e-06 7.017432e-04 +-4.536640e-03 6.409974e-03 9.780267e-03 7.890722e-03 5.424107e-03 3.375235e-03 + 1.974559e-03 1.125521e-03 +>ZXXI ROT=ZROT //14 +-2.687853e-04 -1.950476e-05 3.674677e-07 5.936324e-08 2.951553e-06 2.560858e-04 +-3.163211e-03 -7.305095e-03 -9.569688e-04 1.975763e-03 2.573817e-03 2.183782e-03 + 1.538919e-03 9.754305e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865934e+02 1.241404e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316936e+01 + 8.366964e+00 6.584779e+00 5.460110e+00 4.263094e+00 3.004587e+00 1.920923e+00 + 1.144551e+00 6.581426e-01 +>ZXYI ROT=ZROT //14 + 3.082214e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400288e+01 1.271664e+01 + 6.041401e+00 2.970624e+00 2.001438e+00 1.763316e+00 1.573866e+00 1.249583e+00 + 8.787644e-01 5.620648e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865650e+02 -1.241464e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.316938e+01 +-8.367377e+00 -6.585310e+00 -5.457378e+00 -4.258933e+00 -3.000935e+00 -1.918354e+00 +-1.142954e+00 -6.572080e-01 +>ZYXI ROT=ZROT //14 +-3.082009e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400289e+01 -1.271669e+01 +-6.040929e+00 -2.972681e+00 -2.003925e+00 -1.763897e+00 -1.573106e+00 -1.248425e+00 +-8.777447e-01 -5.613428e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.214794e-03 -1.310594e-04 -1.224135e-06 1.493246e-07 -3.968406e-06 -7.339701e-04 + 5.109843e-03 -6.627501e-03 -1.137297e-02 -9.729230e-03 -6.913536e-03 -4.387968e-03 +-2.594860e-03 -1.486245e-03 +>ZYYI ROT=ZROT //14 + 1.441801e-04 -3.761204e-05 -1.053472e-07 3.338720e-08 -2.622716e-06 -1.723661e-04 + 2.996515e-03 8.623211e-03 1.795122e-03 -1.962427e-03 -2.998310e-03 -2.692386e-03 +-1.956579e-03 -1.262257e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.137602e-03 -5.089159e-04 -3.648658e-05 5.350850e-07 8.214019e-08 1.723648e-05 +-2.473745e-04 9.909285e-05 1.078982e-03 9.928552e-04 6.837540e-04 4.285398e-04 + 2.530650e-04 1.449628e-04 +>TXI.EXP //14 + 1.593474e-04 6.279621e-05 1.235291e-05 3.619558e-07 4.010381e-08 -4.380994e-06 + 3.440203e-05 -8.193558e-04 -4.205381e-04 1.586145e-04 2.962816e-04 2.648127e-04 + 1.913128e-04 1.232061e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.835931e-03 7.851196e-05 1.314814e-05 1.180779e-06 -4.801939e-08 -6.959078e-06 + 1.077342e-04 -4.203687e-05 -4.469926e-04 -4.507239e-04 -3.273398e-04 -2.099560e-04 +-1.251343e-04 -7.193405e-05 +>TYI.EXP //14 + 4.965151e-04 -5.169710e-06 -2.253804e-06 -1.510880e-06 -2.666466e-08 2.993428e-06 +-1.878153e-05 3.435002e-04 2.008033e-04 -4.423487e-05 -1.251228e-04 -1.218804e-04 +-9.141957e-05 -5.991199e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par52.edi b/examples/data/NEConductor/par52.edi new file mode 100644 index 00000000..522b5457 --- /dev/null +++ b/examples/data/NEConductor/par52.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par52" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par52" +REFLAT=-30:13:34.8642 +REFLONG=139:43:42.0375 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par52" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.001228e-03 7.018696e-05 -2.802535e-06 -5.586055e-08 1.636586e-06 3.570415e-04 +-2.846492e-03 3.816441e-03 5.080916e-03 3.261594e-03 1.840420e-03 9.851832e-04 + 5.239414e-04 2.851842e-04 +>ZXXI ROT=ZROT //14 +-2.243238e-04 6.677471e-06 -1.839229e-06 -2.422014e-08 -6.944894e-07 -3.198390e-05 +-1.357667e-03 -4.096426e-03 2.675228e-04 1.517964e-03 1.341653e-03 8.934959e-04 + 5.259614e-04 2.937992e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865946e+02 1.241403e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.317000e+01 + 8.363708e+00 6.591029e+00 5.469115e+00 4.271305e+00 3.010727e+00 1.924937e+00 + 1.146962e+00 6.595327e-01 +>ZXYI ROT=ZROT //14 + 3.082193e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400290e+01 1.271751e+01 + 6.036794e+00 2.964770e+00 2.000018e+00 1.764616e+00 1.576237e+00 1.251880e+00 + 8.805049e-01 5.632145e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866236e+02 -1.241491e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.316992e+01 +-8.364730e+00 -6.590923e+00 -5.463710e+00 -4.264049e+00 -3.004502e+00 -1.920577e+00 +-1.144251e+00 -6.579465e-01 +>ZYXI ROT=ZROT //14 +-3.082390e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271743e+01 +-6.036854e+00 -2.968687e+00 -2.003815e+00 -1.765238e+00 -1.574799e+00 -1.249866e+00 +-8.787597e-01 -5.619850e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.910255e-03 -1.390293e-04 -2.228850e-06 2.400238e-07 -2.040385e-06 -3.992415e-04 + 3.310106e-03 -4.057473e-03 -6.863067e-03 -5.368345e-03 -3.611666e-03 -2.226723e-03 +-1.298016e-03 -7.389701e-04 +>ZYYI ROT=ZROT //14 + 2.614329e-04 -4.788649e-05 -3.591280e-07 2.863339e-08 -3.758295e-08 2.985900e-05 + 1.373261e-03 5.475636e-03 6.952652e-04 -1.447694e-03 -1.785252e-03 -1.474322e-03 +-1.025020e-03 -6.452417e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.542468e-02 1.342531e-04 -3.133969e-05 -9.073771e-07 -4.613591e-08 -1.461176e-05 + 2.301022e-04 -5.554425e-05 -1.086299e-03 -1.033224e-03 -7.208106e-04 -4.535073e-04 +-2.680560e-04 -1.536863e-04 +>TXI.EXP //14 +-9.907744e-04 -2.779488e-05 9.133176e-07 1.301637e-06 -1.829359e-08 5.235405e-06 +-5.208205e-05 8.222660e-04 4.618237e-04 -1.426935e-04 -3.020548e-04 -2.762635e-04 +-2.013044e-04 -1.301427e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.005736e-02 7.338947e-05 1.308167e-05 1.198153e-06 -3.582250e-08 7.509059e-07 +-2.837392e-05 -5.320969e-06 1.456772e-04 1.732198e-04 1.347367e-04 8.853192e-05 + 5.320707e-05 3.070740e-05 +>TYI.EXP //14 + 5.388802e-04 -4.767441e-06 -2.253402e-06 -1.521656e-06 -2.988487e-08 -1.669717e-06 + 1.571675e-05 -1.120896e-04 -8.994676e-05 -2.291296e-09 4.268752e-05 4.763592e-05 + 3.745863e-05 2.514448e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par53.edi b/examples/data/NEConductor/par53.edi new file mode 100644 index 00000000..338d1e94 --- /dev/null +++ b/examples/data/NEConductor/par53.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par53" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par53" +REFLAT=-30:13:18.6244 +REFLONG=139:43:42.2465 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par53" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 9.526408e-04 5.994759e-05 -2.797071e-06 -4.462365e-08 2.653385e-06 4.773923e-04 +-3.472199e-03 4.730679e-03 6.510883e-03 4.560506e-03 2.801224e-03 1.607541e-03 + 8.955447e-04 4.988769e-04 +>ZXXI ROT=ZROT //14 +-2.397200e-04 2.325623e-06 -1.553190e-06 -1.438284e-08 -5.348248e-08 2.671872e-05 +-1.926055e-03 -5.098484e-03 1.428579e-05 1.725602e-03 1.721074e-03 1.256148e-03 + 7.977851e-04 4.720668e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865941e+02 1.241403e+02 7.346931e+01 4.197590e+01 2.350537e+01 1.316967e+01 + 8.365751e+00 6.586857e+00 5.463404e+00 4.266250e+00 3.006996e+00 1.922516e+00 + 1.145513e+00 6.586992e-01 +>ZXYI ROT=ZROT //14 + 3.082204e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400289e+01 1.271692e+01 + 6.039804e+00 2.968481e+00 2.000726e+00 1.763703e+00 1.574736e+00 1.250464e+00 + 8.794459e-01 5.625198e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866136e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316963e+01 +-8.366313e+00 -6.586926e+00 -5.459800e+00 -4.261241e+00 -3.002642e+00 -1.919447e+00 +-1.143599e+00 -6.575775e-01 +>ZYXI ROT=ZROT //14 +-3.082311e+02 -1.471560e+02 -7.805624e+01 -4.294173e+01 -2.400289e+01 -1.271684e+01 +-6.039819e+00 -2.971062e+00 -2.003425e+00 -1.764224e+00 -1.573782e+00 -1.249074e+00 +-8.782254e-01 -5.616551e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.484685e-03 -1.322713e-04 -2.056038e-06 2.190429e-07 -2.854777e-06 -5.138781e-04 + 3.845106e-03 -4.972475e-03 -7.898564e-03 -6.166446e-03 -4.147525e-03 -2.551362e-03 +-1.484207e-03 -8.440402e-04 +>ZYYI ROT=ZROT //14 + 2.276498e-04 -4.446803e-05 -3.336983e-07 2.979394e-08 -8.259009e-07 -3.594290e-05 + 1.975387e-03 6.168618e-03 6.908010e-04 -1.688409e-03 -2.063231e-03 -1.698919e-03 +-1.177540e-03 -7.394146e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.410355e-02 6.841520e-05 -3.186975e-05 -8.952289e-07 -4.991139e-08 -1.557249e-05 + 2.255585e-04 -8.838870e-05 -9.948128e-04 -9.231108e-04 -6.399224e-04 -4.018843e-04 +-2.374037e-04 -1.360899e-04 +>TXI.EXP //14 +-8.499569e-04 -1.815884e-05 1.837967e-06 1.288975e-06 -4.671717e-08 3.525581e-06 +-3.282906e-05 7.588954e-04 3.912396e-04 -1.408771e-04 -2.735540e-04 -2.468240e-04 +-1.789961e-04 -1.154825e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.002419e-02 7.406372e-05 1.309167e-05 1.195243e-06 -3.213468e-08 6.383552e-07 +-2.257494e-05 -6.669768e-07 1.043412e-04 1.275020e-04 1.013467e-04 6.720959e-05 + 4.053826e-05 2.343282e-05 +>TYI.EXP //14 + 5.322284e-04 -4.812068e-06 -2.252921e-06 -1.519691e-06 -3.198325e-08 -1.422839e-06 + 1.112411e-05 -8.182385e-05 -6.508937e-05 -2.515487e-06 3.041193e-05 3.533304e-05 + 2.819900e-05 1.907312e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par54.edi b/examples/data/NEConductor/par54.edi new file mode 100644 index 00000000..166bd5e7 --- /dev/null +++ b/examples/data/NEConductor/par54.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par54" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par54" +REFLAT=-30:13:02.3847 +REFLONG=139:43:42.4554 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par54" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 8.883512e-04 5.016830e-05 -2.772893e-06 -3.487714e-08 3.654382e-06 6.047026e-04 +-4.124881e-03 5.725612e-03 8.108197e-03 6.038416e-03 3.906223e-03 2.328337e-03 + 1.327646e-03 7.478095e-04 +>ZXXI ROT=ZROT //14 +-2.526264e-04 -1.890157e-06 -1.284541e-06 -1.782400e-09 1.021514e-06 1.108973e-04 +-2.572706e-03 -6.203171e-03 -2.957021e-04 1.941465e-03 2.144108e-03 1.668688e-03 + 1.110347e-03 6.783152e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865939e+02 1.241403e+02 7.346931e+01 4.197590e+01 2.350538e+01 1.316937e+01 + 8.367721e+00 6.582629e+00 5.457523e+00 4.260986e+00 3.003091e+00 1.919973e+00 + 1.143990e+00 6.578214e-01 +>ZXYI ROT=ZROT //14 + 3.082210e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400288e+01 1.271627e+01 + 6.042924e+00 2.972255e+00 2.001518e+00 1.762795e+00 1.573189e+00 1.248991e+00 + 8.783379e-01 5.617908e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866050e+02 -1.241472e+02 -7.346921e+01 -4.197589e+01 -2.350538e+01 -1.316941e+01 +-8.367675e+00 -6.583126e+00 -5.456126e+00 -4.258606e+00 -3.000903e+00 -1.918391e+00 +-1.142992e+00 -6.572336e-01 +>ZYXI ROT=ZROT //14 +-3.082243e+02 -1.471555e+02 -7.805625e+01 -4.294173e+01 -2.400289e+01 -1.271622e+01 +-6.042747e+00 -2.973213e+00 -2.003038e+00 -1.763260e+00 -1.572823e+00 -1.248330e+00 +-8.777257e-01 -5.613470e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.119237e-03 -1.270446e-04 -1.905836e-06 2.001814e-07 -3.521082e-06 -6.276275e-04 + 4.355932e-03 -5.896248e-03 -8.976630e-03 -7.026864e-03 -4.736513e-03 -2.912773e-03 +-1.693096e-03 -9.623491e-04 +>ZYYI ROT=ZROT //14 + 1.943658e-04 -4.164709e-05 -3.037468e-07 3.101982e-08 -1.994617e-06 -1.222525e-04 + 2.619909e-03 6.870858e-03 7.169239e-04 -1.923942e-03 -2.354077e-03 -1.940962e-03 +-1.344919e-03 -8.439552e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.270609e-02 -5.482864e-06 -3.281246e-05 -8.080111e-07 -3.361914e-08 -1.409291e-05 + 1.922949e-04 -9.621301e-05 -8.054205e-04 -7.359231e-04 -5.089967e-04 -3.195531e-04 +-1.887552e-04 -1.082100e-04 +>TXI.EXP //14 +-7.091365e-04 -7.480879e-06 3.127383e-06 1.231854e-06 -3.811428e-08 1.866362e-06 +-1.617777e-05 6.182882e-04 2.982590e-04 -1.187072e-04 -2.197394e-04 -1.969549e-04 +-1.425440e-04 -9.189509e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.993272e-03 7.470902e-05 1.310107e-05 1.192559e-06 -2.859849e-08 3.680722e-08 +-9.873048e-06 -1.313882e-06 4.081380e-05 6.148510e-05 5.343228e-05 3.656912e-05 + 2.230901e-05 1.295874e-05 +>TYI.EXP //14 + 5.260714e-04 -4.856155e-06 -2.252578e-06 -1.517940e-06 -3.207168e-08 -9.907699e-07 + 6.371679e-06 -3.375627e-05 -3.304616e-05 -8.064892e-06 1.225763e-05 1.753176e-05 + 1.485366e-05 1.032796e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par56.edi b/examples/data/NEConductor/par56.edi new file mode 100644 index 00000000..48b5aaef --- /dev/null +++ b/examples/data/NEConductor/par56.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par56" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par56" +REFLAT=-30:12:29.9052 +REFLONG=139:43:42.8731 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par56" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.206833e-04 3.163325e-05 -2.673659e-06 -2.173887e-08 5.057175e-06 8.129639e-04 +-5.200059e-03 7.456726e-03 1.100182e-02 8.786580e-03 5.991980e-03 3.702031e-03 + 2.155604e-03 1.225952e-03 +>ZXXI ROT=ZROT //14 +-2.710466e-04 -9.443947e-06 -7.650918e-07 2.509737e-08 3.833375e-06 3.029549e-04 +-3.756002e-03 -8.174182e-03 -9.295350e-04 2.289406e-03 2.907904e-03 2.435569e-03 + 1.700190e-03 1.070827e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865937e+02 1.241404e+02 7.346931e+01 4.197590e+01 2.350539e+01 1.316898e+01 + 8.370427e+00 6.576668e+00 5.449042e+00 4.253293e+00 2.997347e+00 1.916220e+00 + 1.141737e+00 6.565227e-01 +>ZXYI ROT=ZROT //14 + 3.082214e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400287e+01 1.271531e+01 + 6.047401e+00 2.977662e+00 2.002782e+00 1.761543e+00 1.570956e+00 1.246838e+00 + 8.767090e-01 5.607156e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865905e+02 -1.241461e+02 -7.346915e+01 -4.197590e+01 -2.350539e+01 -1.316914e+01 +-8.369353e+00 -6.578180e+00 -5.451267e+00 -4.255044e+00 -2.998533e+00 -1.916949e+00 +-1.142159e+00 -6.567624e-01 +>ZYXI ROT=ZROT //14 +-3.082134e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400287e+01 -1.271535e+01 +-6.046656e+00 -2.975997e+00 -2.002616e+00 -1.762017e+00 -1.571543e+00 -1.247324e+00 +-8.770456e-01 -5.609264e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.567031e-03 -1.213462e-04 -1.659238e-06 1.715688e-07 -4.701704e-06 -8.026703e-04 + 5.166795e-03 -7.384311e-03 -1.094024e-02 -8.730399e-03 -5.957645e-03 -3.684880e-03 +-2.147320e-03 -1.221735e-03 +>ZYYI ROT=ZROT //14 + 1.380628e-04 -3.779966e-05 -2.377707e-07 3.492008e-08 -3.967908e-06 -2.926083e-04 + 3.694412e-03 8.144598e-03 9.276749e-04 -2.273544e-03 -2.885704e-03 -2.419189e-03 +-1.690756e-03 -1.065881e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.719577e-03 -1.701142e-04 -3.534409e-05 -4.469948e-07 1.644858e-09 -3.222600e-06 + 4.136160e-05 -2.675739e-05 -1.552969e-04 -1.514375e-04 -1.110632e-04 -7.144050e-05 +-4.256835e-05 -2.451672e-05 +>TXI.EXP //14 +-4.260924e-04 1.587951e-05 6.408410e-06 1.013354e-06 -2.593226e-08 3.533810e-07 +-1.295633e-06 1.241747e-04 5.864962e-05 -1.617821e-05 -4.233427e-05 -4.137013e-05 +-3.110219e-05 -2.043224e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.936797e-03 7.594971e-05 1.311831e-05 1.187855e-06 -2.343900e-08 -2.878939e-06 + 3.539931e-05 -2.080916e-05 -1.437577e-04 -1.234208e-04 -8.085781e-05 -4.958216e-05 +-2.903785e-05 -1.656668e-05 +>TYI.EXP //14 + 5.150192e-04 -4.946884e-06 -2.252336e-06 -1.515075e-06 -2.774976e-08 1.227935e-07 +-6.379657e-07 1.084412e-04 4.808159e-05 -2.672944e-05 -3.917923e-05 -3.250427e-05 +-2.267213e-05 -1.428884e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par57.edi b/examples/data/NEConductor/par57.edi new file mode 100644 index 00000000..4e0f344f --- /dev/null +++ b/examples/data/NEConductor/par57.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par57" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par57" +REFLAT=-30:12:13.6654 +REFLONG=139:43:43.0818 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par57" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.205271e-04 2.281553e-05 -2.599511e-06 -1.580526e-08 5.159877e-06 8.590331e-04 +-5.438276e-03 7.861651e-03 1.175670e-02 9.544309e-03 6.584409e-03 4.099471e-03 + 2.397592e-03 1.366331e-03 +>ZXXI ROT=ZROT //14 +-2.757868e-04 -1.264065e-05 -4.992986e-07 3.640380e-08 4.605451e-06 3.637948e-04 +-4.054619e-03 -8.679601e-03 -1.139238e-03 2.354679e-03 3.105467e-03 2.646795e-03 + 1.867628e-03 1.184079e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865936e+02 1.241404e+02 7.346932e+01 4.197590e+01 2.350539e+01 1.316890e+01 + 8.370701e+00 6.576216e+00 5.448297e+00 4.252574e+00 2.996798e+00 1.915857e+00 + 1.141517e+00 6.563956e-01 +>ZXYI ROT=ZROT //14 + 3.082215e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400287e+01 1.271524e+01 + 6.047745e+00 2.978154e+00 2.002952e+00 1.761459e+00 1.570759e+00 1.246638e+00 + 8.765535e-01 5.606118e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865839e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350539e+01 -1.316909e+01 +-8.369548e+00 -6.577888e+00 -5.450832e+00 -4.254622e+00 -2.998221e+00 -1.916750e+00 +-1.142042e+00 -6.566955e-01 +>ZYXI ROT=ZROT //14 +-3.082092e+02 -1.471550e+02 -7.805628e+01 -4.294175e+01 -2.400287e+01 -1.271532e+01 +-6.046869e+00 -2.976283e+00 -2.002711e+00 -1.761960e+00 -1.571420e+00 -1.247205e+00 +-8.769579e-01 -5.608697e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.381482e-03 -1.209808e-04 -1.552377e-06 1.611423e-07 -4.395896e-06 -8.443634e-04 + 5.400394e-03 -7.731839e-03 -1.161060e-02 -9.409225e-03 -6.481653e-03 -4.031358e-03 +-2.356319e-03 -1.342443e-03 +>ZYYI ROT=ZROT //14 + 1.204220e-04 -3.678185e-05 -2.038809e-07 3.722486e-08 -4.997145e-06 -3.320474e-04 + 3.928585e-03 8.605114e-03 1.124253e-03 -2.332986e-03 -3.066908e-03 -2.608828e-03 +-1.838400e-03 -1.164578e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.143806e-03 -2.568792e-04 -3.651011e-05 -2.038891e-07 9.993987e-09 4.300984e-06 +-5.541998e-05 3.046602e-05 2.346401e-04 1.930478e-04 1.230235e-04 7.453555e-05 + 4.345952e-05 2.474021e-05 +>TXI.EXP //14 +-2.829661e-04 2.801103e-05 8.167252e-06 8.659364e-07 -4.973906e-09 4.049904e-08 + 7.689829e-07 -1.742545e-04 -7.436082e-05 4.774622e-05 6.308414e-05 5.046009e-05 + 3.455617e-05 2.164851e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.910572e-03 7.656439e-05 1.312630e-05 1.185843e-06 -3.104052e-08 -4.752140e-06 + 6.232951e-05 -3.494625e-05 -2.466079e-04 -2.269501e-04 -1.568186e-04 -9.856536e-05 +-5.829580e-05 -3.340483e-05 +>TYI.EXP //14 + 5.100202e-04 -4.995662e-06 -2.252453e-06 -1.513905e-06 -2.489098e-08 7.236500e-07 +-3.187862e-06 1.882151e-04 9.220889e-05 -3.658360e-05 -6.768642e-05 -6.063291e-05 +-4.391574e-05 -2.827417e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par58.edi b/examples/data/NEConductor/par58.edi new file mode 100644 index 00000000..0e48818d --- /dev/null +++ b/examples/data/NEConductor/par58.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par58" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par58" +REFLAT=-30:11:57.4256 +REFLONG=139:43:43.2906 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par58" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.114941e-04 1.430806e-05 -2.505883e-06 -7.773413e-09 4.947768e-06 8.530174e-04 +-5.393939e-03 7.798443e-03 1.177750e-02 9.626835e-03 6.673613e-03 4.169381e-03 + 2.443486e-03 1.393806e-03 +>ZXXI ROT=ZROT //14 +-2.770728e-04 -1.539727e-05 -2.230913e-07 4.588895e-08 4.689958e-06 3.742860e-04 +-4.038912e-03 -8.685348e-03 -1.213921e-03 2.317572e-03 3.108232e-03 2.669411e-03 + 1.892689e-03 1.203574e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865936e+02 1.241404e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316894e+01 + 8.370122e+00 6.577717e+00 5.450309e+00 4.254345e+00 2.998103e+00 1.916704e+00 + 1.142024e+00 6.566873e-01 +>ZXYI ROT=ZROT //14 + 3.082215e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400287e+01 1.271551e+01 + 6.046616e+00 2.976898e+00 2.002728e+00 1.761788e+00 1.571288e+00 1.247134e+00 + 8.769244e-01 5.608549e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865775e+02 -1.241458e+02 -7.346921e+01 -4.197591e+01 -2.350539e+01 -1.316910e+01 +-8.369269e+00 -6.579192e+00 -5.451876e+00 -4.255228e+00 -2.998573e+00 -1.916950e+00 +-1.142153e+00 -6.567574e-01 +>ZYXI ROT=ZROT //14 +-3.082057e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400288e+01 -1.271559e+01 +-6.045790e+00 -2.975755e+00 -2.003011e+00 -1.762314e+00 -1.571682e+00 -1.247377e+00 +-8.770618e-01 -5.609298e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.259188e-03 -1.223695e-04 -1.446449e-06 1.528210e-07 -5.153369e-06 -8.473422e-04 + 5.479607e-03 -7.712889e-03 -1.193339e-02 -9.842657e-03 -6.851652e-03 -4.289560e-03 +-2.516526e-03 -1.436116e-03 +>ZYYI ROT=ZROT //14 + 1.138688e-04 -3.638005e-05 -1.696749e-07 3.857548e-08 -4.532371e-06 -3.201140e-04 + 3.874620e-03 8.864734e-03 1.359608e-03 -2.294817e-03 -3.153206e-03 -2.728849e-03 +-1.941983e-03 -1.237380e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.519321e-03 -3.437885e-04 -3.727169e-05 5.542326e-08 3.586343e-08 1.103286e-05 +-1.442439e-04 7.879204e-05 5.969658e-04 5.196459e-04 3.473829e-04 2.150931e-04 + 1.264449e-04 7.228758e-05 +>TXI.EXP //14 +-1.380703e-04 4.007200e-05 9.834054e-06 7.025407e-07 2.662005e-08 -7.685737e-07 + 5.782292e-06 -4.519990e-04 -2.041405e-04 1.036390e-04 1.615209e-04 1.377166e-04 + 9.743359e-05 6.210350e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.885247e-03 7.718881e-05 1.313392e-05 1.184019e-06 -4.221378e-08 -6.294712e-06 + 8.584102e-05 -4.561282e-05 -3.383487e-04 -3.223783e-04 -2.278824e-04 -1.446471e-04 +-8.587783e-05 -4.929059e-05 +>TYI.EXP //14 + 5.053035e-04 -5.048219e-06 -2.252735e-06 -1.512832e-06 -2.141000e-08 1.414050e-06 +-6.592398e-06 2.595132e-04 1.343363e-04 -4.368271e-05 -9.332615e-05 -8.664909e-05 +-6.376944e-05 -4.140598e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par59.edi b/examples/data/NEConductor/par59.edi new file mode 100644 index 00000000..cfe11bdb --- /dev/null +++ b/examples/data/NEConductor/par59.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par59" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par59" +REFLAT=-30:11:41.1858 +REFLONG=139:43:43.4992 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par59" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.951317e-04 6.135635e-06 -2.387605e-06 2.281172e-09 4.505234e-06 7.969147e-04 +-5.072824e-03 7.275109e-03 1.106086e-02 9.023394e-03 6.248274e-03 3.903015e-03 + 2.287586e-03 1.304977e-03 +>ZXXI ROT=ZROT //14 +-2.747570e-04 -1.768966e-05 6.566800e-08 5.337870e-08 3.918803e-06 3.330387e-04 +-3.713239e-03 -8.189310e-03 -1.144155e-03 2.182491e-03 2.915608e-03 2.500457e-03 + 1.772198e-03 1.126872e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.865935e+02 1.241404e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316909e+01 + 8.368802e+00 6.580791e+00 5.454556e+00 4.258135e+00 3.000912e+00 1.918532e+00 + 1.143119e+00 6.573181e-01 +>ZXYI ROT=ZROT //14 + 3.082215e+02 1.471556e+02 7.805620e+01 4.294174e+01 2.400288e+01 1.271601e+01 + 6.044327e+00 2.974199e+00 2.002177e+00 1.762452e+00 1.572405e+00 1.248195e+00 + 8.777217e-01 5.613793e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865712e+02 -1.241460e+02 -7.346928e+01 -4.197590e+01 -2.350538e+01 -1.316919e+01 +-8.368529e+00 -6.581820e+00 -5.454184e+00 -4.256743e+00 -2.999525e+00 -1.917512e+00 +-1.142472e+00 -6.569367e-01 +>ZYXI ROT=ZROT //14 +-3.082029e+02 -1.471555e+02 -7.805633e+01 -4.294175e+01 -2.400288e+01 -1.271608e+01 +-6.043671e+00 -2.974499e+00 -2.003447e+00 -1.763000e+00 -1.572276e+00 -1.247806e+00 +-8.773378e-01 -5.610956e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.202654e-03 -1.256466e-04 -1.336660e-06 1.485283e-07 -4.125132e-06 -8.095491e-04 + 5.383548e-03 -7.324040e-03 -1.185105e-02 -9.956079e-03 -7.004338e-03 -4.415562e-03 +-2.600789e-03 -1.486909e-03 +>ZYYI ROT=ZROT //14 + 1.211252e-04 -3.662739e-05 -1.359672e-07 3.764465e-08 -3.115693e-06 -2.611117e-04 + 3.541065e-03 8.875376e-03 1.596072e-03 -2.164416e-03 -3.129218e-03 -2.758478e-03 +-1.983771e-03 -1.271898e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.849595e-03 -4.285909e-04 -3.735473e-05 3.092763e-07 4.939071e-08 1.554334e-05 +-2.106441e-04 1.034707e-04 8.862172e-04 7.930349e-04 5.390256e-04 3.360966e-04 + 1.980966e-04 1.133859e-04 +>TXI.EXP //14 + 9.168218e-06 5.177077e-05 1.127429e-05 5.313407e-07 4.790566e-08 -2.330444e-06 + 1.710486e-05 -6.733717e-04 -3.217995e-04 1.418322e-04 2.412934e-04 2.109960e-04 + 1.510188e-04 9.682028e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-9.860480e-03 7.783391e-05 1.314119e-05 1.182341e-06 -4.541506e-08 -7.083706e-06 + 1.016641e-04 -4.847917e-05 -4.071102e-04 -3.990155e-04 -2.863110e-04 -1.828306e-04 +-1.087938e-04 -6.250165e-05 +>TYI.EXP //14 + 5.008187e-04 -5.105782e-06 -2.253182e-06 -1.511818e-06 -2.343569e-08 2.208825e-06 +-1.183633e-05 3.129069e-04 1.713116e-04 -4.634854e-05 -1.129973e-04 -1.076320e-04 +-8.004988e-05 -5.225121e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par60.edi b/examples/data/NEConductor/par60.edi new file mode 100644 index 00000000..d23523f1 --- /dev/null +++ b/examples/data/NEConductor/par60.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par60" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par60" +REFLAT=-30:14:07.5248 +REFLONG=139:44:00.3221 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par60" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.196704e-03 9.658619e-05 -6.980669e-06 -1.571917e-07 3.578376e-07 1.980879e-04 +-2.119168e-03 2.479554e-03 4.245890e-03 3.029827e-03 1.854051e-03 1.064781e-03 + 5.947599e-04 3.319080e-04 +>ZXXI ROT=ZROT //14 + 2.597550e-04 1.293677e-05 -3.873653e-06 3.100460e-08 -1.888945e-07 -7.895876e-05 +-5.516949e-04 -3.527804e-03 -2.400033e-04 1.084212e-03 1.123585e-03 8.248913e-04 + 5.259815e-04 3.123546e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866067e+02 1.241409e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317066e+01 + 8.360145e+00 6.597864e+00 5.477834e+00 4.278703e+00 3.016079e+00 1.928368e+00 + 1.149000e+00 6.607023e-01 +>ZXYI ROT=ZROT //14 + 3.082204e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400291e+01 1.271832e+01 + 6.032075e+00 2.959005e+00 1.999324e+00 1.766188e+00 1.578524e+00 1.253954e+00 + 8.820262e-01 5.642015e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866498e+02 -1.241517e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317054e+01 +-8.361459e+00 -6.598105e+00 -5.470671e+00 -4.268933e+00 -3.007696e+00 -1.922499e+00 +-1.145351e+00 -6.585670e-01 +>ZYXI ROT=ZROT //14 +-3.082592e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271828e+01 +-6.031922e+00 -2.964202e+00 -2.004615e+00 -1.767089e+00 -1.576604e+00 -1.251248e+00 +-8.796781e-01 -5.625467e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.089225e-03 -1.797720e-04 -3.058604e-06 2.621713e-07 -7.784874e-07 -2.354239e-04 + 2.601407e-03 -2.557840e-03 -6.406646e-03 -5.734450e-03 -4.158361e-03 -2.687856e-03 +-1.608900e-03 -9.269417e-04 +>ZYYI ROT=ZROT //14 + 3.308734e-04 -6.532330e-05 -4.806847e-07 6.336292e-08 4.314114e-07 8.809785e-05 + 4.693797e-04 5.191426e-03 1.592255e-03 -9.158928e-04 -1.667023e-03 -1.569907e-03 +-1.174074e-03 -7.710560e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.779909e-02 2.358174e-04 -3.172943e-05 -7.109069e-07 -2.346445e-08 -9.038835e-06 + 1.888107e-04 4.745365e-05 -1.088251e-03 -1.118631e-03 -7.984270e-04 -5.059078e-04 +-2.997323e-04 -1.719827e-04 +>TXI.EXP //14 +-1.276272e-03 -4.279800e-05 4.179658e-07 1.172520e-06 6.294293e-09 7.314721e-06 +-8.616730e-05 8.033725e-04 5.639432e-04 -1.052047e-04 -3.131401e-04 -2.998427e-04 +-2.220700e-04 -1.445937e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.163206e-02 -3.177293e-05 1.257720e-05 1.504034e-06 -3.944157e-08 1.742426e-06 +-5.613706e-05 -2.994413e-05 3.498472e-04 3.939157e-04 2.934280e-04 1.891207e-04 + 1.127863e-04 6.487766e-05 +>TYI.EXP //14 + 7.233707e-04 8.881232e-06 -1.616588e-06 -1.615065e-06 -1.924579e-08 -2.755798e-06 + 3.541959e-05 -2.585491e-04 -2.101874e-04 1.552275e-05 1.032196e-04 1.067560e-04 + 8.145540e-05 5.382990e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par61.edi b/examples/data/NEConductor/par61.edi new file mode 100644 index 00000000..d8d995c7 --- /dev/null +++ b/examples/data/NEConductor/par61.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par61" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par61" +REFLAT=-30:13:51.285 +REFLONG=139:44:00.5303 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par61" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.063305e-03 7.617866e-05 -6.822958e-06 -1.445204e-07 8.102286e-07 2.888959e-04 +-2.656974e-03 3.205887e-03 5.333066e-03 3.981684e-03 2.544798e-03 1.506432e-03 + 8.564360e-04 4.818477e-04 +>ZXXI ROT=ZROT //14 + 2.515845e-04 5.893246e-06 -3.458644e-06 3.789812e-08 -1.020676e-07 -6.087825e-05 +-9.410277e-04 -4.321593e-03 -3.963198e-04 1.261147e-03 1.411897e-03 1.090954e-03 + 7.215214e-04 4.391104e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866053e+02 1.241409e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317033e+01 + 8.361897e+00 6.594733e+00 5.473722e+00 4.275185e+00 3.013524e+00 1.926727e+00 + 1.148024e+00 6.601420e-01 +>ZXYI ROT=ZROT //14 + 3.082233e+02 1.471558e+02 7.805618e+01 4.294174e+01 2.400291e+01 1.271799e+01 + 6.034152e+00 2.961787e+00 1.999706e+00 1.765469e+00 1.577446e+00 1.252968e+00 + 8.813003e-01 5.637297e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866352e+02 -1.241503e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317022e+01 +-8.363160e+00 -6.594708e+00 -5.467133e+00 -4.266336e+00 -3.005946e+00 -1.921424e+00 +-1.144728e+00 -6.582134e-01 +>ZYXI ROT=ZROT //14 +-3.082486e+02 -1.471574e+02 -7.805623e+01 -4.294172e+01 -2.400290e+01 -1.271793e+01 +-6.034141e+00 -2.966577e+00 -2.004380e+00 -1.766225e+00 -1.575689e+00 -1.250515e+00 +-8.791764e-01 -5.622341e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.511173e-03 -1.678737e-04 -2.794563e-06 2.401138e-07 -1.385850e-06 -3.341075e-04 + 3.167581e-03 -3.399285e-03 -7.431698e-03 -6.533966e-03 -4.705374e-03 -3.024689e-03 +-1.804095e-03 -1.037639e-03 +>ZYYI ROT=ZROT //14 + 3.030692e-04 -5.974033e-05 -4.591934e-07 6.160725e-08 2.610231e-07 6.227523e-05 + 9.207707e-04 5.940249e-03 1.614129e-03 -1.139374e-03 -1.937055e-03 -1.794427e-03 +-1.329752e-03 -8.685343e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.667268e-02 1.907223e-04 -3.133456e-05 -8.440256e-07 -3.604609e-08 -1.228816e-05 + 2.213315e-04 -4.969386e-06 -1.143658e-03 -1.132889e-03 -8.009433e-04 -5.062063e-04 +-2.996850e-04 -1.719141e-04 +>TXI.EXP //14 +-1.134618e-03 -3.611960e-05 4.321232e-07 1.264910e-06 -5.113472e-09 7.033438e-06 +-7.481793e-05 8.569387e-04 5.396681e-04 -1.292761e-04 -3.233208e-04 -3.034159e-04 +-2.232206e-04 -1.449363e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.159238e-02 -3.088413e-05 1.259133e-05 1.500553e-06 -3.818764e-08 2.891911e-06 +-7.054059e-05 -1.265845e-05 3.841824e-04 4.145294e-04 3.057164e-04 1.965842e-04 + 1.171697e-04 6.738745e-05 +>TYI.EXP //14 + 7.151645e-04 8.820823e-06 -1.616427e-06 -1.612824e-06 -1.986073e-08 -3.045933e-06 + 3.363535e-05 -2.885596e-04 -2.098503e-04 2.512069e-05 1.109809e-04 1.121990e-04 + 8.503920e-05 5.605096e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par610.edi b/examples/data/NEConductor/par610.edi new file mode 100644 index 00000000..3d6c95cd --- /dev/null +++ b/examples/data/NEConductor/par610.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par610" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par610" +REFLAT=-30:11:25.1269 +REFLONG=139:44:02.402 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par610" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.329795e-03 -8.055346e-05 -4.076587e-06 -3.555153e-08 4.297827e-06 6.858860e-04 +-4.247808e-03 6.363653e-03 8.614602e-03 6.386505e-03 4.154885e-03 2.494441e-03 + 1.429574e-03 8.072461e-04 +>ZXXI ROT=ZROT //14 + 5.612938e-05 -5.042672e-05 2.249623e-07 1.271063e-07 3.745857e-06 2.721286e-04 +-3.232878e-03 -6.408858e-03 -1.890824e-04 2.074607e-03 2.261737e-03 1.766761e-03 + 1.183268e-03 7.267989e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866029e+02 1.241410e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316934e+01 + 8.366952e+00 6.584519e+00 5.460154e+00 4.263261e+00 3.004763e+00 1.921059e+00 + 1.144640e+00 6.581962e-01 +>ZXYI ROT=ZROT //14 + 3.082272e+02 1.471559e+02 7.805619e+01 4.294174e+01 2.400289e+01 1.271657e+01 + 6.041692e+00 2.970500e+00 2.001242e+00 1.763233e+00 1.573870e+00 1.249627e+00 + 8.788134e-01 5.621028e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865644e+02 -1.241464e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.316935e+01 +-8.367410e+00 -6.584949e+00 -5.457238e+00 -4.258915e+00 -3.000962e+00 -1.918387e+00 +-1.142978e+00 -6.572236e-01 +>ZYXI ROT=ZROT //14 +-3.082014e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400288e+01 -1.271659e+01 +-6.041309e+00 -2.972674e+00 -2.003778e+00 -1.763801e+00 -1.573066e+00 -1.248418e+00 +-8.777510e-01 -5.613512e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.062843e-03 -1.390304e-04 -1.523590e-06 1.167888e-07 -4.199757e-06 -7.299467e-04 + 4.831997e-03 -6.653180e-03 -1.026046e-02 -8.272769e-03 -5.681956e-03 -3.532990e-03 +-2.065834e-03 -1.177292e-03 +>ZYYI ROT=ZROT //14 + 1.409312e-04 -4.027772e-05 -1.190389e-07 7.507708e-08 -2.998710e-06 -2.080106e-04 + 3.147988e-03 7.742118e-03 1.023327e-03 -2.070471e-03 -2.699709e-03 -2.288962e-03 +-1.611771e-03 -1.021041e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.140972e-03 -5.092602e-04 -3.650676e-05 5.359217e-07 8.356000e-08 1.630937e-05 +-2.296320e-04 9.510950e-05 1.000338e-03 9.109673e-04 6.234746e-04 3.896891e-04 + 2.298717e-04 1.316184e-04 +>TXI.EXP //14 + 1.601190e-04 6.282380e-05 1.235870e-05 3.621456e-07 4.382583e-08 -3.632086e-06 + 2.917580e-05 -7.588494e-04 -3.822589e-04 1.522833e-04 2.740861e-04 2.426120e-04 + 1.744978e-04 1.121284e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.133446e-02 -2.430265e-05 1.268621e-05 1.479688e-06 -4.681318e-08 -2.016513e-06 + 3.610437e-05 -1.449522e-05 -1.341852e-04 -1.577504e-04 -1.233441e-04 -8.152242e-05 +-4.916841e-05 -2.837918e-05 +>TYI.EXP //14 + 6.640463e-04 8.304483e-06 -1.620814e-06 -1.601015e-06 -1.188977e-08 1.635414e-06 +-7.679743e-06 1.051542e-04 7.525463e-05 -1.176692e-06 -3.891349e-05 -4.350359e-05 +-3.436880e-05 -2.303548e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par62.edi b/examples/data/NEConductor/par62.edi new file mode 100644 index 00000000..0a2c2812 --- /dev/null +++ b/examples/data/NEConductor/par62.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par62" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par62" +REFLAT=-30:13:35.0453 +REFLONG=139:44:00.7385 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par62" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.885073e-03 5.646965e-05 -6.646202e-06 -1.299788e-07 1.470853e-06 4.002410e-04 +-3.265608e-03 4.079445e-03 6.621502e-03 5.113624e-03 3.368964e-03 2.034968e-03 + 1.170201e-03 6.618022e-04 +>ZXXI ROT=ZROT //14 + 2.400769e-04 -1.468238e-06 -3.054641e-06 4.538871e-08 2.570456e-07 -2.006154e-05 +-1.452206e-03 -5.239812e-03 -5.794711e-04 1.469581e-03 1.753222e-03 1.407372e-03 + 9.549254e-04 5.907870e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866044e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316998e+01 + 8.363860e+00 6.590991e+00 5.468700e+00 4.270806e+00 3.010316e+00 1.924654e+00 + 1.146788e+00 6.594312e-01 +>ZXYI ROT=ZROT //14 + 3.082251e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400290e+01 1.271753e+01 + 6.036753e+00 2.965109e+00 2.000258e+00 1.764632e+00 1.576127e+00 1.251742e+00 + 8.803895e-01 5.631346e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866232e+02 -1.241491e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.316989e+01 +-8.364876e+00 -6.590878e+00 -5.463283e+00 -4.263543e+00 -3.004080e+00 -1.920284e+00 +-1.144069e+00 -6.578399e-01 +>ZYXI ROT=ZROT //14 +-3.082394e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271744e+01 +-6.036829e+00 -2.969030e+00 -2.004055e+00 -1.765255e+00 -1.574691e+00 -1.249727e+00 +-8.786411e-01 -5.619019e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.997866e-03 -1.576904e-04 -2.566308e-06 2.182120e-07 -2.162665e-06 -4.489739e-04 + 3.754889e-03 -4.352704e-03 -8.513223e-03 -7.356886e-03 -5.258043e-03 -3.360283e-03 +-1.996892e-03 -1.146527e-03 +>ZYYI ROT=ZROT //14 + 2.694995e-04 -5.487392e-05 -4.291244e-07 6.153610e-08 -2.411554e-07 1.088963e-05 + 1.496308e-03 6.694187e-03 1.600776e-03 -1.391846e-03 -2.224026e-03 -2.026021e-03 +-1.487248e-03 -9.659241e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.543992e-02 1.345018e-04 -3.138742e-05 -9.081078e-07 -4.900411e-08 -1.504191e-05 + 2.418890e-04 -5.477583e-05 -1.143806e-03 -1.099014e-03 -7.710045e-04 -4.862692e-04 +-2.877037e-04 -1.650094e-04 +>TXI.EXP //14 +-9.932080e-04 -2.780936e-05 9.209867e-07 1.302732e-06 -1.843479e-08 5.976035e-06 +-5.781918e-05 8.665027e-04 4.952739e-04 -1.442729e-04 -3.187955e-04 -2.942463e-04 +-2.152662e-04 -1.394417e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.155587e-02 -3.005407e-05 1.260454e-05 1.497358e-06 -3.553690e-08 4.207029e-06 +-8.368947e-05 6.657745e-06 4.086668e-04 4.241022e-04 3.096831e-04 1.986179e-04 + 1.182937e-04 6.801773e-05 +>TYI.EXP //14 + 7.076192e-04 8.764026e-06 -1.616369e-06 -1.610757e-06 -2.023296e-08 -3.036168e-06 + 2.911933e-05 -3.105259e-04 -2.032974e-04 3.441106e-05 1.159412e-04 1.146592e-04 + 8.630845e-05 5.672909e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par63.edi b/examples/data/NEConductor/par63.edi new file mode 100644 index 00000000..864c4ebd --- /dev/null +++ b/examples/data/NEConductor/par63.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par63" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par63" +REFLAT=-30:13:18.8055 +REFLONG=139:44:00.9466 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par63" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.666213e-03 3.735489e-05 -6.441756e-06 -1.142399e-07 2.230193e-06 5.262299e-04 +-3.913227e-03 5.072329e-03 8.057659e-03 6.373679e-03 4.287407e-03 2.624966e-03 + 1.520881e-03 8.630522e-04 +>ZXXI ROT=ZROT //14 + 2.244277e-04 -8.915213e-06 -2.660983e-06 5.529198e-08 1.078402e-06 4.773174e-05 +-2.075056e-03 -6.240407e-03 -7.750065e-04 1.703705e-03 2.133055e-03 1.759631e-03 + 1.215178e-03 7.601322e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866039e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350537e+01 1.316964e+01 + 8.365923e+00 6.586797e+00 5.462978e+00 4.265750e+00 3.006587e+00 1.922236e+00 + 1.145342e+00 6.585992e-01 +>ZXYI ROT=ZROT //14 + 3.082262e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400289e+01 1.271695e+01 + 6.039775e+00 2.968827e+00 2.000958e+00 1.763713e+00 1.574623e+00 1.250326e+00 + 8.793313e-01 5.624408e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866132e+02 -1.241481e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316960e+01 +-8.366486e+00 -6.586844e+00 -5.459336e+00 -4.260705e+00 -3.002200e+00 -1.919140e+00 +-1.143410e+00 -6.574667e-01 +>ZYXI ROT=ZROT //14 +-3.082315e+02 -1.471560e+02 -7.805625e+01 -4.294173e+01 -2.400289e+01 -1.271685e+01 +-6.039821e+00 -2.971429e+00 -2.003664e+00 -1.764233e+00 -1.573663e+00 -1.248926e+00 +-8.781009e-01 -5.615683e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.545661e-03 -1.492047e-04 -2.369658e-06 1.967034e-07 -2.989341e-06 -5.712205e-04 + 4.320293e-03 -5.365814e-03 -9.582267e-03 -8.142943e-03 -5.772406e-03 -3.666489e-03 +-2.170613e-03 -1.244049e-03 +>ZYYI ROT=ZROT //14 + 2.335804e-04 -5.069752e-05 -3.937000e-07 6.198799e-08 -1.188319e-06 -6.770314e-05 + 2.168140e-03 7.402835e-03 1.544049e-03 -1.661968e-03 -2.509641e-03 -2.247760e-03 +-1.634105e-03 -1.055148e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.411768e-02 6.857792e-05 -3.191456e-05 -8.958461e-07 -5.388587e-08 -1.635847e-05 + 2.415356e-04 -9.116768e-05 -1.064893e-03 -1.000284e-03 -6.982736e-04 -4.398871e-04 +-2.601810e-04 -1.492144e-04 +>TXI.EXP //14 +-8.519960e-04 -1.816676e-05 1.845449e-06 1.290022e-06 -4.497263e-08 4.366909e-06 +-3.832580e-05 8.132161e-04 4.284754e-04 -1.442246e-04 -2.936040e-04 -2.678970e-04 +-1.952553e-04 -1.262854e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.152212e-02 -2.927271e-05 1.261688e-05 1.494395e-06 -3.133805e-08 5.435135e-06 +-9.275036e-05 2.520837e-05 4.160155e-04 4.167017e-04 3.012650e-04 1.926555e-04 + 1.146355e-04 6.589415e-05 +>TYI.EXP //14 + 7.006727e-04 8.709695e-06 -1.616421e-06 -1.608846e-06 -1.931783e-08 -2.643224e-06 + 2.225299e-05 -3.185256e-04 -1.890698e-04 4.203228e-05 1.162406e-04 1.125352e-04 + 8.411210e-05 5.512214e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par64.edi b/examples/data/NEConductor/par64.edi new file mode 100644 index 00000000..a760ceea --- /dev/null +++ b/examples/data/NEConductor/par64.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par64" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par64" +REFLAT=-30:13:02.5657 +REFLONG=139:44:01.1547 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par64" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.410924e-03 1.874760e-05 -6.205549e-06 -9.873851e-08 3.013072e-06 6.547380e-04 +-4.542787e-03 6.109335e-03 9.516696e-03 7.644751e-03 5.212418e-03 3.219317e-03 + 1.874300e-03 1.065925e-03 +>ZXXI ROT=ZROT //14 + 2.045310e-04 -1.623281e-05 -2.273053e-06 6.799571e-08 2.184623e-06 1.399517e-04 +-2.763807e-03 -7.234666e-03 -9.563888e-04 1.947478e-03 2.518057e-03 2.115020e-03 + 1.477506e-03 9.308186e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866036e+02 1.241409e+02 7.346931e+01 4.197590e+01 2.350538e+01 1.316933e+01 + 8.367905e+00 6.582539e+00 5.457106e+00 4.260510e+00 3.002706e+00 1.919713e+00 + 1.143830e+00 6.577289e-01 +>ZXYI ROT=ZROT //14 + 3.082268e+02 1.471558e+02 7.805618e+01 4.294174e+01 2.400288e+01 1.271630e+01 + 6.042926e+00 2.972591e+00 2.001725e+00 1.762794e+00 1.573077e+00 1.248859e+00 + 8.782300e-01 5.617169e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866046e+02 -1.241472e+02 -7.346920e+01 -4.197589e+01 -2.350538e+01 -1.316936e+01 +-8.367866e+00 -6.582996e+00 -5.455639e+00 -4.258062e+00 -3.000459e+00 -1.918086e+00 +-1.142803e+00 -6.571239e-01 +>ZYXI ROT=ZROT //14 +-3.082247e+02 -1.471555e+02 -7.805624e+01 -4.294173e+01 -2.400288e+01 -1.271622e+01 +-6.042793e+00 -2.973588e+00 -2.003262e+00 -1.763256e+00 -1.572697e+00 -1.248179e+00 +-8.776006e-01 -5.612605e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.152928e-03 -1.424098e-04 -2.199904e-06 1.764613e-07 -3.677931e-06 -6.878361e-04 + 4.813713e-03 -6.351565e-03 -1.054320e-02 -8.815416e-03 -6.195438e-03 -3.910539e-03 +-2.306235e-03 -1.319410e-03 +>ZYYI ROT=ZROT //14 + 1.979717e-04 -4.719204e-05 -3.549074e-07 6.229223e-08 -2.522222e-06 -1.666728e-04 + 2.872488e-03 8.005830e-03 1.442785e-03 -1.929006e-03 -2.768164e-03 -2.438009e-03 +-1.755239e-03 -1.126733e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.271899e-02 -5.404245e-06 -3.285429e-05 -8.085214e-07 -3.769687e-08 -1.530954e-05 + 2.127987e-04 -1.033383e-04 -8.887391e-04 -8.245761e-04 -5.754043e-04 -3.626888e-04 +-2.145878e-04 -1.230908e-04 +>TXI.EXP //14 +-7.107790e-04 -7.482390e-06 3.134680e-06 1.232822e-06 -3.668188e-08 2.716672e-06 +-2.085796e-05 6.830811e-04 3.389166e-04 -1.242030e-04 -2.432442e-04 -2.211347e-04 +-1.610771e-04 -1.041754e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.149078e-02 -2.853003e-05 1.262844e-05 1.491611e-06 -2.659231e-08 6.208390e-06 +-9.450057e-05 3.913294e-05 3.984374e-04 3.863817e-04 2.765035e-04 1.762270e-04 + 1.047365e-04 6.018061e-05 +>TYI.EXP //14 + 6.942643e-04 8.656722e-06 -1.616595e-06 -1.607102e-06 -1.573820e-08 -1.908994e-06 + 1.427595e-05 -3.064148e-04 -1.662021e-04 4.630421e-05 1.099163e-04 1.042224e-04 + 7.732322e-05 5.051239e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par66.edi b/examples/data/NEConductor/par66.edi new file mode 100644 index 00000000..f0870505 --- /dev/null +++ b/examples/data/NEConductor/par66.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par66" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par66" +REFLAT=-30:12:30.0862 +REFLONG=139:44:01.5706 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par66" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.806520e-03 -1.702366e-05 -5.635324e-06 -8.084582e-08 4.190751e-06 8.486345e-04 +-5.419146e-03 7.765342e-03 1.165531e-02 9.442826e-03 6.503241e-03 4.044100e-03 + 2.363546e-03 1.346496e-03 +>ZXXI ROT=ZROT //14 + 1.556355e-04 -2.982606e-05 -1.488630e-06 9.577147e-08 5.321039e-06 3.367881e-04 +-3.954208e-03 -8.633005e-03 -1.125898e-03 2.343974e-03 3.078964e-03 2.618131e-03 + 1.844527e-03 1.168276e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866033e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350539e+01 1.316893e+01 + 8.370593e+00 6.576472e+00 5.448674e+00 4.252925e+00 2.997068e+00 1.916039e+00 + 1.141628e+00 6.564602e-01 +>ZXYI ROT=ZROT //14 + 3.082272e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400287e+01 1.271530e+01 + 6.047531e+00 2.977920e+00 2.002887e+00 1.761506e+00 1.570855e+00 1.246736e+00 + 8.766307e-01 5.606639e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865900e+02 -1.241460e+02 -7.346916e+01 -4.197590e+01 -2.350539e+01 -1.316909e+01 +-8.369531e+00 -6.577917e+00 -5.450795e+00 -4.254572e+00 -2.998165e+00 -1.916703e+00 +-1.142010e+00 -6.566758e-01 +>ZYXI ROT=ZROT //14 +-3.082139e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400287e+01 -1.271532e+01 +-6.046856e+00 -2.976313e+00 -2.002745e+00 -1.761975e+00 -1.571419e+00 -1.247193e+00 +-8.769416e-01 -5.608563e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.542470e-03 -1.339556e-04 -1.928787e-06 1.488658e-07 -4.828487e-06 -8.494298e-04 + 5.417931e-03 -7.784159e-03 -1.173933e-02 -9.545913e-03 -6.600129e-03 -4.117924e-03 +-2.411669e-03 -1.375262e-03 +>ZYYI ROT=ZROT //14 + 1.374877e-04 -4.217066e-05 -2.743293e-07 6.552207e-08 -4.832596e-06 -3.500756e-04 + 3.980710e-03 8.688088e-03 1.169209e-03 -2.333463e-03 -3.094124e-03 -2.646268e-03 +-1.872262e-03 -1.189181e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.729625e-03 -1.701951e-04 -3.537960e-05 -4.470478e-07 -2.701762e-09 -5.157555e-06 + 6.881939e-05 -4.141351e-05 -2.592076e-04 -2.567808e-04 -1.887148e-04 -1.216131e-04 +-7.256013e-05 -4.178219e-05 +>TXI.EXP //14 +-4.269332e-04 1.588988e-05 6.415327e-06 1.014000e-06 -1.852370e-08 9.942330e-07 +-3.745794e-06 2.048947e-04 1.035677e-04 -2.568959e-05 -7.115745e-05 -7.003179e-05 +-5.281842e-05 -3.474985e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.143394e-02 -2.712015e-05 1.264958e-05 1.486650e-06 -2.251529e-08 5.141721e-06 +-6.776326e-05 3.953735e-05 2.708044e-04 2.457556e-04 1.711165e-04 1.078759e-04 + 6.383761e-05 3.662915e-05 +>TYI.EXP //14 + 6.828377e-04 8.550472e-06 -1.617356e-06 -1.604259e-06 -9.103327e-09 -2.396383e-07 + 2.002414e-06 -2.086823e-04 -9.577189e-05 3.976450e-05 7.311683e-05 6.599447e-05 + 4.798751e-05 3.107252e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par67.edi b/examples/data/NEConductor/par67.edi new file mode 100644 index 00000000..da106d2d --- /dev/null +++ b/examples/data/NEConductor/par67.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par67" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par67" +REFLAT=-30:12:13.8464 +REFLONG=139:44:01.7785 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par67" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.464829e-03 -3.407329e-05 -5.300912e-06 -7.522377e-08 4.531761e-06 8.808033e-04 +-5.507057e-03 8.069942e-03 1.187714e-02 9.559552e-03 6.565572e-03 4.077264e-03 + 2.381257e-03 1.356174e-03 +>ZXXI ROT=ZROT //14 + 1.293528e-04 -3.589043e-05 -1.081531e-06 1.070143e-07 6.321595e-06 3.941944e-04 +-4.221175e-03 -8.739770e-03 -1.046059e-03 2.426437e-03 3.134300e-03 2.651259e-03 + 1.863172e-03 1.178483e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866032e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350539e+01 1.316886e+01 + 8.370832e+00 6.575956e+00 5.447978e+00 4.252295e+00 2.996600e+00 1.915734e+00 + 1.141446e+00 6.563553e-01 +>ZXYI ROT=ZROT //14 + 3.082273e+02 1.471558e+02 7.805619e+01 4.294174e+01 2.400287e+01 1.271520e+01 + 6.047957e+00 2.978345e+00 2.002984e+00 1.761399e+00 1.570670e+00 1.246559e+00 + 8.764978e-01 5.605766e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865834e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350539e+01 -1.316904e+01 +-8.369692e+00 -6.577558e+00 -5.450406e+00 -4.254235e+00 -2.997932e+00 -1.916562e+00 +-1.141930e+00 -6.566308e-01 +>ZYXI ROT=ZROT //14 +-3.082097e+02 -1.471550e+02 -7.805628e+01 -4.294175e+01 -2.400287e+01 -1.271525e+01 +-6.047158e+00 -2.976532e+00 -2.002768e+00 -1.761895e+00 -1.571306e+00 -1.247097e+00 +-8.768761e-01 -5.608158e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.326078e-03 -1.323562e-04 -1.818206e-06 1.405848e-07 -4.591283e-06 -8.767518e-04 + 5.489858e-03 -8.027748e-03 -1.184435e-02 -9.544657e-03 -6.561188e-03 -4.077237e-03 +-2.382184e-03 -1.356959e-03 +>ZYYI ROT=ZROT //14 + 1.183027e-04 -4.065322e-05 -2.342669e-07 6.890787e-08 -5.803779e-06 -3.878572e-04 + 4.187068e-03 8.722935e-03 1.057850e-03 -2.411810e-03 -3.124857e-03 -2.646995e-03 +-1.861879e-03 -1.178362e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.152280e-03 -2.570340e-04 -3.654219e-05 -2.036324e-07 6.509933e-09 2.300058e-06 +-2.731455e-05 1.505437e-05 1.281991e-04 8.618410e-05 4.462036e-05 2.397074e-05 + 1.325458e-05 7.356567e-06 +>TXI.EXP //14 +-2.834032e-04 2.802667e-05 8.173948e-06 8.664256e-07 3.542991e-09 6.087209e-07 +-1.338568e-06 -9.171014e-05 -2.920545e-05 3.743056e-05 3.362620e-05 2.141727e-05 + 1.262397e-05 7.210757e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.140779e-02 -2.643211e-05 1.265935e-05 1.484617e-06 -3.079068e-08 3.307150e-06 +-4.110264e-05 2.567494e-05 1.679583e-04 1.428971e-04 9.596474e-05 5.950123e-05 + 3.496357e-05 2.001636e-05 +>TYI.EXP //14 + 6.777109e-04 8.494965e-06 -1.617966e-06 -1.603222e-06 -6.173948e-09 3.180212e-07 +-5.272697e-07 -1.290792e-04 -5.197008e-05 2.951181e-05 4.463076e-05 3.808289e-05 + 2.696909e-05 1.725466e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par68.edi b/examples/data/NEConductor/par68.edi new file mode 100644 index 00000000..81e6e48e --- /dev/null +++ b/examples/data/NEConductor/par68.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par68" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par68" +REFLAT=-30:11:57.6065 +REFLONG=139:44:01.9864 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par68" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.101998e-03 -5.042531e-05 -4.931872e-06 -6.599210e-08 4.639406e-06 8.596855e-04 +-5.312304e-03 7.897994e-03 1.136851e-02 9.014193e-03 6.137446e-03 3.792043e-03 + 2.208578e-03 1.256286e-03 +>ZXXI ROT=ZROT //14 + 1.034490e-04 -4.137589e-05 -6.604749e-07 1.159784e-07 6.351668e-06 3.994665e-04 +-4.165811e-03 -8.350953e-03 -8.427058e-04 2.401601e-03 2.996330e-03 2.499505e-03 + 1.742953e-03 1.097472e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866031e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316891e+01 + 8.370210e+00 6.577418e+00 5.450074e+00 4.254187e+00 2.998012e+00 1.916657e+00 + 1.142000e+00 6.566749e-01 +>ZXYI ROT=ZROT //14 + 3.082273e+02 1.471559e+02 7.805619e+01 4.294174e+01 2.400287e+01 1.271544e+01 + 6.046894e+00 2.976998e+00 2.002680e+00 1.761711e+00 1.571220e+00 1.247088e+00 + 8.768985e-01 5.608410e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865770e+02 -1.241458e+02 -7.346921e+01 -4.197591e+01 -2.350538e+01 -1.316906e+01 +-8.369372e+00 -6.578817e+00 -5.451523e+00 -4.254952e+00 -2.998385e+00 -1.916833e+00 +-1.142086e+00 -6.567191e-01 +>ZYXI ROT=ZROT //14 +-3.082062e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400287e+01 -1.271550e+01 +-6.046147e+00 -2.975921e+00 -2.002990e+00 -1.762229e+00 -1.571586e+00 -1.247299e+00 +-8.770078e-01 -5.608960e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.172438e-03 -1.325815e-04 -1.715498e-06 1.316438e-07 -5.477700e-06 -8.644932e-04 + 5.409223e-03 -7.893275e-03 -1.160535e-02 -9.311915e-03 -6.381908e-03 -3.958126e-03 +-2.310069e-03 -1.315231e-03 +>ZYYI ROT=ZROT //14 + 1.106677e-04 -3.980611e-05 -1.942258e-07 7.188125e-08 -5.448727e-06 -3.704057e-04 + 4.092664e-03 8.562744e-03 9.985000e-04 -2.386921e-03 -3.062100e-03 -2.582032e-03 +-1.811193e-03 -1.144380e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.526146e-03 -3.440123e-04 -3.730011e-05 5.592975e-08 3.183414e-08 9.228488e-06 +-1.179293e-04 6.546140e-05 4.948479e-04 4.169784e-04 2.721855e-04 1.666435e-04 + 9.751610e-05 5.564123e-05 +>TXI.EXP //14 +-1.381040e-04 4.009231e-05 9.840496e-06 7.029225e-07 3.457395e-08 -1.735879e-07 + 3.078077e-06 -3.729421e-04 -1.601462e-04 9.375944e-05 1.332014e-04 1.098414e-04 + 7.640551e-05 4.826922e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.138272e-02 -2.574099e-05 1.266869e-05 1.482845e-06 -4.285408e-08 1.141376e-06 +-1.133208e-05 8.157607e-06 5.596445e-05 3.273052e-05 1.582706e-05 7.992734e-06 + 4.235374e-06 2.340224e-06 +>TYI.EXP //14 + 6.729037e-04 8.436317e-06 -1.618739e-06 -1.602383e-06 -2.720209e-09 7.283534e-07 +-1.887770e-06 -4.223562e-05 -6.598705e-06 1.749619e-05 1.381764e-05 8.190749e-06 + 4.537412e-06 2.530333e-06 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par69.edi b/examples/data/NEConductor/par69.edi new file mode 100644 index 00000000..6536c2a9 --- /dev/null +++ b/examples/data/NEConductor/par69.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par69" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par69" +REFLAT=-30:11:41.3667 +REFLONG=139:44:02.1942 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par69" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.722211e-03 -6.595938e-05 -4.525248e-06 -5.183057e-08 4.595688e-06 7.903214e-04 +-4.866467e-03 7.284165e-03 1.020613e-02 7.885759e-03 5.280419e-03 3.229344e-03 + 1.870243e-03 1.061132e-03 +>ZXXI ROT=ZROT //14 + 7.878944e-05 -4.623339e-05 -2.247101e-07 1.226231e-07 5.198034e-06 3.530383e-04 +-3.805271e-03 -7.523413e-03 -5.410803e-04 2.275020e-03 2.685633e-03 2.184919e-03 + 1.501202e-03 9.368809e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866030e+02 1.241409e+02 7.346932e+01 4.197590e+01 2.350538e+01 1.316907e+01 + 8.368837e+00 6.580492e+00 5.454450e+00 4.258134e+00 3.000952e+00 1.918576e+00 + 1.143152e+00 6.573384e-01 +>ZXYI ROT=ZROT //14 + 3.082273e+02 1.471558e+02 7.805618e+01 4.294174e+01 2.400288e+01 1.271594e+01 + 6.044631e+00 2.974188e+00 2.002050e+00 1.762368e+00 1.572370e+00 1.248193e+00 + 8.777324e-01 5.613909e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865707e+02 -1.241460e+02 -7.346928e+01 -4.197590e+01 -2.350538e+01 -1.316916e+01 +-8.368592e+00 -6.581434e+00 -5.453932e+00 -4.256597e+00 -2.999447e+00 -1.917472e+00 +-1.142453e+00 -6.569265e-01 +>ZYXI ROT=ZROT //14 +-3.082034e+02 -1.471554e+02 -7.805633e+01 -4.294175e+01 -2.400288e+01 -1.271598e+01 +-6.044060e+00 -2.974575e+00 -2.003354e+00 -1.762905e+00 -1.572207e+00 -1.247763e+00 +-8.773147e-01 -5.610836e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.084047e-03 -1.347419e-04 -1.616731e-06 1.231373e-07 -4.497040e-06 -8.139004e-04 + 5.185212e-03 -7.408454e-03 -1.105660e-02 -8.875561e-03 -6.082145e-03 -3.773345e-03 +-2.202928e-03 -1.254452e-03 +>ZYYI ROT=ZROT //14 + 1.174425e-04 -3.965747e-05 -1.548821e-07 7.399564e-08 -3.669803e-06 -3.041886e-04 + 3.720694e-03 8.227305e-03 9.926830e-04 -2.265700e-03 -2.914674e-03 -2.459150e-03 +-1.725878e-03 -1.090917e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.854712e-03 -4.288779e-04 -3.737920e-05 3.099600e-07 4.881824e-08 1.413676e-05 +-1.881028e-04 9.440465e-05 7.941906e-04 6.993545e-04 4.703242e-04 2.918392e-04 + 1.716757e-04 9.818403e-05 +>TXI.EXP //14 + 9.538013e-06 5.179509e-05 1.128044e-05 5.316503e-07 5.004923e-08 -1.645692e-06 + 1.315328e-05 -6.022829e-04 -2.802053e-04 1.334455e-04 2.156060e-04 1.855817e-04 + 1.318258e-04 8.418924e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.135839e-02 -2.503534e-05 1.267762e-05 1.481224e-06 -4.600351e-08 -7.734604e-07 + 1.584508e-05 -6.711476e-06 -4.892593e-05 -7.109507e-05 -5.982276e-05 -4.064099e-05 +-2.477696e-05 -1.434840e-05 +>TYI.EXP //14 + 6.683660e-04 8.373274e-06 -1.619685e-06 -1.601658e-06 -5.406362e-09 1.149695e-06 +-3.927320e-06 3.914957e-05 3.682476e-05 6.591778e-06 -1.511571e-05 -1.998523e-05 +-1.662779e-05 -1.136744e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par70.edi b/examples/data/NEConductor/par70.edi new file mode 100644 index 00000000..d6c29f5c --- /dev/null +++ b/examples/data/NEConductor/par70.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par70" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par70" +REFLAT=-30:14:07.7052 +REFLONG=139:44:19.0249 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par70" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.369371e-03 1.006352e-04 -1.127224e-05 -2.382431e-07 5.540790e-07 2.130628e-04 +-2.358613e-03 2.460870e-03 5.416276e-03 4.567669e-03 3.155384e-03 1.969999e-03 + 1.155738e-03 6.597769e-04 +>ZXXI ROT=ZROT //14 + 6.874439e-04 9.969192e-06 -5.302057e-06 1.004541e-07 2.308512e-08 -8.487353e-05 +-4.923419e-04 -4.402276e-03 -1.054954e-03 9.706398e-04 1.437623e-03 1.250199e-03 + 8.904631e-04 5.678070e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866168e+02 1.241417e+02 7.346932e+01 4.197589e+01 2.350537e+01 1.317069e+01 + 8.360085e+00 6.598269e+00 5.477656e+00 4.278244e+00 3.015640e+00 1.928046e+00 + 1.148795e+00 6.605816e-01 +>ZXYI ROT=ZROT //14 + 3.082272e+02 1.471561e+02 7.805617e+01 4.294174e+01 2.400291e+01 1.271837e+01 + 6.031754e+00 2.959189e+00 1.999751e+00 1.766341e+00 1.578474e+00 1.253829e+00 + 8.819044e-01 5.641118e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866494e+02 -1.241516e+02 -7.346943e+01 -4.197589e+01 -2.350537e+01 -1.317058e+01 +-8.361224e+00 -6.598580e+00 -5.471192e+00 -4.269349e+00 -3.007984e+00 -1.922676e+00 +-1.145454e+00 -6.586254e-01 +>ZYXI ROT=ZROT //14 +-3.082596e+02 -1.471582e+02 -7.805621e+01 -4.294172e+01 -2.400291e+01 -1.271834e+01 +-6.031600e+00 -2.963861e+00 -2.004616e+00 -1.767202e+00 -1.576743e+00 -1.251366e+00 +-8.797601e-01 -5.625981e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.198874e-03 -2.010771e-04 -3.454500e-06 2.413107e-07 -7.513890e-07 -2.501060e-04 + 2.795859e-03 -2.518326e-03 -7.438823e-03 -7.124409e-03 -5.343010e-03 -3.514694e-03 +-2.122155e-03 -1.227126e-03 +>ZYYI ROT=ZROT //14 + 3.486171e-04 -7.364625e-05 -5.739234e-07 9.692499e-08 3.664822e-07 8.849474e-05 + 4.262524e-04 5.950239e-03 2.344263e-03 -7.975394e-04 -1.944795e-03 -1.954403e-03 +-1.505797e-03 -1.004257e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.783464e-02 2.362299e-04 -3.182225e-05 -7.124919e-07 -2.135637e-08 -8.365624e-06 + 1.848112e-04 5.886309e-05 -1.089616e-03 -1.135311e-03 -8.146418e-04 -5.172004e-04 +-3.066478e-04 -1.759970e-04 +>TXI.EXP //14 +-1.281430e-03 -4.282470e-05 4.332504e-07 1.174921e-06 1.505110e-08 7.561219e-06 +-9.035764e-05 8.026763e-04 5.798204e-04 -9.784019e-05 -3.150807e-04 -3.046551e-04 +-2.264716e-04 -1.477108e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.305662e-02 -1.304885e-04 1.196260e-05 1.730470e-06 -3.657511e-08 2.878155e-06 +-8.176520e-05 -4.085770e-05 5.075941e-04 5.587682e-04 4.113713e-04 2.638893e-04 + 1.570936e-04 9.029587e-05 +>TYI.EXP //14 + 8.922293e-04 2.191451e-05 -1.034232e-06 -1.674559e-06 -1.538652e-08 -3.832883e-06 + 4.896403e-05 -3.738008e-04 -2.957127e-04 2.974221e-05 1.490323e-04 1.509187e-04 + 1.142267e-04 7.518235e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par71.edi b/examples/data/NEConductor/par71.edi new file mode 100644 index 00000000..ed37ecd8 --- /dev/null +++ b/examples/data/NEConductor/par71.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par71" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par71" +REFLAT=-30:13:51.4654 +REFLONG=139:44:19.2322 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par71" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.111149e-03 7.126276e-05 -1.093537e-05 -2.232484e-07 9.456924e-07 3.080714e-04 +-2.942606e-03 3.239179e-03 6.621721e-03 5.637812e-03 3.939833e-03 2.474976e-03 + 1.456092e-03 8.321800e-04 +>ZXXI ROT=ZROT //14 + 6.915514e-04 2.325802e-08 -4.804353e-06 1.088511e-07 6.478657e-08 -6.563882e-05 +-8.953308e-04 -5.291208e-03 -1.246710e-03 1.155880e-03 1.755875e-03 1.549262e-03 + 1.112491e-03 7.125826e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866155e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.317037e+01 + 8.361816e+00 6.595272e+00 5.473642e+00 4.274780e+00 3.013114e+00 1.926421e+00 + 1.147828e+00 6.600256e-01 +>ZXYI ROT=ZROT //14 + 3.082300e+02 1.471561e+02 7.805618e+01 4.294173e+01 2.400291e+01 1.271808e+01 + 6.033703e+00 2.961931e+00 2.000167e+00 1.765658e+00 1.577422e+00 1.252859e+00 + 8.811874e-01 5.636446e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866347e+02 -1.241503e+02 -7.346937e+01 -4.197589e+01 -2.350537e+01 -1.317027e+01 +-8.362866e+00 -6.595355e+00 -5.467862e+00 -4.266932e+00 -3.006367e+00 -1.921687e+00 +-1.144882e+00 -6.583010e-01 +>ZYXI ROT=ZROT //14 +-3.082490e+02 -1.471574e+02 -7.805624e+01 -4.294172e+01 -2.400290e+01 -1.271802e+01 +-6.033677e+00 -2.966113e+00 -2.004364e+00 -1.766375e+00 -1.575885e+00 -1.250684e+00 +-8.792961e-01 -5.623100e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.595110e-03 -1.870662e-04 -3.160047e-06 2.205290e-07 -1.332725e-06 -3.525105e-04 + 3.399362e-03 -3.408153e-03 -8.561556e-03 -8.020141e-03 -5.966085e-03 -3.902856e-03 +-2.348667e-03 -1.356002e-03 +>ZYYI ROT=ZROT //14 + 3.188090e-04 -6.715922e-05 -5.387442e-07 9.393361e-08 1.917690e-07 5.984839e-05 + 8.940051e-04 6.776674e-03 2.392250e-03 -1.028772e-03 -2.239512e-03 -2.205843e-03 +-1.682999e-03 -1.116349e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.670673e-02 1.909959e-04 -3.142302e-05 -8.454542e-07 -3.585058e-08 -1.151306e-05 + 2.178516e-04 7.765677e-06 -1.148848e-03 -1.154964e-03 -8.216203e-04 -5.205172e-04 +-3.084374e-04 -1.769931e-04 +>TXI.EXP //14 +-1.139185e-03 -3.613500e-05 4.470399e-07 1.267290e-06 5.849440e-09 7.530512e-06 +-8.059450e-05 8.595100e-04 5.589155e-04 -1.214020e-04 -3.264011e-04 -3.097212e-04 +-2.288603e-04 -1.489027e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.301625e-02 -1.294781e-04 1.197952e-05 1.726965e-06 -3.442266e-08 4.732858e-06 +-1.060197e-04 -1.694702e-05 5.787484e-04 6.100876e-04 4.441700e-04 2.841016e-04 + 1.689871e-04 9.710567e-05 +>TYI.EXP //14 + 8.836568e-04 2.184374e-05 -1.034621e-06 -1.672502e-06 -1.300192e-08 -4.316224e-06 + 4.799217e-05 -4.329962e-04 -3.060281e-04 4.608274e-05 1.664476e-04 1.645227e-04 + 1.235872e-04 8.109089e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par710.edi b/examples/data/NEConductor/par710.edi new file mode 100644 index 00000000..c3674755 --- /dev/null +++ b/examples/data/NEConductor/par710.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par710" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par710" +REFLAT=-30:11:25.307 +REFLONG=139:44:21.0962 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par710" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 2.383465e-03 -1.604156e-04 -5.946140e-06 -8.403412e-08 4.738729e-06 6.398343e-04 +-3.853598e-03 6.032038e-03 7.250239e-03 4.790019e-03 2.850000e-03 1.603262e-03 + 8.825985e-04 4.889136e-04 +>ZXXI ROT=ZROT //14 + 3.612108e-04 -8.195329e-05 7.937087e-08 1.997895e-07 3.248476e-06 2.477825e-04 +-3.072507e-03 -5.410836e-03 4.961138e-04 2.088513e-03 1.895785e-03 1.323099e-03 + 8.168588e-04 4.744432e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866128e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.316940e+01 + 8.366562e+00 6.585413e+00 5.461146e+00 4.264011e+00 3.005282e+00 1.921386e+00 + 1.144833e+00 6.583066e-01 +>ZXYI ROT=ZROT //14 + 3.082339e+02 1.471562e+02 7.805617e+01 4.294173e+01 2.400289e+01 1.271669e+01 + 6.041067e+00 2.969857e+00 2.001275e+00 1.763460e+00 1.574123e+00 1.249838e+00 + 8.789619e-01 5.621976e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865635e+02 -1.241464e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.316943e+01 +-8.366776e+00 -6.585909e+00 -5.459076e+00 -4.260728e+00 -3.002365e+00 -1.919323e+00 +-1.143546e+00 -6.575524e-01 +>ZYXI ROT=ZROT //14 +-3.082020e+02 -1.471560e+02 -7.805636e+01 -4.294174e+01 -2.400289e+01 -1.271669e+01 +-6.040734e+00 -2.971372e+00 -2.003284e+00 -1.763975e+00 -1.573547e+00 -1.248924e+00 +-8.781476e-01 -5.616180e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.865063e-03 -1.448881e-04 -1.828277e-06 8.268344e-08 -4.197511e-06 -6.809258e-04 + 4.317573e-03 -6.309825e-03 -8.572163e-03 -6.297383e-03 -4.066154e-03 -2.428288e-03 +-1.387321e-03 -7.822656e-04 +>ZYYI ROT=ZROT //14 + 1.381445e-04 -4.245473e-05 -1.262288e-07 1.183841e-07 -3.020860e-06 -2.113194e-04 + 3.064383e-03 6.460349e-03 1.539468e-04 -2.093717e-03 -2.249751e-03 -1.740823e-03 +-1.158143e-03 -7.082638e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.150237e-03 -5.101024e-04 -3.654291e-05 5.365958e-07 8.273205e-08 1.405180e-05 +-1.982583e-04 7.754315e-05 8.780737e-04 7.956129e-04 5.417043e-04 3.377067e-04 + 1.989955e-04 1.138864e-04 +>TXI.EXP //14 + 1.613533e-04 6.289851e-05 1.236819e-05 3.632037e-07 4.787535e-08 -3.138568e-06 + 2.689599e-05 -6.642613e-04 -3.354453e-04 1.363989e-04 2.406865e-04 2.115393e-04 + 1.515941e-04 9.722383e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.275954e-02 -1.222334e-04 1.209177e-05 1.706001e-06 -4.697310e-08 2.988825e-06 +-3.584091e-05 1.385324e-05 1.761607e-04 1.357829e-04 8.238686e-05 4.839574e-05 + 2.777132e-05 1.575514e-05 +>TYI.EXP //14 + 8.312692e-04 2.127011e-05 -1.043442e-06 -1.661894e-06 -2.311863e-11 2.185035e-07 + 3.000736e-06 -1.315004e-04 -5.090241e-05 3.993336e-05 4.674625e-05 3.516330e-05 + 2.316115e-05 1.423832e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par72.edi b/examples/data/NEConductor/par72.edi new file mode 100644 index 00000000..a8b6444d --- /dev/null +++ b/examples/data/NEConductor/par72.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par72" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par72" +REFLAT=-30:13:35.2256 +REFLONG=139:44:19.4395 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par72" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.783790e-03 4.256921e-05 -1.056810e-05 -2.063310e-07 1.596469e-06 4.223147e-04 +-3.581869e-03 4.159051e-03 7.965142e-03 6.810553e-03 4.793504e-03 3.022685e-03 + 1.781336e-03 1.018744e-03 +>ZXXI ROT=ZROT //14 + 6.851151e-04 -1.037588e-05 -4.304001e-06 1.174098e-07 3.157672e-07 -2.353482e-05 +-1.421563e-03 -6.255887e-03 -1.427857e-03 1.375558e-03 2.110220e-03 1.877211e-03 + 1.354384e-03 8.697968e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866146e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.317002e+01 + 8.363744e+00 6.591713e+00 5.468794e+00 4.270528e+00 3.009990e+00 1.924400e+00 + 1.146621e+00 6.593320e-01 +>ZXYI ROT=ZROT //14 + 3.082318e+02 1.471561e+02 7.805618e+01 4.294173e+01 2.400290e+01 1.271766e+01 + 6.036140e+00 2.965169e+00 2.000737e+00 1.764866e+00 1.576148e+00 1.251668e+00 + 8.803008e-01 5.630647e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866227e+02 -1.241491e+02 -7.346931e+01 -4.197588e+01 -2.350537e+01 -1.316995e+01 +-8.364518e+00 -6.591737e+00 -5.464278e+00 -4.264369e+00 -3.004669e+00 -1.920656e+00 +-1.144288e+00 -6.579650e-01 +>ZYXI ROT=ZROT //14 +-3.082399e+02 -1.471566e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271758e+01 +-6.036189e+00 -2.968414e+00 -2.004017e+00 -1.765451e+00 -1.574956e+00 -1.249960e+00 +-8.788085e-01 -5.620091e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.055786e-03 -1.749694e-04 -2.904304e-06 1.997941e-07 -2.093206e-06 -4.699394e-04 + 4.009434e-03 -4.407417e-03 -9.681183e-03 -8.865182e-03 -6.533113e-03 -4.247218e-03 +-2.546526e-03 -1.467754e-03 +>ZYYI ROT=ZROT //14 + 2.826617e-04 -6.147175e-05 -4.968698e-07 9.289599e-08 -3.026416e-07 4.828660e-06 + 1.489860e-03 7.561635e-03 2.367963e-03 -1.292530e-03 -2.535273e-03 -2.443849e-03 +-1.844727e-03 -1.216327e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.547214e-02 1.346358e-04 -3.147133e-05 -9.093627e-07 -5.043818e-08 -1.429322e-05 + 2.402339e-04 -4.192306e-05 -1.156392e-03 -1.129239e-03 -7.979460e-04 -5.047123e-04 +-2.989483e-04 -1.715282e-04 +>TXI.EXP //14 +-9.971695e-04 -2.781324e-05 9.355162e-07 1.305085e-06 -5.381285e-09 6.768086e-06 +-6.505896e-05 8.752295e-04 5.185651e-04 -1.366454e-04 -3.239228e-04 -3.027786e-04 +-2.226551e-04 -1.445813e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.297920e-02 -1.285384e-04 1.199527e-05 1.723755e-06 -3.168271e-08 6.987828e-06 +-1.310199e-04 1.166838e-05 6.447676e-04 6.535724e-04 4.706175e-04 3.000666e-04 + 1.783083e-04 1.024273e-04 +>TYI.EXP //14 + 8.757960e-04 2.177746e-05 -1.035097e-06 -1.670603e-06 -9.867738e-09 -4.424172e-06 + 4.334145e-05 -4.878568e-04 -3.103171e-04 6.335460e-05 1.822299e-04 1.759990e-04 + 1.311985e-04 8.580506e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par73.edi b/examples/data/NEConductor/par73.edi new file mode 100644 index 00000000..36effc4d --- /dev/null +++ b/examples/data/NEConductor/par73.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par73" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par73" +REFLAT=-30:13:18.9859 +REFLONG=139:44:19.6468 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par73" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.393117e-03 1.447905e-05 -1.016122e-05 -1.877512e-07 2.418235e-06 5.484396e-04 +-4.230517e-03 5.176544e-03 9.351690e-03 7.988754e-03 5.640841e-03 3.562986e-03 + 2.101178e-03 1.201962e-03 +>ZXXI ROT=ZROT //14 + 6.676079e-04 -2.092822e-05 -3.800524e-06 1.273684e-07 1.020531e-06 4.451313e-05 +-2.053192e-03 -7.223826e-03 -1.567702e-03 1.622609e-03 2.475252e-03 2.206928e-03 + 1.594873e-03 1.025183e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866140e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.316968e+01 + 8.365762e+00 6.587741e+00 5.463326e+00 4.265679e+00 3.006409e+00 1.922076e+00 + 1.145232e+00 6.585323e-01 +>ZXYI ROT=ZROT //14 + 3.082329e+02 1.471562e+02 7.805618e+01 4.294173e+01 2.400289e+01 1.271713e+01 + 6.038969e+00 2.968750e+00 2.001433e+00 1.764000e+00 1.574710e+00 1.250310e+00 + 8.792846e-01 5.623981e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866126e+02 -1.241480e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316965e+01 +-8.366062e+00 -6.587942e+00 -5.460642e+00 -4.261803e+00 -3.002989e+00 -1.919643e+00 +-1.143707e+00 -6.576368e-01 +>ZYXI ROT=ZROT //14 +-3.082320e+02 -1.471560e+02 -7.805625e+01 -4.294173e+01 -2.400289e+01 -1.271704e+01 +-6.038982e+00 -2.970633e+00 -2.003596e+00 -1.764481e+00 -1.574010e+00 -1.249235e+00 +-8.783253e-01 -5.617130e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.576739e-03 -1.647370e-04 -2.683665e-06 1.788748e-07 -2.920327e-06 -5.921524e-04 + 4.569285e-03 -5.449097e-03 -1.068864e-02 -9.554840e-03 -6.964162e-03 -4.495172e-03 +-2.684074e-03 -1.544118e-03 +>ZYYI ROT=ZROT //14 + 2.439117e-04 -5.654752e-05 -4.512240e-07 9.302016e-08 -1.246979e-06 -7.732662e-05 + 2.179525e-03 8.224837e-03 2.246785e-03 -1.576605e-03 -2.803194e-03 -2.639096e-03 +-1.968398e-03 -1.289176e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.414779e-02 6.857300e-05 -3.199368e-05 -8.969484e-07 -5.940768e-08 -1.585003e-05 + 2.435655e-04 -8.032790e-05 -1.089966e-03 -1.042265e-03 -7.336996e-04 -4.637940e-04 +-2.746911e-04 -1.576132e-04 +>TXI.EXP //14 +-8.553382e-04 -1.815904e-05 1.859556e-06 1.292355e-06 -2.885382e-08 5.415148e-06 +-4.638571e-05 8.320720e-04 4.564033e-04 -1.381154e-04 -3.020594e-04 -2.796091e-04 +-2.050267e-04 -1.329894e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.294507e-02 -1.276582e-04 1.200993e-05 1.720792e-06 -2.798289e-08 9.355426e-06 +-1.533123e-04 4.182656e-05 6.962084e-04 6.815892e-04 4.855518e-04 3.085452e-04 + 1.831403e-04 1.051613e-04 +>TYI.EXP //14 + 8.685819e-04 2.171449e-05 -1.035666e-06 -1.668838e-06 -5.470318e-09 -4.029169e-06 + 3.521785e-05 -5.306806e-04 -3.065619e-04 7.975612e-05 1.939634e-04 1.832979e-04 + 1.355993e-04 8.838713e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par74.edi b/examples/data/NEConductor/par74.edi new file mode 100644 index 00000000..38ee46fa --- /dev/null +++ b/examples/data/NEConductor/par74.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par74" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par74" +REFLAT=-30:13:02.746 +REFLONG=139:44:19.854 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par74" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.945042e-03 -1.305141e-05 -9.708943e-06 -1.682600e-07 3.320773e-06 6.729976e-04 +-4.819118e-03 6.200215e-03 1.062074e-02 9.017089e-03 6.363467e-03 4.017983e-03 + 2.368729e-03 1.354778e-03 +>ZXXI ROT=ZROT //14 + 6.395778e-04 -3.135611e-05 -3.290635e-06 1.392590e-07 1.897507e-06 1.344945e-04 +-2.735561e-03 -8.080571e-03 -1.627118e-03 1.879368e-03 2.808244e-03 2.495022e-03 + 1.800537e-03 1.156511e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866137e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350538e+01 1.316936e+01 + 8.367684e+00 6.583723e+00 5.457766e+00 4.260712e+00 3.002730e+00 1.919683e+00 + 1.143799e+00 6.577073e-01 +>ZXYI ROT=ZROT //14 + 3.082335e+02 1.471561e+02 7.805618e+01 4.294173e+01 2.400289e+01 1.271653e+01 + 6.041918e+00 2.972333e+00 2.002170e+00 1.763134e+00 1.573246e+00 1.248919e+00 + 8.782405e-01 5.617119e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866039e+02 -1.241472e+02 -7.346920e+01 -4.197589e+01 -2.350538e+01 -1.316941e+01 +-8.367377e+00 -6.584328e+00 -5.457273e+00 -4.259453e+00 -3.001467e+00 -1.918732e+00 +-1.143187e+00 -6.573437e-01 +>ZYXI ROT=ZROT //14 +-3.082252e+02 -1.471555e+02 -7.805625e+01 -4.294173e+01 -2.400289e+01 -1.271646e+01 +-6.041766e+00 -2.972595e+00 -2.003152e+00 -1.763556e+00 -1.573129e+00 -1.248570e+00 +-8.778870e-01 -5.614462e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.156050e-03 -1.563388e-04 -2.494063e-06 1.581110e-07 -3.657517e-06 -7.046796e-04 + 5.015457e-03 -6.429286e-03 -1.145009e-02 -9.971109e-03 -7.172975e-03 -4.591398e-03 +-2.728496e-03 -1.566283e-03 +>ZYYI ROT=ZROT //14 + 2.054269e-04 -5.236163e-05 -4.034636e-07 9.369913e-08 -2.558560e-06 -1.783824e-04 + 2.890285e-03 8.678233e-03 2.013604e-03 -1.858787e-03 -3.007481e-03 -2.758409e-03 +-2.029562e-03 -1.319021e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.274669e-02 -5.546094e-06 -3.292834e-05 -8.095035e-07 -4.480764e-08 -1.530535e-05 + 2.206367e-04 -9.735071e-05 -9.322573e-04 -8.822227e-04 -6.215764e-04 -3.933692e-04 +-2.331122e-04 -1.337936e-04 +>TXI.EXP //14 +-7.134869e-04 -7.463182e-06 3.148322e-06 1.235127e-06 -2.341953e-08 3.867119e-06 +-2.856226e-05 7.165742e-04 3.718370e-04 -1.212834e-04 -2.565148e-04 -2.370509e-04 +-1.738795e-04 -1.128335e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.291349e-02 -1.268264e-04 1.202362e-05 1.718016e-06 -2.350559e-08 1.135543e-05 +-1.684217e-04 6.848777e-05 7.214162e-04 6.852942e-04 4.831827e-04 3.059568e-04 + 1.813767e-04 1.041021e-04 +>TYI.EXP //14 + 8.619507e-04 2.165368e-05 -1.036341e-06 -1.667194e-06 9.580285e-10 -3.163727e-06 + 2.500710e-05 -5.522462e-04 -2.930814e-04 9.273017e-05 1.986989e-04 1.840494e-04 + 1.351434e-04 8.779494e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par76.edi b/examples/data/NEConductor/par76.edi new file mode 100644 index 00000000..d73d2446 --- /dev/null +++ b/examples/data/NEConductor/par76.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par76" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par76" +REFLAT=-30:12:30.2664 +REFLONG=139:44:20.2682 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par76" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.899684e-03 -6.624866e-05 -8.657618e-06 -1.418254e-07 4.863932e-06 8.459333e-04 +-5.481136e-03 7.700311e-03 1.195192e-02 9.846166e-03 6.855533e-03 4.294946e-03 + 2.521028e-03 1.439070e-03 +>ZXXI ROT=ZROT //14 + 5.592874e-04 -5.098281e-05 -2.234529e-06 1.677663e-07 4.790633e-06 3.180394e-04 +-3.857537e-03 -8.885920e-03 -1.360355e-03 2.298793e-03 3.152500e-03 2.728976e-03 + 1.943400e-03 1.238976e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866134e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350538e+01 1.316895e+01 + 8.370251e+00 6.577964e+00 5.449876e+00 4.253650e+00 2.997494e+00 1.916279e+00 + 1.141761e+00 6.565335e-01 +>ZXYI ROT=ZROT //14 + 3.082339e+02 1.471562e+02 7.805618e+01 4.294173e+01 2.400287e+01 1.271559e+01 + 6.046294e+00 2.977312e+00 2.003206e+00 1.761905e+00 1.571164e+00 1.246941e+00 + 8.767553e-01 5.607356e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865892e+02 -1.241460e+02 -7.346916e+01 -4.197590e+01 -2.350538e+01 -1.316913e+01 +-8.368919e+00 -6.579518e+00 -5.452934e+00 -4.256455e+00 -2.999553e+00 -1.917604e+00 +-1.142549e+00 -6.569858e-01 +>ZYXI ROT=ZROT //14 +-3.082144e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400287e+01 -1.271560e+01 +-6.045645e+00 -2.974981e+00 -2.002508e+00 -1.762325e+00 -1.571981e+00 -1.247720e+00 +-8.773360e-01 -5.611148e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.484497e-03 -1.450015e-04 -2.198092e-06 1.274027e-07 -4.751927e-06 -8.441654e-04 + 5.385271e-03 -7.718231e-03 -1.180079e-02 -9.681037e-03 -6.734306e-03 -4.219510e-03 +-2.477351e-03 -1.414346e-03 +>ZYYI ROT=ZROT //14 + 1.398550e-04 -4.615511e-05 -3.079061e-07 9.736021e-08 -4.905887e-06 -3.580796e-04 + 3.956411e-03 8.727822e-03 1.272191e-03 -2.292158e-03 -3.107212e-03 -2.683344e-03 +-1.909947e-03 -1.217619e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.751828e-03 -1.705991e-04 -3.544252e-05 -4.474886e-07 -1.400904e-08 -6.690070e-06 + 9.217823e-05 -5.162006e-05 -3.512110e-04 -3.520307e-04 -2.593017e-04 -1.672978e-04 +-9.988502e-05 -5.751566e-05 +>TXI.EXP //14 +-4.283431e-04 1.593093e-05 6.427859e-06 1.015883e-06 -2.402841e-09 1.723748e-06 +-7.270980e-06 2.760452e-04 1.458823e-04 -3.318030e-05 -9.689583e-05 -9.595033e-05 +-7.253839e-05 -4.777400e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.285669e-02 -1.252646e-04 1.204856e-05 1.713040e-06 -2.223121e-08 1.220658e-05 +-1.612426e-04 8.911761e-05 6.533655e-04 5.923344e-04 4.095198e-04 2.573266e-04 + 1.520984e-04 8.720510e-05 +>TYI.EXP //14 + 8.502070e-04 2.153406e-05 -1.038072e-06 -1.664447e-06 6.828845e-09 -1.106879e-06 + 7.954164e-06 -5.012827e-04 -2.349908e-04 9.812375e-05 1.772785e-04 1.585794e-04 + 1.147859e-04 7.407375e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par77.edi b/examples/data/NEConductor/par77.edi new file mode 100644 index 00000000..1256e466 --- /dev/null +++ b/examples/data/NEConductor/par77.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par77" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par77" +REFLAT=-30:12:14.0266 +REFLONG=139:44:20.4753 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par77" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.314062e-03 -9.162851e-05 -8.056742e-06 -1.329814e-07 5.277022e-06 8.636677e-04 +-5.423195e-03 7.894080e-03 1.165095e-02 9.343595e-03 6.407962e-03 3.978246e-03 + 2.323464e-03 1.323321e-03 +>ZXXI ROT=ZROT //14 + 5.116705e-04 -5.989436e-05 -1.682016e-06 1.806214e-07 5.741379e-06 3.680503e-04 +-4.079879e-03 -8.605369e-03 -1.007722e-03 2.392616e-03 3.068687e-03 2.590084e-03 + 1.818849e-03 1.150162e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866132e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350538e+01 1.316890e+01 + 8.370445e+00 6.577423e+00 5.449275e+00 4.253149e+00 2.997138e+00 1.916053e+00 + 1.141628e+00 6.564575e-01 +>ZXYI ROT=ZROT //14 + 3.082340e+02 1.471562e+02 7.805618e+01 4.294173e+01 2.400287e+01 1.271549e+01 + 6.046770e+00 2.977643e+00 2.003226e+00 1.761784e+00 1.571003e+00 1.246800e+00 + 8.766539e-01 5.606706e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865826e+02 -1.241458e+02 -7.346917e+01 -4.197590e+01 -2.350539e+01 -1.316909e+01 +-8.369034e+00 -6.579122e+00 -5.452632e+00 -4.256243e+00 -2.999429e+00 -1.917540e+00 +-1.142517e+00 -6.569692e-01 +>ZYXI ROT=ZROT //14 +-3.082103e+02 -1.471550e+02 -7.805628e+01 -4.294174e+01 -2.400287e+01 -1.271552e+01 +-6.046010e+00 -2.975109e+00 -2.002449e+00 -1.762228e+00 -1.571891e+00 -1.247659e+00 +-8.773007e-01 -5.610960e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.235053e-03 -1.420715e-04 -2.084116e-06 1.177720e-07 -4.569415e-06 -8.558893e-04 + 5.297093e-03 -7.849454e-03 -1.134904e-02 -9.018150e-03 -6.149817e-03 -3.804206e-03 +-2.217265e-03 -1.261662e-03 +>ZYYI ROT=ZROT //14 + 1.186674e-04 -4.412239e-05 -2.612348e-07 1.011136e-07 -5.778656e-06 -3.918963e-04 + 4.125559e-03 8.345569e-03 8.669044e-04 -2.384323e-03 -2.989957e-03 -2.500325e-03 +-1.746371e-03 -1.100787e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.171441e-03 -2.575603e-04 -3.659901e-05 -2.036830e-07 -3.568838e-09 8.835644e-08 + 2.717421e-06 -2.527169e-06 1.485242e-05 -2.470721e-05 -3.568887e-05 -2.755800e-05 +-1.746582e-05 -1.031079e-05 +>TXI.EXP //14 +-2.841550e-04 2.807766e-05 8.185831e-06 8.680128e-07 2.129633e-08 1.037219e-06 +-2.645168e-06 -4.125492e-06 1.651756e-05 2.484096e-05 2.440836e-06 -8.626310e-06 +-9.857857e-06 -7.525984e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.283083e-02 -1.245125e-04 1.206008e-05 1.710981e-06 -2.926429e-08 1.064379e-05 +-1.371095e-04 7.813105e-05 5.569371e-04 4.954335e-04 3.388025e-04 2.118483e-04 + 1.249650e-04 7.159654e-05 +>TYI.EXP //14 + 8.449840e-04 2.147297e-05 -1.039156e-06 -1.663494e-06 8.552928e-09 -5.061711e-07 + 4.607694e-06 -4.268196e-04 -1.928034e-04 8.867055e-05 1.504707e-04 1.323132e-04 + 9.501912e-05 6.108460e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par78.edi b/examples/data/NEConductor/par78.edi new file mode 100644 index 00000000..0763d10d --- /dev/null +++ b/examples/data/NEConductor/par78.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par78" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par78" +REFLAT=-30:11:57.7867 +REFLONG=139:44:20.6823 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par78" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.694870e-03 -1.159271e-04 -7.405264e-06 -1.211805e-07 5.342916e-06 8.288549e-04 +-5.089478e-03 7.627124e-03 1.064684e-02 8.208491e-03 5.492929e-03 3.358223e-03 + 1.944516e-03 1.103184e-03 +>ZXXI ROT=ZROT //14 + 4.617691e-04 -6.807406e-05 -1.111508e-06 1.904440e-07 5.757990e-06 3.691902e-04 +-3.993213e-03 -7.845822e-03 -5.403871e-04 2.381020e-03 2.799431e-03 2.274659e-03 + 1.561887e-03 9.744083e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866131e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350538e+01 1.316895e+01 + 8.369800e+00 6.578743e+00 5.451337e+00 4.255065e+00 2.998587e+00 1.917007e+00 + 1.142203e+00 6.567897e-01 +>ZXYI ROT=ZROT //14 + 3.082340e+02 1.471562e+02 7.805618e+01 4.294173e+01 2.400287e+01 1.271568e+01 + 6.045856e+00 2.976272e+00 2.002845e+00 1.762054e+00 1.571544e+00 1.247336e+00 + 8.770643e-01 5.609434e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865761e+02 -1.241457e+02 -7.346922e+01 -4.197590e+01 -2.350538e+01 -1.316912e+01 +-8.368690e+00 -6.580235e+00 -5.453712e+00 -4.256982e+00 -2.999917e+00 -1.917841e+00 +-1.142693e+00 -6.570697e-01 +>ZYXI ROT=ZROT //14 +-3.082068e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400287e+01 -1.271571e+01 +-6.045155e+00 -2.974475e+00 -2.002594e+00 -1.762520e+00 -1.572160e+00 -1.247866e+00 +-8.774418e-01 -5.611842e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.047288e-03 -1.410116e-04 -1.985547e-06 1.069288e-07 -5.456255e-06 -8.291021e-04 + 5.065457e-03 -7.615194e-03 -1.058098e-02 -8.154818e-03 -5.449543e-03 -3.326730e-03 +-1.924325e-03 -1.091189e-03 +>ZYYI ROT=ZROT //14 + 1.094074e-04 -4.280762e-05 -2.146788e-07 1.056063e-07 -5.598119e-06 -3.716631e-04 + 4.002377e-03 7.787119e-03 5.245574e-04 -2.374302e-03 -2.787096e-03 -2.260357e-03 +-1.549375e-03 -9.654013e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.542112e-03 -3.446532e-04 -3.735045e-05 5.620496e-08 2.242906e-08 6.646339e-06 +-8.410167e-05 4.396141e-05 3.685407e-04 2.970133e-04 1.864974e-04 1.119660e-04 + 6.498765e-05 3.694890e-05 +>TXI.EXP //14 +-1.381938e-04 4.015234e-05 9.851659e-06 7.042786e-07 4.983339e-08 1.109486e-07 + 2.764380e-06 -2.753435e-04 -1.124504e-04 7.783717e-05 9.872241e-05 7.743355e-05 + 5.239412e-05 3.260272e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.280624e-02 -1.237646e-04 1.207107e-05 1.709186e-06 -4.046730e-08 8.153043e-06 +-1.039287e-04 5.719022e-05 4.329612e-04 3.770281e-04 2.539078e-04 1.575971e-04 + 9.267269e-05 5.303611e-05 +>TYI.EXP //14 + 8.401210e-04 2.140947e-05 -1.040404e-06 -1.662806e-06 1.127201e-08 -2.249988e-07 + 4.091114e-06 -3.307917e-04 -1.456003e-04 7.346311e-05 1.166070e-04 1.002901e-04 + 7.123411e-05 4.554713e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par79.edi b/examples/data/NEConductor/par79.edi new file mode 100644 index 00000000..ebdcdc8b --- /dev/null +++ b/examples/data/NEConductor/par79.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par79" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par79" +REFLAT=-30:11:41.5468 +REFLONG=139:44:20.8893 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par79" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.048962e-03 -1.389270e-04 -6.702300e-06 -1.041481e-07 5.207902e-06 7.492772e-04 +-4.535400e-03 6.958112e-03 9.090842e-03 6.603649e-03 4.240150e-03 2.522298e-03 + 1.437463e-03 8.095704e-04 +>ZXXI ROT=ZROT //14 + 4.111454e-04 -7.544692e-05 -5.236860e-07 1.967600e-07 4.644196e-06 3.234803e-04 +-3.625741e-03 -6.719326e-03 -1.627333e-05 2.270435e-03 2.384949e-03 1.828078e-03 + 1.209023e-03 7.365403e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866129e+02 1.241417e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.316913e+01 + 8.368427e+00 6.581610e+00 5.455594e+00 4.258964e+00 3.001512e+00 1.918923e+00 + 1.143354e+00 6.574540e-01 +>ZXYI ROT=ZROT //14 + 3.082340e+02 1.471562e+02 7.805617e+01 4.294173e+01 2.400288e+01 1.271612e+01 + 6.043798e+00 2.973490e+00 2.002143e+00 1.762653e+00 1.572662e+00 1.248426e+00 + 8.778931e-01 5.614919e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865698e+02 -1.241459e+02 -7.346928e+01 -4.197590e+01 -2.350538e+01 -1.316924e+01 +-8.367917e+00 -6.582635e+00 -5.455977e+00 -4.258553e+00 -3.000942e+00 -1.918463e+00 +-1.143052e+00 -6.572730e-01 +>ZYXI ROT=ZROT //14 +-3.082040e+02 -1.471555e+02 -7.805633e+01 -4.294174e+01 -2.400288e+01 -1.271614e+01 +-6.043272e+00 -2.973174e+00 -2.002897e+00 -1.763139e+00 -1.572743e+00 -1.248309e+00 +-8.777378e-01 -5.613665e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.923654e-03 -1.419053e-04 -1.899483e-06 9.484749e-08 -4.520684e-06 -7.684618e-04 + 4.728668e-03 -7.071161e-03 -9.617980e-03 -7.216748e-03 -4.732956e-03 -2.854183e-03 +-1.639489e-03 -9.267109e-04 +>ZYYI ROT=ZROT //14 + 1.150302e-04 -4.223413e-05 -1.687114e-07 1.112823e-07 -3.788297e-06 -3.052672e-04 + 3.622062e-03 7.137358e-03 2.848522e-04 -2.269973e-03 -2.530361e-03 -1.998452e-03 +-1.347033e-03 -8.305496e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.867368e-03 -4.296246e-04 -3.742265e-05 3.104539e-07 4.558381e-08 1.156005e-05 +-1.539814e-04 7.318953e-05 6.653067e-04 5.782035e-04 3.843520e-04 2.371376e-04 + 1.391705e-04 7.951329e-05 +>TXI.EXP //14 + 1.011115e-05 5.186307e-05 1.129080e-05 5.328598e-07 5.638376e-08 -1.309278e-06 + 1.234850e-05 -5.026239e-04 -2.321675e-04 1.165149e-04 1.804899e-04 1.529132e-04 + 1.077317e-04 6.850372e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.278258e-02 -1.230090e-04 1.208160e-05 1.707548e-06 -4.497075e-08 5.394665e-06 +-6.815109e-05 3.354748e-05 3.001406e-04 2.523263e-04 1.651549e-04 1.010507e-04 + 5.905414e-05 3.372210e-05 +>TYI.EXP //14 + 8.355665e-04 2.134229e-05 -1.041827e-06 -1.662296e-06 8.191074e-09 -4.178708e-08 + 4.186340e-06 -2.277382e-04 -9.709647e-05 5.610188e-05 8.051148e-05 6.660764e-05 + 4.635283e-05 2.933547e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par80.edi b/examples/data/NEConductor/par80.edi new file mode 100644 index 00000000..cbdd3182 --- /dev/null +++ b/examples/data/NEConductor/par80.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par80" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par80" +REFLAT=-30:14:07.8849 +REFLONG=139:44:37.7276 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par80" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.057555e-02 1.051642e-04 -1.571282e-05 -3.211215e-07 3.991308e-07 2.129791e-04 +-2.497182e-03 2.321556e-03 6.347388e-03 5.865329e-03 4.271986e-03 2.753676e-03 + 1.643676e-03 9.455417e-04 +>ZXXI ROT=ZROT //14 + 1.090429e-03 6.081691e-06 -6.799976e-06 1.717765e-07 2.581299e-07 -9.390861e-05 +-3.742577e-04 -5.100045e-03 -1.799942e-03 8.355458e-04 1.687008e-03 1.608276e-03 + 1.202930e-03 7.886460e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866277e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317076e+01 + 8.359859e+00 6.599037e+00 5.477682e+00 4.277827e+00 3.015187e+00 1.927699e+00 + 1.148570e+00 6.604475e-01 +>ZXYI ROT=ZROT //14 + 3.082349e+02 1.471565e+02 7.805615e+01 4.294173e+01 2.400291e+01 1.271845e+01 + 6.031208e+00 2.959237e+00 2.000328e+00 1.766606e+00 1.578475e+00 1.253717e+00 + 8.817801e-01 5.640157e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866489e+02 -1.241516e+02 -7.346944e+01 -4.197589e+01 -2.350537e+01 -1.317067e+01 +-8.360700e+00 -6.599446e+00 -5.472452e+00 -4.270488e+00 -3.008830e+00 -1.923225e+00 +-1.145782e+00 -6.588139e-01 +>ZYXI ROT=ZROT //14 +-3.082600e+02 -1.471582e+02 -7.805621e+01 -4.294172e+01 -2.400291e+01 -1.271842e+01 +-6.031060e+00 -2.962984e+00 -2.004424e+00 -1.767387e+00 -1.577077e+00 -1.251685e+00 +-8.799997e-01 -5.627553e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.278796e-03 -2.209015e-04 -3.848485e-06 2.254563e-07 -7.336118e-07 -2.474339e-04 + 2.843600e-03 -2.338669e-03 -8.058051e-03 -8.068029e-03 -6.171228e-03 -4.100597e-03 +-2.488262e-03 -1.441849e-03 +>ZYYI ROT=ZROT //14 + 3.736452e-04 -8.150903e-05 -6.587413e-07 1.281606e-07 2.930654e-07 9.122661e-05 + 3.299999e-04 6.395711e-03 2.930168e-03 -6.639670e-04 -2.113587e-03 -2.214829e-03 +-1.737217e-03 -1.169050e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.788892e-02 2.366289e-04 -3.195563e-05 -7.146980e-07 -1.670876e-08 -7.135531e-06 + 1.721054e-04 7.541212e-05 -1.057307e-03 -1.123052e-03 -8.111916e-04 -5.161779e-04 +-3.062868e-04 -1.758405e-04 +>TXI.EXP //14 +-1.288537e-03 -4.285020e-05 4.559265e-07 1.178567e-06 2.403993e-08 7.535616e-06 +-9.318344e-05 7.751709e-04 5.850570e-04 -8.478937e-05 -3.081382e-04 -3.017522e-04 +-2.253426e-04 -1.472749e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.439992e-02 -2.224573e-04 1.123923e-05 1.869852e-06 -3.079192e-08 3.478971e-06 +-9.929656e-05 -5.666507e-05 6.340590e-04 6.970585e-04 5.114251e-04 3.274962e-04 + 1.948152e-04 1.119409e-04 +>TYI.EXP //14 + 1.061340e-03 3.418837e-05 -5.419204e-07 -1.701867e-06 -1.711933e-08 -4.712190e-06 + 6.142767e-05 -4.643063e-04 -3.715656e-04 3.847762e-05 1.866058e-04 1.880173e-04 + 1.419643e-04 9.331074e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par81.edi b/examples/data/NEConductor/par81.edi new file mode 100644 index 00000000..d79eed05 --- /dev/null +++ b/examples/data/NEConductor/par81.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par81" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par81" +REFLAT=-30:13:51.6451 +REFLONG=139:44:37.9341 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par81" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.019152e-02 6.664803e-05 -1.519388e-05 -3.035619e-07 5.914655e-07 3.065595e-04 +-3.098753e-03 3.104847e-03 7.601962e-03 6.988633e-03 5.101239e-03 3.290209e-03 + 1.963738e-03 1.129503e-03 +>ZXXI ROT=ZROT //14 + 1.104414e-03 -6.772214e-06 -6.216994e-06 1.822674e-07 2.433235e-07 -7.834916e-05 +-7.581950e-04 -6.038153e-03 -2.014166e-03 1.019976e-03 2.016518e-03 1.922041e-03 + 1.437629e-03 9.423597e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866263e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317045e+01 + 8.361516e+00 6.596302e+00 5.473890e+00 4.274511e+00 3.012753e+00 1.926127e+00 + 1.147632e+00 6.599085e-01 +>ZXYI ROT=ZROT //14 + 3.082376e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400291e+01 1.271821e+01 + 6.032929e+00 2.961868e+00 2.000787e+00 1.765989e+00 1.577481e+00 1.252788e+00 + 8.810896e-01 5.635645e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866341e+02 -1.241502e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317038e+01 +-8.362210e+00 -6.596542e+00 -5.469534e+00 -4.268433e+00 -3.007479e+00 -1.922408e+00 +-1.145313e+00 -6.585488e-01 +>ZYXI ROT=ZROT //14 +-3.082495e+02 -1.471574e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271816e+01 +-6.032887e+00 -2.964983e+00 -2.004130e+00 -1.766629e+00 -1.576326e+00 -1.251105e+00 +-8.796114e-01 -5.625167e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.650273e-03 -2.047956e-04 -3.524183e-06 2.054533e-07 -1.246022e-06 -3.466213e-04 + 3.443286e-03 -3.217452e-03 -9.174367e-03 -8.957745e-03 -6.791611e-03 -4.487918e-03 +-2.714576e-03 -1.570688e-03 +>ZYYI ROT=ZROT //14 + 3.404232e-04 -7.414377e-05 -6.097680e-07 1.236981e-07 1.237797e-07 6.465778e-05 + 7.773517e-04 7.226808e-03 2.978012e-03 -8.924586e-04 -2.405394e-03 -2.464607e-03 +-1.913703e-03 -1.280879e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.675876e-02 1.912037e-04 -3.155060e-05 -8.474647e-07 -3.331442e-08 -9.954534e-06 + 2.035723e-04 2.815146e-05 -1.115208e-03 -1.144293e-03 -8.201587e-04 -5.209878e-04 +-3.090173e-04 -1.773886e-04 +>TXI.EXP //14 +-1.145499e-03 -3.614441e-05 4.692206e-07 1.270912e-06 1.695408e-08 7.777228e-06 +-8.568578e-05 8.311218e-04 5.669710e-04 -1.066631e-04 -3.193063e-04 -3.072888e-04 +-2.282642e-04 -1.488710e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.435906e-02 -2.213342e-04 1.125888e-05 1.866321e-06 -2.505766e-08 5.734170e-06 +-1.302807e-04 -2.940798e-05 7.328049e-04 7.722381e-04 5.604054e-04 3.578294e-04 + 2.126854e-04 1.221759e-04 +>TYI.EXP //14 + 1.052430e-03 3.410834e-05 -5.428401e-07 -1.700008e-06 -1.206615e-08 -5.425796e-06 + 6.200346e-05 -5.454152e-04 -3.910431e-04 5.942649e-05 2.113293e-04 2.079691e-04 + 1.558719e-04 1.021386e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par810.edi b/examples/data/NEConductor/par810.edi new file mode 100644 index 00000000..d9aca1c7 --- /dev/null +++ b/examples/data/NEConductor/par810.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par810" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par810" +REFLAT=-30:11:25.4863 +REFLONG=139:44:39.7904 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par810" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 3.444825e-03 -2.415749e-04 -7.877697e-06 -1.334046e-07 3.504230e-06 5.720389e-04 +-3.420305e-03 5.499453e-03 5.896910e-03 3.328256e-03 1.690805e-03 8.241553e-04 + 4.083484e-04 2.138946e-04 +>ZXXI ROT=ZROT //14 + 6.376909e-04 -1.141621e-04 -7.848896e-08 2.791270e-07 1.260646e-06 1.923734e-04 +-2.731974e-03 -4.460292e-03 1.018585e-03 2.026106e-03 1.531798e-03 9.160942e-04 + 4.907477e-04 2.531358e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866233e+02 1.241428e+02 7.346933e+01 4.197589e+01 2.350537e+01 1.316954e+01 + 8.365834e+00 6.587301e+00 5.462937e+00 4.265245e+00 3.006079e+00 1.921865e+00 + 1.145107e+00 6.584613e-01 +>ZXYI ROT=ZROT //14 + 3.082415e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400289e+01 1.271698e+01 + 6.039654e+00 2.968776e+00 2.001513e+00 1.763953e+00 1.574586e+00 1.250186e+00 + 8.791919e-01 5.623379e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865623e+02 -1.241464e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.316960e+01 +-8.365582e+00 -6.587989e+00 -5.462546e+00 -4.264035e+00 -3.004887e+00 -1.920989e+00 +-1.144552e+00 -6.581337e-01 +>ZYXI ROT=ZROT //14 +-3.082026e+02 -1.471560e+02 -7.805637e+01 -4.294174e+01 -2.400289e+01 -1.271696e+01 +-6.039346e+00 -2.969004e+00 -2.002528e+00 -1.764382e+00 -1.574460e+00 -1.249847e+00 +-8.788608e-01 -5.620939e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.623475e-03 -1.486493e-04 -2.134723e-06 4.976041e-08 -3.827754e-06 -5.977128e-04 + 3.653124e-03 -5.682347e-03 -6.556247e-03 -4.075960e-03 -2.285909e-03 -1.223037e-03 +-6.506001e-04 -3.542200e-04 +>ZYYI ROT=ZROT //14 + 1.337525e-04 -4.414776e-05 -1.195336e-07 1.624683e-07 -2.572456e-06 -1.849751e-04 + 2.782147e-03 4.963836e-03 -7.101357e-04 -2.038669e-03 -1.713937e-03 -1.123930e-03 +-6.575415e-04 -3.662499e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.165327e-03 -5.114506e-04 -3.659557e-05 5.370909e-07 7.711336e-08 1.107088e-05 +-1.591855e-04 5.261156e-05 7.299700e-04 6.610336e-04 4.479411e-04 2.785060e-04 + 1.639233e-04 9.376424e-05 +>TXI.EXP //14 + 1.630783e-04 6.302132e-05 1.238159e-05 3.651671e-07 3.511590e-08 -2.777143e-06 + 2.597446e-05 -5.494688e-04 -2.837482e-04 1.145164e-04 2.006697e-04 1.754090e-04 + 1.252907e-04 8.020680e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.410536e-02 -2.135114e-04 1.138777e-05 1.845394e-06 -3.050256e-08 6.946303e-06 +-9.631282e-05 3.169647e-05 4.468455e-04 3.997957e-04 2.697836e-04 1.673112e-04 + 9.832421e-05 5.625328e-05 +>TYI.EXP //14 + 9.990550e-04 3.348770e-05 -5.558544e-07 -1.690720e-06 3.905620e-09 -1.371514e-06 + 1.535969e-05 -3.371726e-04 -1.692602e-04 7.182098e-05 1.222262e-04 1.060791e-04 + 7.549665e-05 4.829144e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par82.edi b/examples/data/NEConductor/par82.edi new file mode 100644 index 00000000..635b6973 --- /dev/null +++ b/examples/data/NEConductor/par82.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par82" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par82" +REFLAT=-30:13:35.4053 +REFLONG=139:44:38.1406 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par82" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 9.713624e-03 2.880303e-05 -1.463230e-05 -2.841880e-07 1.010185e-06 4.174950e-04 +-3.739667e-03 4.015801e-03 8.928490e-03 8.138052e-03 5.937461e-03 3.827004e-03 + 2.282632e-03 1.312461e-03 +>ZXXI ROT=ZROT //14 + 1.101025e-03 -2.022344e-05 -5.617124e-06 1.928640e-07 3.104995e-07 -4.195901e-05 +-1.257956e-03 -7.003753e-03 -2.184644e-03 1.239173e-03 2.364485e-03 2.243477e-03 + 1.674712e-03 1.096482e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866254e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317012e+01 + 8.363351e+00 6.593084e+00 5.469385e+00 4.270518e+00 3.009806e+00 1.924216e+00 + 1.146490e+00 6.592514e-01 +>ZXYI ROT=ZROT //14 + 3.082393e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400290e+01 1.271787e+01 + 6.035072e+00 2.964922e+00 2.001379e+00 1.765281e+00 1.576298e+00 1.251671e+00 + 8.802537e-01 5.630164e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866219e+02 -1.241490e+02 -7.346931e+01 -4.197588e+01 -2.350537e+01 -1.317007e+01 +-8.363719e+00 -6.593317e+00 -5.466450e+00 -4.266305e+00 -3.006102e+00 -1.921585e+00 +-1.144843e+00 -6.582842e-01 +>ZYXI ROT=ZROT //14 +-3.082404e+02 -1.471567e+02 -7.805624e+01 -4.294173e+01 -2.400290e+01 -1.271779e+01 +-6.035083e+00 -2.966984e+00 -2.003736e+00 -1.765790e+00 -1.575529e+00 -1.250503e+00 +-8.792148e-01 -5.622755e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.085399e-03 -1.907908e-04 -3.241003e-06 1.858746e-07 -1.931723e-06 -4.588461e-04 + 4.034021e-03 -4.192939e-03 -1.022382e-02 -9.722551e-03 -7.295446e-03 -4.790135e-03 +-2.886883e-03 -1.667647e-03 +>ZYYI ROT=ZROT //14 + 3.006603e-04 -6.765546e-05 -5.562921e-07 1.212509e-07 -3.008543e-07 1.348309e-05 + 1.346049e-03 7.969752e-03 2.921062e-03 -1.154011e-03 -2.681210e-03 -2.680368e-03 +-2.057726e-03 -1.368896e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.552145e-02 1.346508e-04 -3.159267e-05 -9.111480e-07 -4.942263e-08 -1.253140e-05 + 2.259586e-04 -1.891878e-05 -1.126193e-03 -1.123877e-03 -8.008953e-04 -5.081684e-04 +-3.013456e-04 -1.729772e-04 +>TXI.EXP //14 +-1.002659e-03 -2.780612e-05 9.571340e-07 1.308662e-06 6.748512e-09 7.375563e-06 +-7.254462e-05 8.498635e-04 5.305064e-04 -1.212073e-04 -3.178941e-04 -3.018033e-04 +-2.232774e-04 -1.453877e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.432166e-02 -2.202935e-04 1.127709e-05 1.863094e-06 -1.970944e-08 8.538618e-06 +-1.634544e-04 4.306482e-06 8.297023e-04 8.419417e-04 6.045525e-04 3.848484e-04 + 2.285308e-04 1.312358e-04 +>TYI.EXP //14 + 1.044284e-03 3.403364e-05 -5.438252e-07 -1.698318e-06 -4.818326e-09 -5.765234e-06 + 5.846955e-05 -6.248764e-04 -4.047462e-04 8.208933e-05 2.352350e-04 2.264271e-04 + 1.684642e-04 1.100449e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par83.edi b/examples/data/NEConductor/par83.edi new file mode 100644 index 00000000..fe7b4a85 --- /dev/null +++ b/examples/data/NEConductor/par83.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par83" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par83" +REFLAT=-30:13:19.1654 +REFLONG=139:44:38.347 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par83" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 9.149325e-03 -8.424514e-06 -1.401809e-05 -2.636335e-07 1.643787e-06 5.377443e-04 +-4.364997e-03 5.000357e-03 1.020392e-02 9.185589e-03 6.680126e-03 4.296904e-03 + 2.559625e-03 1.470834e-03 +>ZXXI ROT=ZROT //14 + 1.080045e-03 -3.389585e-05 -5.000005e-06 2.043048e-07 6.852563e-07 1.750216e-05 +-1.851542e-03 -7.903239e-03 -2.269342e-03 1.485327e-03 2.698147e-03 2.536873e-03 + 1.885875e-03 1.231917e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866249e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.316979e+01 + 8.365256e+00 6.589529e+00 5.464386e+00 4.266050e+00 3.006495e+00 1.922064e+00 + 1.145203e+00 6.585100e-01 +>ZXYI ROT=ZROT //14 + 3.082404e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400290e+01 1.271743e+01 + 6.037545e+00 2.968243e+00 2.002068e+00 1.764513e+00 1.574983e+00 1.250420e+00 + 8.793147e-01 5.623994e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866118e+02 -1.241480e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.316979e+01 +-8.365119e+00 -6.589965e+00 -5.463382e+00 -4.264233e+00 -3.004783e+00 -1.920806e+00 +-1.144402e+00 -6.580368e-01 +>ZYXI ROT=ZROT //14 +-3.082326e+02 -1.471560e+02 -7.805625e+01 -4.294173e+01 -2.400290e+01 -1.271734e+01 +-6.037515e+00 -2.968866e+00 -2.003263e+00 -1.764918e+00 -1.574732e+00 -1.249916e+00 +-8.788344e-01 -5.620467e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.579459e-03 -1.788031e-04 -2.996097e-06 1.661588e-07 -2.717027e-06 -5.734298e-04 + 4.551692e-03 -5.190742e-03 -1.107367e-02 -1.023105e-02 -7.581002e-03 -4.939736e-03 +-2.964373e-03 -1.709132e-03 +>ZYYI ROT=ZROT //14 + 2.582881e-04 -6.199793e-05 -5.007257e-07 1.207459e-07 -1.095523e-06 -6.248299e-05 + 1.999410e-03 8.526260e-03 2.724225e-03 -1.436246e-03 -2.905939e-03 -2.825348e-03 +-2.140573e-03 -1.413861e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.419393e-02 6.839541e-05 -3.210832e-05 -8.985066e-07 -6.193212e-08 -1.415004e-05 + 2.319002e-04 -5.739798e-05 -1.070752e-03 -1.047687e-03 -7.444645e-04 -4.722858e-04 +-2.800983e-04 -1.607952e-04 +>TXI.EXP //14 +-8.599749e-04 -1.813517e-05 1.880523e-06 1.295905e-06 -1.494127e-08 6.380340e-06 +-5.570420e-05 8.156986e-04 4.733618e-04 -1.237868e-04 -2.990058e-04 -2.815354e-04 +-2.078356e-04 -1.352350e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.428732e-02 -2.193229e-04 1.129400e-05 1.860142e-06 -1.485713e-08 1.160503e-05 +-1.950798e-04 4.125879e-05 9.140387e-04 8.975168e-04 6.380478e-04 4.049134e-04 + 2.402004e-04 1.378874e-04 +>TYI.EXP //14 + 1.036830e-03 3.396305e-05 -5.448857e-07 -1.696773e-06 3.820511e-09 -5.572469e-06 + 5.081727e-05 -6.939247e-04 -4.102615e-04 1.044165e-04 2.555777e-04 2.410743e-04 + 1.780952e-04 1.159755e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par84.edi b/examples/data/NEConductor/par84.edi new file mode 100644 index 00000000..5c94ad24 --- /dev/null +++ b/examples/data/NEConductor/par84.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par84" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par84" +REFLAT=-30:13:02.9256 +REFLONG=139:44:38.5533 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par84" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 8.506315e-03 -4.504158e-05 -1.334359e-05 -2.420819e-07 2.379177e-06 6.535290e-04 +-4.898882e-03 5.960544e-03 1.124913e-02 9.955462e-03 7.194086e-03 4.610474e-03 + 2.740715e-03 1.573415e-03 +>ZXXI ROT=ZROT //14 + 1.042673e-03 -4.744210e-05 -4.363624e-06 2.164859e-07 1.020560e-06 9.575330e-05 +-2.482364e-03 -8.607944e-03 -2.221522e-03 1.740529e-03 2.970049e-03 2.753143e-03 + 2.032968e-03 1.323162e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866245e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.316948e+01 + 8.367057e+00 6.585956e+00 5.459378e+00 4.261553e+00 3.003156e+00 1.919891e+00 + 1.143901e+00 6.577606e-01 +>ZXYI ROT=ZROT //14 + 3.082410e+02 1.471566e+02 7.805616e+01 4.294173e+01 2.400289e+01 1.271693e+01 + 6.040118e+00 2.971511e+00 2.002767e+00 1.763748e+00 1.573663e+00 1.249161e+00 + 8.783677e-01 5.617766e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866030e+02 -1.241471e+02 -7.346921e+01 -4.197589e+01 -2.350537e+01 -1.316955e+01 +-8.366296e+00 -6.586797e+00 -5.460594e+00 -4.262391e+00 -3.003634e+00 -1.920138e+00 +-1.144027e+00 -6.578276e-01 +>ZYXI ROT=ZROT //14 +-3.082258e+02 -1.471555e+02 -7.805626e+01 -4.294173e+01 -2.400289e+01 -1.271686e+01 +-6.039933e+00 -2.970484e+00 -2.002761e+00 -1.764092e+00 -1.574004e+00 -1.249394e+00 +-8.785024e-01 -5.618497e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.130281e-03 -1.687761e-04 -2.786224e-06 1.458621e-07 -3.491687e-06 -6.757224e-04 + 4.927113e-03 -6.102164e-03 -1.157362e-02 -1.034623e-02 -7.546254e-03 -4.870520e-03 +-2.907516e-03 -1.672415e-03 +>ZYYI ROT=ZROT //14 + 2.162611e-04 -5.714005e-05 -4.442769e-07 1.220426e-07 -2.181637e-06 -1.550009e-04 + 2.664190e-03 8.795296e-03 2.364689e-03 -1.717203e-03 -3.039543e-03 -2.861077e-03 +-2.133352e-03 -1.396820e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.278926e-02 -5.914005e-06 -3.303576e-05 -8.108578e-07 -4.798856e-08 -1.405005e-05 + 2.149556e-04 -7.856850e-05 -9.337298e-04 -9.051404e-04 -6.441943e-04 -4.092853e-04 +-2.429079e-04 -1.394916e-04 +>TXI.EXP //14 +-7.172504e-04 -7.422647e-06 3.168536e-06 1.238669e-06 -1.676761e-08 5.041854e-06 +-3.833752e-05 7.166857e-04 3.948213e-04 -1.105888e-04 -2.588781e-04 -2.436449e-04 +-1.800277e-04 -1.172229e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.425569e-02 -2.184106e-04 1.130974e-05 1.857425e-06 -9.705626e-09 1.441410e-05 +-2.200306e-04 7.596474e-05 9.719443e-04 9.283973e-04 6.539971e-04 4.137699e-04 + 2.451941e-04 1.407006e-04 +>TYI.EXP //14 + 1.030004e-03 3.389543e-05 -5.460378e-07 -1.695340e-06 1.305122e-08 -4.844823e-06 + 4.030611e-05 -7.415227e-04 -4.053750e-04 1.233844e-04 2.688381e-04 2.490867e-04 + 1.828068e-04 1.186924e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par86.edi b/examples/data/NEConductor/par86.edi new file mode 100644 index 00000000..b8a95358 --- /dev/null +++ b/examples/data/NEConductor/par86.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par86" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par86" +REFLAT=-30:12:30.4459 +REFLONG=139:44:38.9659 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par86" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 7.014729e-03 -1.160090e-04 -1.179460e-05 -2.068727e-07 4.145586e-06 8.028091e-04 +-5.366297e-03 7.265951e-03 1.183837e-02 9.927412e-03 6.988903e-03 4.412084e-03 + 2.601453e-03 1.488062e-03 +>ZXXI ROT=ZROT //14 + 9.299763e-04 -7.307943e-05 -3.024506e-06 2.458495e-07 2.556184e-06 2.523755e-04 +-3.483440e-03 -8.884929e-03 -1.595584e-03 2.160224e-03 3.115364e-03 2.749011e-03 + 1.979963e-03 1.270944e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866241e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350538e+01 1.316907e+01 + 8.369414e+00 6.580837e+00 5.452404e+00 4.255326e+00 2.998547e+00 1.916897e+00 + 1.142110e+00 6.567294e-01 +>ZXYI ROT=ZROT //14 + 3.082415e+02 1.471566e+02 7.805616e+01 4.294173e+01 2.400288e+01 1.271612e+01 + 6.043977e+00 2.975935e+00 2.003665e+00 1.762653e+00 1.571822e+00 1.247416e+00 + 8.770599e-01 5.609178e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865881e+02 -1.241460e+02 -7.346915e+01 -4.197590e+01 -2.350538e+01 -1.316928e+01 +-8.367629e+00 -6.582575e+00 -5.457129e+00 -4.260194e+00 -3.002323e+00 -1.919406e+00 +-1.143628e+00 -6.576077e-01 +>ZYXI ROT=ZROT //14 +-3.082151e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400288e+01 -1.271611e+01 +-6.043355e+00 -2.972328e+00 -2.001974e+00 -1.762985e+00 -1.573085e+00 -1.248767e+00 +-8.781221e-01 -5.616317e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.395026e-03 -1.544475e-04 -2.464740e-06 1.099691e-07 -4.580895e-06 -7.888707e-04 + 5.073315e-03 -7.196914e-03 -1.111943e-02 -9.121502e-03 -6.345503e-03 -3.978400e-03 +-2.337068e-03 -1.334637e-03 +>ZYYI ROT=ZROT //14 + 1.444155e-04 -4.974526e-05 -3.336021e-07 1.274643e-07 -4.179784e-06 -3.162818e-04 + 3.629097e-03 8.259160e-03 1.224306e-03 -2.155040e-03 -2.923985e-03 -2.526505e-03 +-1.799697e-03 -1.148057e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.786199e-03 -1.713327e-04 -3.553387e-05 -4.482574e-07 -1.648672e-08 -7.384360e-06 + 1.071716e-04 -5.315481e-05 -4.192413e-04 -4.264213e-04 -3.151198e-04 -2.035428e-04 +-1.215852e-04 -7.001448e-05 +>TXI.EXP //14 +-4.303097e-04 1.600342e-05 6.446245e-06 1.019000e-06 -1.637655e-09 2.545454e-06 +-1.281516e-05 3.281351e-04 1.823425e-04 -3.685711e-05 -1.163886e-04 -1.161969e-04 +-8.808825e-05 -5.808289e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.419930e-02 -2.167147e-04 1.133835e-05 1.852595e-06 -8.549931e-09 1.679523e-05 +-2.295453e-04 1.122212e-04 9.553300e-04 8.783435e-04 6.095910e-04 3.835289e-04 + 2.268004e-04 1.300474e-04 +>TYI.EXP //14 + 1.018004e-03 3.376455e-05 -5.486887e-07 -1.692878e-06 1.897300e-08 -2.797715e-06 + 2.084102e-05 -7.313589e-04 -3.598187e-04 1.380858e-04 2.607892e-04 2.351428e-04 + 1.707117e-04 1.102834e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par87.edi b/examples/data/NEConductor/par87.edi new file mode 100644 index 00000000..4bc7b13b --- /dev/null +++ b/examples/data/NEConductor/par87.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par87" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par87" +REFLAT=-30:12:14.206 +REFLONG=139:44:39.1721 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par87" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.182042e-03 -1.499019e-04 -1.091667e-05 -1.925829e-07 4.745329e-06 8.088003e-04 +-5.193822e-03 7.368409e-03 1.111003e-02 8.921863e-03 6.128152e-03 3.811977e-03 + 2.229487e-03 1.270690e-03 +>ZXXI ROT=ZROT //14 + 8.613089e-04 -8.480167e-05 -2.319704e-06 2.600342e-07 3.080174e-06 2.937286e-04 +-3.663601e-03 -8.290490e-03 -1.022549e-03 2.261385e-03 2.918020e-03 2.470545e-03 + 1.739352e-03 1.101892e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866239e+02 1.241427e+02 7.346934e+01 4.197589e+01 2.350538e+01 1.316902e+01 + 8.369563e+00 6.580315e+00 5.451936e+00 4.254982e+00 2.998319e+00 1.916760e+00 + 1.142032e+00 6.566855e-01 +>ZXYI ROT=ZROT //14 + 3.082415e+02 1.471566e+02 7.805616e+01 4.294173e+01 2.400288e+01 1.271601e+01 + 6.044457e+00 2.976159e+00 2.003613e+00 1.762529e+00 1.571696e+00 1.247318e+00 + 8.769947e-01 5.608780e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865814e+02 -1.241457e+02 -7.346918e+01 -4.197590e+01 -2.350538e+01 -1.316925e+01 +-8.367691e+00 -6.582187e+00 -5.456963e+00 -4.260144e+00 -3.002335e+00 -1.919436e+00 +-1.143654e+00 -6.576247e-01 +>ZYXI ROT=ZROT //14 +-3.082109e+02 -1.471550e+02 -7.805628e+01 -4.294174e+01 -2.400288e+01 -1.271602e+01 +-6.043739e+00 -2.972342e+00 -2.001836e+00 -1.762881e+00 -1.573029e+00 -1.248751e+00 +-8.781249e-01 -5.616394e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.110397e-03 -1.501009e-04 -2.347496e-06 9.606031e-08 -4.409666e-06 -7.870006e-04 + 4.854595e-03 -7.235515e-03 -1.020464e-02 -7.911037e-03 -5.310533e-03 -3.253957e-03 +-1.886714e-03 -1.071078e-03 +>ZYYI ROT=ZROT //14 + 1.205454e-04 -4.718523e-05 -2.797010e-07 1.320738e-07 -4.881027e-06 -3.454449e-04 + 3.764549e-03 7.531476e-03 5.761109e-04 -2.257045e-03 -2.683723e-03 -2.191541e-03 +-1.509615e-03 -9.437231e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.201276e-03 -2.584652e-04 -3.668150e-05 -2.040696e-07 -3.802711e-09 -1.720962e-06 + 2.886962e-05 -1.591994e-05 -8.868500e-05 -1.256916e-04 -1.083173e-04 -7.399337e-05 +-4.510790e-05 -2.619848e-05 +>TXI.EXP //14 +-2.852034e-04 2.816486e-05 8.203136e-06 8.707653e-07 2.079403e-08 1.488438e-06 +-5.034095e-06 7.552897e-05 5.917218e-05 1.301874e-05 -2.613899e-05 -3.590813e-05 +-3.017714e-05 -2.081277e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.417393e-02 -2.159079e-04 1.135152e-05 1.850519e-06 -1.144595e-08 1.565421e-05 +-2.095492e-04 1.057903e-04 8.701411e-04 7.913574e-04 5.459895e-04 3.426289e-04 + 2.024029e-04 1.160139e-04 +>TYI.EXP //14 + 1.012716e-03 3.369902e-05 -5.502222e-07 -1.692005e-06 1.964669e-08 -2.120334e-06 + 1.625298e-05 -6.657916e-04 -3.203087e-04 1.303455e-04 2.369085e-04 2.115850e-04 + 1.529550e-04 9.860965e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par88.edi b/examples/data/NEConductor/par88.edi new file mode 100644 index 00000000..bb56759b --- /dev/null +++ b/examples/data/NEConductor/par88.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par88" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par88" +REFLAT=-30:11:57.9661 +REFLONG=139:44:39.3783 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par88" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.303052e-03 -1.823357e-04 -9.970447e-06 -1.765276e-07 4.789571e-06 7.649395e-04 +-4.759097e-03 7.047182e-03 9.726102e-03 7.326514e-03 4.830841e-03 2.928087e-03 + 1.687621e-03 9.554829e-04 +>ZXXI ROT=ZROT //14 + 7.882509e-04 -9.562066e-05 -1.592108e-06 2.708458e-07 3.014680e-06 2.936310e-04 +-3.566479e-03 -7.244545e-03 -3.405238e-04 2.265226e-03 2.548435e-03 2.027586e-03 + 1.375066e-03 8.515093e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866237e+02 1.241428e+02 7.346934e+01 4.197589e+01 2.350538e+01 1.316909e+01 + 8.368923e+00 6.581429e+00 5.453867e+00 4.256834e+00 2.999738e+00 1.917701e+00 + 1.142601e+00 6.570147e-01 +>ZXYI ROT=ZROT //14 + 3.082416e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400288e+01 1.271615e+01 + 6.043739e+00 2.974828e+00 2.003171e+00 1.762745e+00 1.572201e+00 1.247835e+00 + 8.773960e-01 5.611466e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865750e+02 -1.241457e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.316929e+01 +-8.367343e+00 -6.583103e+00 -5.457936e+00 -4.260848e+00 -3.002815e+00 -1.919739e+00 +-1.143834e+00 -6.577280e-01 +>ZYXI ROT=ZROT //14 +-3.082075e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400288e+01 -1.271617e+01 +-6.043077e+00 -2.971727e+00 -2.001908e+00 -1.763119e+00 -1.573271e+00 -1.248947e+00 +-8.782635e-01 -5.617279e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.885789e-03 -1.476456e-04 -2.253732e-06 8.165440e-08 -5.188325e-06 -7.494265e-04 + 4.507392e-03 -6.942843e-03 -9.021061e-03 -6.543684e-03 -4.191661e-03 -2.487678e-03 +-1.415517e-03 -7.966004e-04 +>ZYYI ROT=ZROT //14 + 1.088353e-04 -4.538361e-05 -2.254947e-07 1.389726e-07 -4.818256e-06 -3.264266e-04 + 3.635278e-03 6.656623e-03 -1.840310e-06 -2.264253e-03 -2.370964e-03 -1.811880e-03 +-1.195119e-03 -7.266608e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.567187e-03 -3.457188e-04 -3.742353e-05 5.617209e-08 2.063559e-08 3.993059e-06 +-4.940975e-05 2.174949e-05 2.374324e-04 1.754240e-04 1.008853e-04 5.767474e-05 + 3.276880e-05 1.845186e-05 +>TXI.EXP //14 +-1.383184e-04 4.025300e-05 9.867770e-06 7.067036e-07 4.585554e-08 3.221369e-07 + 2.523802e-06 -1.741983e-04 -6.489780e-05 5.967608e-05 6.308823e-05 4.470724e-05 + 2.839197e-05 1.701930e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.415003e-02 -2.151131e-04 1.136408e-05 1.848660e-06 -1.867936e-08 1.319172e-05 +-1.763332e-04 8.544876e-05 7.442188e-04 6.723406e-04 4.612641e-04 2.886562e-04 + 1.703169e-04 9.758094e-05 +>TYI.EXP //14 + 1.007829e-03 3.363186e-05 -5.519155e-07 -1.691396e-06 2.085315e-08 -1.788070e-06 + 1.518828e-05 -5.682813e-04 -2.728642e-04 1.141894e-04 2.025620e-04 1.794648e-04 + 1.292156e-04 8.313976e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par89.edi b/examples/data/NEConductor/par89.edi new file mode 100644 index 00000000..f7d1f4a6 --- /dev/null +++ b/examples/data/NEConductor/par89.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par89" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par89" +REFLAT=-30:11:41.7262 +REFLONG=139:44:39.5844 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par89" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.387322e-03 -2.129951e-04 -8.957110e-06 -1.565368e-07 4.352100e-06 6.807645e-04 +-4.134119e-03 6.375957e-03 7.890988e-03 5.364462e-03 3.275960e-03 1.881591e-03 + 1.049894e-03 5.854461e-04 +>ZXXI ROT=ZROT //14 + 7.130320e-04 -1.054351e-04 -8.438931e-07 2.771999e-07 2.197202e-06 2.548477e-04 +-3.226063e-03 -5.899041e-03 3.681497e-04 2.178330e-03 2.060732e-03 1.482274e-03 + 9.374775e-04 5.541855e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866235e+02 1.241428e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.316927e+01 + 8.367607e+00 6.583931e+00 5.457798e+00 4.260503e+00 3.002513e+00 1.919527e+00 + 1.143701e+00 6.576501e-01 +>ZXYI ROT=ZROT //14 + 3.082415e+02 1.471566e+02 7.805615e+01 4.294173e+01 2.400288e+01 1.271651e+01 + 6.042007e+00 2.972199e+00 2.002422e+00 1.763254e+00 1.573234e+00 1.248860e+00 + 8.781818e-01 5.616688e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865686e+02 -1.241459e+02 -7.346928e+01 -4.197590e+01 -2.350537e+01 -1.316941e+01 +-8.366621e+00 -6.585151e+00 -5.459893e+00 -4.262205e+00 -3.003703e+00 -1.920278e+00 +-1.144145e+00 -6.579043e-01 +>ZYXI ROT=ZROT //14 +-3.082047e+02 -1.471555e+02 -7.805633e+01 -4.294174e+01 -2.400288e+01 -1.271651e+01 +-6.041513e+00 -2.970569e+00 -2.002161e+00 -1.763649e+00 -1.573773e+00 -1.249330e+00 +-8.785196e-01 -5.618857e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.723523e-03 -1.471359e-04 -2.181762e-06 6.624128e-08 -4.170371e-06 -6.835079e-04 + 4.092143e-03 -6.392854e-03 -7.755169e-03 -5.219270e-03 -3.148945e-03 -1.788134e-03 +-9.899247e-04 -5.498326e-04 +>ZYYI ROT=ZROT //14 + 1.122762e-04 -4.435912e-05 -1.711539e-07 1.489857e-07 -3.273278e-06 -2.673763e-04 + 3.282415e-03 5.769173e-03 -4.396659e-04 -2.184588e-03 -2.034519e-03 -1.443145e-03 +-9.013228e-04 -5.277097e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.887510e-03 -4.308386e-04 -3.748578e-05 3.107019e-07 4.384183e-08 8.511875e-06 +-1.149184e-04 4.713119e-05 5.191553e-04 4.452492e-04 2.915770e-04 1.785160e-04 + 1.044302e-04 5.957906e-05 +>TXI.EXP //14 + 1.091222e-05 5.197569e-05 1.130561e-05 5.350409e-07 4.470744e-08 -1.110825e-06 + 1.253715e-05 -3.895880e-04 -1.815317e-04 9.497594e-05 1.409952e-04 1.171926e-04 + 8.170176e-05 5.165529e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.412728e-02 -2.143184e-04 1.137613e-05 1.846965e-06 -2.404062e-08 1.005182e-05 +-1.362853e-04 5.821590e-05 5.963655e-04 5.364032e-04 3.655579e-04 2.279452e-04 + 1.342828e-04 7.689215e-05 +>TYI.EXP //14 + 1.003292e-03 3.356184e-05 -5.537867e-07 -1.690987e-06 1.559174e-08 -1.607654e-06 + 1.561756e-05 -4.534645e-04 -2.212016e-04 9.334226e-05 1.625959e-04 1.428404e-04 + 1.023659e-04 6.570893e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par90.edi b/examples/data/NEConductor/par90.edi new file mode 100644 index 00000000..cabeb1b2 --- /dev/null +++ b/examples/data/NEConductor/par90.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par90" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par90" +REFLAT=-30:14:08.0638 +REFLONG=139:44:56.4304 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par90" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.383301e-02 1.106471e-04 -2.037141e-05 -4.068165e-07 1.089634e-06 1.985693e-04 +-2.516524e-03 2.065555e-03 6.958703e-03 6.820219e-03 5.116921e-03 3.355054e-03 + 2.020807e-03 1.167098e-03 +>ZXXI ROT=ZROT //14 + 1.457211e-03 1.084024e-06 -8.401345e-06 2.463351e-07 6.601782e-08 -1.031852e-04 +-2.118831e-04 -5.555198e-03 -2.420866e-03 6.860250e-04 1.850946e-03 1.870826e-03 + 1.438994e-03 9.577168e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866395e+02 1.241439e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317086e+01 + 8.359468e+00 6.600085e+00 5.477927e+00 4.277517e+00 3.014785e+00 1.927374e+00 + 1.148355e+00 6.603184e-01 +>ZXYI ROT=ZROT //14 + 3.082436e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400292e+01 1.271854e+01 + 6.030516e+00 2.959118e+00 2.000984e+00 1.766953e+00 1.578531e+00 1.253636e+00 + 8.816709e-01 5.639269e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866483e+02 -1.241515e+02 -7.346944e+01 -4.197588e+01 -2.350537e+01 -1.317079e+01 +-8.359960e+00 -6.600570e+00 -5.474239e+00 -4.272146e+00 -3.010079e+00 -1.924042e+00 +-1.146273e+00 -6.590967e-01 +>ZYXI ROT=ZROT //14 +-3.082604e+02 -1.471582e+02 -7.805622e+01 -4.294172e+01 -2.400291e+01 -1.271851e+01 +-6.030398e+00 -2.961710e+00 -2.004084e+00 -1.767620e+00 -1.577547e+00 -1.252149e+00 +-8.803531e-01 -5.629891e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-7.330582e-03 -2.391734e-04 -4.236922e-06 2.166976e-07 -6.936899e-07 -2.287991e-04 + 2.745446e-03 -2.036261e-03 -8.238028e-03 -8.522094e-03 -6.604210e-03 -4.417781e-03 +-2.689760e-03 -1.560845e-03 +>ZYYI ROT=ZROT //14 + 4.059799e-04 -8.886465e-05 -7.283404e-07 1.552412e-07 2.894214e-07 9.495207e-05 + 1.952492e-04 6.505541e-03 3.319764e-03 -5.232156e-04 -2.166462e-03 -2.339309e-03 +-1.857501e-03 -1.257638e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.796212e-02 2.370117e-04 -3.213161e-05 -7.175252e-07 -6.125334e-09 -5.597115e-06 + 1.528755e-04 9.452620e-05 -9.974740e-04 -1.085732e-03 -7.902311e-04 -5.040593e-04 +-2.993391e-04 -1.719017e-04 +>TXI.EXP //14 +-1.297615e-03 -4.287430e-05 4.863257e-07 1.183477e-06 3.131756e-08 7.198441e-06 +-9.392278e-05 7.256988e-04 5.800250e-04 -6.784123e-05 -2.938323e-04 -2.921397e-04 +-2.193017e-04 -1.436513e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.565454e-02 -3.060065e-04 1.041451e-05 1.912016e-06 -2.985380e-08 3.491990e-06 +-1.072106e-04 -7.746145e-05 7.215163e-04 8.017265e-04 5.887120e-04 3.768694e-04 + 2.241323e-04 1.287696e-04 +>TYI.EXP //14 + 1.231509e-03 4.545456e-05 -1.659528e-07 -1.692840e-06 -2.357026e-08 -5.295995e-06 + 7.197035e-05 -5.239614e-04 -4.346068e-04 4.063028e-05 2.138564e-04 2.161735e-04 + 1.633027e-04 1.073324e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par91.edi b/examples/data/NEConductor/par91.edi new file mode 100644 index 00000000..6486901a --- /dev/null +++ b/examples/data/NEConductor/par91.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par91" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par91" +REFLAT=-30:13:51.824 +REFLONG=139:44:56.6361 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par91" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.332228e-02 6.275325e-05 -1.966700e-05 -3.864503e-07 1.392988e-06 2.849920e-04 +-3.103883e-03 2.809073e-03 8.186262e-03 7.921974e-03 5.933542e-03 3.885217e-03 + 2.337717e-03 1.349420e-03 +>ZXXI ROT=ZROT //14 + 1.478679e-03 -1.469135e-05 -7.729474e-06 2.594199e-07 2.957373e-07 -9.451031e-05 +-5.495348e-04 -6.488982e-03 -2.638781e-03 8.618341e-04 2.171410e-03 2.178364e-03 + 1.670150e-03 1.109554e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866382e+02 1.241439e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317058e+01 + 8.361007e+00 6.597695e+00 5.474455e+00 4.274429e+00 3.012501e+00 1.925892e+00 + 1.147469e+00 6.598086e-01 +>ZXYI ROT=ZROT //14 + 3.082462e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400291e+01 1.271836e+01 + 6.031950e+00 2.961575e+00 2.001480e+00 1.766423e+00 1.577621e+00 1.252772e+00 + 8.810234e-01 5.635021e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866333e+02 -1.241502e+02 -7.346938e+01 -4.197589e+01 -2.350537e+01 -1.317054e+01 +-8.361287e+00 -6.598071e+00 -5.471845e+00 -4.270552e+00 -3.009066e+00 -1.923445e+00 +-1.145935e+00 -6.589071e-01 +>ZYXI ROT=ZROT //14 +-3.082500e+02 -1.471574e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271831e+01 +-6.031918e+00 -2.963381e+00 -2.003735e+00 -1.766949e+00 -1.576935e+00 -1.251698e+00 +-8.800609e-01 -5.628134e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.678432e-03 -2.210056e-04 -3.883437e-06 1.962427e-07 -1.135107e-06 -3.187485e-04 + 3.303580e-03 -2.852650e-03 -9.253287e-03 -9.311327e-03 -7.148520e-03 -4.755418e-03 +-2.886292e-03 -1.672530e-03 +>ZYYI ROT=ZROT //14 + 3.677766e-04 -8.065197e-05 -6.662049e-07 1.498273e-07 1.577753e-07 7.412343e-05 + 5.924783e-04 7.273733e-03 3.341597e-03 -7.404793e-04 -2.430339e-03 -2.561023e-03 +-2.012556e-03 -1.355287e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.682895e-02 1.913422e-04 -3.171931e-05 -8.500620e-07 -2.403756e-08 -7.940047e-06 + 1.811519e-04 5.280496e-05 -1.050125e-03 -1.105396e-03 -7.990000e-04 -5.089753e-04 +-3.021863e-04 -1.735284e-04 +>TXI.EXP //14 +-1.153572e-03 -3.614752e-05 4.990146e-07 1.275798e-06 2.832584e-08 7.661210e-06 +-8.891858e-05 7.775028e-04 5.640824e-04 -8.729391e-05 -3.038563e-04 -2.972876e-04 +-2.221357e-04 -1.452510e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.561337e-02 -3.047798e-04 1.043678e-05 1.908472e-06 -1.958269e-08 5.809575e-06 +-1.412104e-04 -5.048673e-05 8.366044e-04 8.922039e-04 6.483728e-04 4.139587e-04 + 2.460094e-04 1.413045e-04 +>TYI.EXP //14 + 1.222294e-03 4.536632e-05 -1.673729e-07 -1.691157e-06 -1.951555e-08 -6.234366e-06 + 7.465953e-05 -6.180322e-04 -4.611538e-04 6.371190e-05 2.430163e-04 2.402012e-04 + 1.801975e-04 1.180987e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par910.edi b/examples/data/NEConductor/par910.edi new file mode 100644 index 00000000..ab44025d --- /dev/null +++ b/examples/data/NEConductor/par910.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par910" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par910" +REFLAT=-30:11:25.665 +REFLONG=139:44:58.4847 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par910" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 4.525609e-03 -3.243092e-04 -9.905867e-06 -1.854421e-07 3.078141e-06 4.896475e-04 +-2.994169e-03 4.860859e-03 4.710391e-03 2.150247e-03 7.899932e-04 2.309677e-04 + 5.118160e-05 7.763295e-06 +>ZXXI ROT=ZROT //14 + 8.754352e-04 -1.471237e-04 -2.580995e-07 3.679216e-07 1.002713e-06 1.222978e-04 +-2.285823e-03 -3.657072e-03 1.344154e-03 1.906453e-03 1.211561e-03 5.874076e-04 + 2.367775e-04 8.397578e-05 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866349e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.316975e+01 + 8.364826e+00 6.589880e+00 5.465281e+00 4.266814e+00 3.007069e+00 1.922446e+00 + 1.145435e+00 6.586451e-01 +>ZXYI ROT=ZROT //14 + 3.082500e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400290e+01 1.271735e+01 + 6.037726e+00 2.967372e+00 2.001893e+00 1.764630e+00 1.575195e+00 1.250630e+00 + 8.794777e-01 5.625089e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865608e+02 -1.241463e+02 -7.346938e+01 -4.197590e+01 -2.350537e+01 -1.316984e+01 +-8.364022e+00 -6.590775e+00 -5.466990e+00 -4.268207e+00 -3.008047e+00 -1.923068e+00 +-1.145804e+00 -6.588567e-01 +>ZYXI ROT=ZROT //14 +-3.082033e+02 -1.471560e+02 -7.805636e+01 -4.294174e+01 -2.400290e+01 -1.271733e+01 +-6.037454e+00 -2.965997e+00 -2.001645e+00 -1.764943e+00 -1.575629e+00 -1.251013e+00 +-8.797550e-01 -5.626882e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.340326e-03 -1.503915e-04 -2.436365e-06 2.201823e-08 -3.238684e-06 -4.960761e-04 + 2.942780e-03 -4.904898e-03 -4.509797e-03 -1.912914e-03 -5.800020e-04 -7.735627e-05 + 4.690798e-05 5.035257e-05 +>ZYYI ROT=ZROT //14 + 1.250764e-04 -4.534406e-05 -9.298815e-08 2.039473e-07 -1.812894e-06 -1.404666e-04 + 2.378084e-03 3.466687e-03 -1.473079e-03 -1.926661e-03 -1.170381e-03 -5.230170e-04 +-1.773148e-04 -4.057087e-05 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 3.186199e-03 -5.133143e-04 -3.666570e-05 5.374062e-07 6.373394e-08 8.027071e-06 +-1.190068e-04 2.730219e-05 5.758537e-04 5.227872e-04 3.524164e-04 2.184139e-04 + 1.283756e-04 7.338070e-05 +>TXI.EXP //14 + 1.653211e-04 6.319335e-05 1.239922e-05 3.680796e-07 1.393389e-08 -2.397326e-06 + 2.461417e-05 -4.299589e-04 -2.309861e-04 9.077669e-05 1.591338e-04 1.383758e-04 + 9.848612e-05 6.291563e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.536435e-02 -2.964648e-04 1.058125e-05 1.887670e-06 -7.762579e-09 9.170625e-06 +-1.374670e-04 3.231722e-05 6.527374e-04 6.126873e-04 4.238934e-04 2.657648e-04 + 1.568769e-04 8.989214e-05 +>TYI.EXP //14 + 1.168210e-03 4.470847e-05 -1.842654e-07 -1.683252e-06 2.887220e-09 -3.055974e-06 + 3.001414e-05 -4.918755e-04 -2.729312e-04 9.029460e-05 1.809538e-04 1.634301e-04 + 1.184218e-04 7.639793e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par92.edi b/examples/data/NEConductor/par92.edi new file mode 100644 index 00000000..a8a4ee06 --- /dev/null +++ b/examples/data/NEConductor/par92.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par92" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par92" +REFLAT=-30:13:35.5842 +REFLONG=139:44:56.8417 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par92" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.269239e-02 1.553275e-05 -1.890627e-05 -3.641740e-07 1.790124e-06 3.863719e-04 +-3.715694e-03 3.661315e-03 9.423919e-03 8.981435e-03 6.702309e-03 4.378505e-03 + 2.630749e-03 1.517542e-03 +>ZXXI ROT=ZROT //14 + 1.476281e-03 -3.121503e-05 -7.025591e-06 2.727044e-07 6.322113e-07 -6.856722e-05 +-9.892593e-04 -7.406982e-03 -2.786295e-03 1.070685e-03 2.493836e-03 2.474586e-03 + 1.888271e-03 1.251260e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866373e+02 1.241439e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.317028e+01 + 8.362696e+00 6.594919e+00 5.470414e+00 4.270799e+00 3.009804e+00 1.924138e+00 + 1.146419e+00 6.592039e-01 +>ZXYI ROT=ZROT //14 + 3.082479e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400291e+01 1.271810e+01 + 6.033725e+00 2.964368e+00 2.002086e+00 1.765821e+00 1.576560e+00 1.251756e+00 + 8.802591e-01 5.629993e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866210e+02 -1.241489e+02 -7.346931e+01 -4.197589e+01 -2.350537e+01 -1.317026e+01 +-8.362599e+00 -6.595333e+00 -5.469381e+00 -4.268961e+00 -3.008082e+00 -1.922876e+00 +-1.145617e+00 -6.587299e-01 +>ZYXI ROT=ZROT //14 +-3.082410e+02 -1.471567e+02 -7.805624e+01 -4.294173e+01 -2.400291e+01 -1.271804e+01 +-6.033730e+00 -2.965002e+00 -2.003284e+00 -1.766217e+00 -1.576301e+00 -1.251246e+00 +-8.797761e-01 -5.626453e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-6.088603e-03 -2.051131e-04 -3.572932e-06 1.765505e-07 -1.732489e-06 -4.192447e-04 + 3.838712e-03 -3.747046e-03 -1.014291e-02 -9.910747e-03 -7.524371e-03 -4.972842e-03 +-3.007367e-03 -1.739873e-03 +>ZYYI ROT=ZROT //14 + 3.232367e-04 -7.338788e-05 -6.019649e-07 1.461082e-07 -1.636645e-07 3.228458e-05 + 1.096561e-03 7.913261e-03 3.233582e-03 -9.890143e-04 -2.662492e-03 -2.730695e-03 +-2.120550e-03 -1.419159e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.558800e-02 1.345426e-04 -3.175344e-05 -9.134795e-07 -4.209214e-08 -1.014075e-05 + 2.019819e-04 1.020574e-05 -1.061262e-03 -1.087652e-03 -7.822954e-04 -4.979566e-04 +-2.956254e-04 -1.697639e-04 +>TXI.EXP //14 +-1.009682e-03 -2.778758e-05 9.861975e-07 1.313485e-06 2.099604e-08 7.593239e-06 +-7.863341e-05 7.965500e-04 5.311008e-04 -1.005199e-04 -3.026859e-04 -2.925357e-04 +-2.178403e-04 -1.422638e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.557578e-02 -3.036470e-04 1.045735e-05 1.905228e-06 -9.314861e-09 8.722176e-06 +-1.781310e-04 -1.635996e-05 9.513779e-04 9.784371e-04 7.040661e-04 4.482889e-04 + 2.661932e-04 1.528552e-04 +>TYI.EXP //14 + 1.213890e-03 4.528419e-05 -1.688360e-07 -1.689647e-06 -1.142332e-08 -6.862702e-06 + 7.333104e-05 -7.118475e-04 -4.821688e-04 8.878276e-05 2.717378e-04 2.630712e-04 + 1.960230e-04 1.281037e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par93.edi b/examples/data/NEConductor/par93.edi new file mode 100644 index 00000000..72ee31e9 --- /dev/null +++ b/examples/data/NEConductor/par93.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par93" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par93" +REFLAT=-30:13:19.3443 +REFLONG=139:44:57.0472 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par93" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.195249e-02 -3.105566e-05 -1.807831e-05 -3.413571e-07 2.292324e-06 4.948265e-04 +-4.293947e-03 4.565057e-03 1.053646e-02 9.857162e-03 7.311673e-03 4.760142e-03 + 2.854456e-03 1.645126e-03 +>ZXXI ROT=ZROT //14 + 1.450102e-03 -4.802461e-05 -6.289370e-06 2.870552e-07 1.226751e-06 -2.355690e-05 +-1.508712e-03 -8.206046e-03 -2.816043e-03 1.304663e-03 2.782403e-03 2.720057e-03 + 2.061944e-03 1.361579e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866367e+02 1.241439e+02 7.346934e+01 4.197588e+01 2.350537e+01 1.316996e+01 + 8.364431e+00 6.591890e+00 5.466019e+00 4.266829e+00 3.006848e+00 1.922212e+00 + 1.145265e+00 6.585391e-01 +>ZXYI ROT=ZROT //14 + 3.082489e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400290e+01 1.271777e+01 + 6.035758e+00 2.967344e+00 2.002757e+00 1.765174e+00 1.575404e+00 1.250645e+00 + 8.794212e-01 5.624475e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866107e+02 -1.241479e+02 -7.346925e+01 -4.197589e+01 -2.350537e+01 -1.317000e+01 +-8.363803e+00 -6.592526e+00 -5.466998e+00 -4.267479e+00 -3.007195e+00 -1.922376e+00 +-1.145342e+00 -6.585781e-01 +>ZYXI ROT=ZROT //14 +-3.082332e+02 -1.471560e+02 -7.805625e+01 -4.294173e+01 -2.400290e+01 -1.271769e+01 +-6.035721e+00 -2.966475e+00 -2.002755e+00 -1.765467e+00 -1.575684e+00 -1.250825e+00 +-8.795183e-01 -5.624965e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.555872e-03 -1.913749e-04 -3.303511e-06 1.571257e-07 -2.452600e-06 -5.201458e-04 + 4.286313e-03 -4.645483e-03 -1.076862e-02 -1.018188e-02 -7.623966e-03 -4.998269e-03 +-3.009510e-03 -1.737720e-03 +>ZYYI ROT=ZROT //14 + 2.763059e-04 -6.701621e-05 -5.373197e-07 1.444683e-07 -7.563630e-07 -3.052394e-05 + 1.672491e-03 8.321065e-03 2.956927e-03 -1.256989e-03 -2.826431e-03 -2.809608e-03 +-2.151064e-03 -1.428809e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.425624e-02 6.804023e-05 -3.226041e-05 -9.005453e-07 -5.906547e-08 -1.164419e-05 + 2.092682e-04 -2.654817e-05 -1.014740e-03 -1.020608e-03 -7.324847e-04 -4.663297e-04 +-2.769189e-04 -1.590441e-04 +>TXI.EXP //14 +-8.659150e-04 -1.809463e-05 1.908717e-06 1.300662e-06 2.843249e-09 6.971732e-06 +-6.432417e-05 7.697015e-04 4.789666e-04 -1.038157e-04 -2.862657e-04 -2.747097e-04 +-2.042429e-04 -1.333252e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.554141e-02 -3.025949e-04 1.047640e-05 1.902266e-06 -4.257412e-10 1.197069e-05 +-2.142735e-04 2.190838e-05 1.054759e-03 1.051447e-03 7.497628e-04 4.760924e-04 + 2.824583e-04 1.621461e-04 +>TYI.EXP //14 + 1.206227e-03 4.520698e-05 -1.703564e-07 -1.688299e-06 -4.060868e-10 -7.011133e-06 + 6.776513e-05 -7.963150e-04 -4.950250e-04 1.137406e-04 2.971766e-04 2.823828e-04 + 2.090750e-04 1.362564e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par94.edi b/examples/data/NEConductor/par94.edi new file mode 100644 index 00000000..59b88d45 --- /dev/null +++ b/examples/data/NEConductor/par94.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par94" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par94" +REFLAT=-30:13:03.1044 +REFLONG=139:44:57.2527 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par94" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 1.111205e-02 -7.698939e-05 -1.717339e-05 -3.183351e-07 2.704703e-06 5.973473e-04 +-4.763130e-03 5.425554e-03 1.134513e-02 1.037250e-02 7.625149e-03 4.939504e-03 + 2.954010e-03 1.700461e-03 +>ZXXI ROT=ZROT //14 + 1.402059e-03 -6.469487e-05 -5.519950e-06 3.017819e-07 1.706012e-06 3.699229e-05 +-2.055755e-03 -8.756346e-03 -2.679536e-03 1.546912e-03 2.989947e-03 2.865478e-03 + 2.152643e-03 1.414678e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866363e+02 1.241440e+02 7.346935e+01 4.197588e+01 2.350537e+01 1.316968e+01 + 8.366055e+00 6.588878e+00 5.461699e+00 4.262920e+00 3.003937e+00 1.920314e+00 + 1.144128e+00 6.578841e-01 +>ZXYI ROT=ZROT //14 + 3.082494e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400290e+01 1.271739e+01 + 6.037863e+00 2.970213e+00 2.003408e+00 1.764535e+00 1.574266e+00 1.249551e+00 + 8.785959e-01 5.619039e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.866018e+02 -1.241470e+02 -7.346920e+01 -4.197589e+01 -2.350537e+01 -1.316978e+01 +-8.364801e+00 -6.589904e+00 -5.464901e+00 -4.266232e+00 -3.006480e+00 -1.921989e+00 +-1.145135e+00 -6.584655e-01 +>ZYXI ROT=ZROT //14 +-3.082264e+02 -1.471555e+02 -7.805626e+01 -4.294173e+01 -2.400290e+01 -1.271731e+01 +-6.037694e+00 -2.967685e+00 -2.002196e+00 -1.764762e+00 -1.575137e+00 -1.250469e+00 +-8.793098e-01 -5.623803e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-5.077760e-03 -1.797066e-04 -3.072906e-06 1.373330e-07 -3.215259e-06 -6.078479e-04 + 4.579211e-03 -5.445658e-03 -1.098512e-02 -9.990996e-03 -7.347093e-03 -4.766409e-03 +-2.853642e-03 -1.643580e-03 +>ZYYI ROT=ZROT //14 + 2.299440e-04 -6.149906e-05 -4.728514e-07 1.454284e-07 -1.538533e-06 -1.071881e-04 + 2.253810e-03 8.397946e-03 2.487752e-03 -1.524158e-03 -2.883573e-03 -2.760228e-03 +-2.075728e-03 -1.365555e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 1.284681e-02 -6.513675e-06 -3.317841e-05 -8.125957e-07 -4.907945e-08 -1.184495e-05 + 1.976232e-04 -5.040616e-05 -8.981900e-04 -8.954419e-04 -6.438910e-04 -4.106083e-04 +-2.440221e-04 -1.402002e-04 +>TXI.EXP //14 +-7.220749e-04 -7.360149e-06 3.195706e-06 1.243383e-06 -6.335190e-09 5.916040e-06 +-4.828946e-05 6.870505e-04 4.069563e-04 -9.419672e-05 -2.515262e-04 -2.414322e-04 +-1.797192e-04 -1.174158e-04 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.550990e-02 -3.016109e-04 1.049410e-05 1.899568e-06 7.414565e-09 1.506443e-05 +-2.444632e-04 5.906232e-05 1.132330e-03 1.100150e-03 7.782153e-04 4.928939e-04 + 2.921743e-04 1.676723e-04 +>TYI.EXP //14 + 1.199238e-03 4.513352e-05 -1.719530e-07 -1.687088e-06 1.100037e-08 -6.632264e-06 + 5.889786e-05 -8.598831e-04 -4.971955e-04 1.354994e-04 3.156657e-04 2.951771e-04 + 2.172971e-04 1.412554e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par96.edi b/examples/data/NEConductor/par96.edi new file mode 100644 index 00000000..a3e90fd3 --- /dev/null +++ b/examples/data/NEConductor/par96.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par96" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par96" +REFLAT=-30:12:30.6247 +REFLONG=139:44:57.6636 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par96" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 9.167728e-03 -1.662236e-04 -1.510400e-05 -2.762696e-07 3.750309e-06 7.218547e-04 +-5.073904e-03 6.532385e-03 1.133103e-02 9.673013e-03 6.881438e-03 4.376326e-03 + 2.591669e-03 1.485466e-03 +>ZXXI ROT=ZROT //14 + 1.255915e-03 -9.629788e-05 -3.881340e-06 3.339931e-07 2.832124e-06 1.596229e-04 +-2.909098e-03 -8.618636e-03 -1.793532e-03 1.950541e-03 2.973475e-03 2.674877e-03 + 1.948202e-03 1.258941e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866358e+02 1.241440e+02 7.346934e+01 4.197589e+01 2.350537e+01 1.316929e+01 + 8.368143e+00 6.584581e+00 5.455842e+00 4.257692e+00 3.000068e+00 1.917803e+00 + 1.142626e+00 6.570200e-01 +>ZXYI ROT=ZROT //14 + 3.082499e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400289e+01 1.271675e+01 + 6.041046e+00 2.973972e+00 2.004165e+00 1.763616e+00 1.572719e+00 1.248086e+00 + 8.774986e-01 5.611838e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865868e+02 -1.241459e+02 -7.346916e+01 -4.197589e+01 -2.350537e+01 -1.316952e+01 +-8.365882e+00 -6.586432e+00 -5.462462e+00 -4.264948e+00 -3.005845e+00 -1.921697e+00 +-1.145000e+00 -6.583980e-01 +>ZYXI ROT=ZROT //14 +-3.082158e+02 -1.471550e+02 -7.805627e+01 -4.294174e+01 -2.400289e+01 -1.271673e+01 +-6.040509e+00 -2.968910e+00 -2.001281e+00 -1.763819e+00 -1.574487e+00 -1.250098e+00 +-8.791217e-01 -5.622889e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-4.276366e-03 -1.623044e-04 -2.724892e-06 9.783316e-08 -4.237012e-06 -6.946127e-04 + 4.543383e-03 -6.338713e-03 -9.867039e-03 -8.021791e-03 -5.547580e-03 -3.468197e-03 +-2.034718e-03 -1.161367e-03 +>ZYYI ROT=ZROT //14 + 1.502459e-04 -5.292003e-05 -3.472303e-07 1.530837e-07 -3.048432e-06 -2.409107e-04 + 3.084847e-03 7.394239e-03 1.051335e-03 -1.948585e-03 -2.590171e-03 -2.218974e-03 +-1.573762e-03 -1.001597e-03 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 9.832800e-03 -1.724032e-04 -3.565531e-05 -4.493331e-07 -1.923429e-08 -7.117671e-06 + 1.119372e-04 -4.490065e-05 -4.575021e-04 -4.742950e-04 -3.519918e-04 -2.276305e-04 +-1.360297e-04 -7.833825e-05 +>TXI.EXP //14 +-4.328237e-04 1.610823e-05 6.470875e-06 1.023290e-06 -3.773757e-09 3.325100e-06 +-2.008516e-05 3.564912e-04 2.107017e-04 -3.612439e-05 -1.280836e-04 -1.292314e-04 +-9.829510e-05 -6.490047e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.545427e-02 -2.997987e-04 1.052615e-05 1.894857e-06 9.496012e-09 1.831075e-05 +-2.653843e-04 1.037229e-04 1.152705e-03 1.083025e-03 7.569901e-04 4.774225e-04 + 2.825703e-04 1.620714e-04 +>TYI.EXP //14 + 1.187038e-03 4.499342e-05 -1.754553e-07 -1.685044e-06 2.016248e-08 -4.999859e-06 + 4.008277e-05 -8.795489e-04 -4.631179e-04 1.557362e-04 3.173597e-04 2.901139e-04 + 2.117265e-04 1.370916e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par97.edi b/examples/data/NEConductor/par97.edi new file mode 100644 index 00000000..8894546e --- /dev/null +++ b/examples/data/NEConductor/par97.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par97" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par97" +REFLAT=-30:12:14.3847 +REFLONG=139:44:57.8689 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par97" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 8.083981e-03 -2.088973e-04 -1.393397e-05 -2.565106e-07 4.117177e-06 7.199964e-04 +-4.831619e-03 6.579050e-03 1.031615e-02 8.329590e-03 5.743268e-03 3.585753e-03 + 2.102393e-03 1.199706e-03 +>ZXXI ROT=ZROT //14 + 1.166664e-03 -1.107745e-04 -3.014463e-06 3.488558e-07 2.991740e-06 1.927385e-04 +-3.057978e-03 -7.816887e-03 -1.070241e-03 2.056845e-03 2.700089e-03 2.302827e-03 + 1.629665e-03 1.035959e-03 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866356e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.316925e+01 + 8.368251e+00 6.584114e+00 5.455523e+00 4.257509e+00 2.999969e+00 1.917753e+00 + 1.142601e+00 6.570067e-01 +>ZXYI ROT=ZROT //14 + 3.082500e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400289e+01 1.271665e+01 + 6.041488e+00 2.974092e+00 2.004055e+00 1.763499e+00 1.572633e+00 1.248033e+00 + 8.774693e-01 5.611685e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865800e+02 -1.241457e+02 -7.346918e+01 -4.197590e+01 -2.350538e+01 -1.316950e+01 +-8.365894e+00 -6.586095e+00 -5.462457e+00 -4.265077e+00 -3.006000e+00 -1.921824e+00 +-1.145086e+00 -6.584496e-01 +>ZYXI ROT=ZROT //14 +-3.082116e+02 -1.471550e+02 -7.805628e+01 -4.294174e+01 -2.400289e+01 -1.271664e+01 +-6.040868e+00 -2.968805e+00 -2.001074e+00 -1.763720e+00 -1.574474e+00 -1.250131e+00 +-8.791647e-01 -5.623240e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.954479e-03 -1.564686e-04 -2.604120e-06 7.953922e-08 -4.046682e-06 -6.833901e-04 + 4.240701e-03 -6.321247e-03 -8.634703e-03 -6.434386e-03 -4.202757e-03 -2.531083e-03 +-1.453425e-03 -8.214898e-04 +>ZYYI ROT=ZROT //14 + 1.227159e-04 -4.982349e-05 -2.853560e-07 1.596606e-07 -3.573663e-06 -2.657602e-04 + 3.197421e-03 6.431615e-03 2.327384e-04 -2.057899e-03 -2.265432e-03 -1.779584e-03 +-1.196688e-03 -7.370653e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 8.241824e-03 -2.597563e-04 -3.679117e-05 -2.047777e-07 -4.129709e-09 -2.750047e-06 + 4.708959e-05 -2.115982e-05 -1.701883e-04 -2.066005e-04 -1.663382e-04 -1.109807e-04 +-6.709351e-05 -3.882741e-05 +>TXI.EXP //14 +-2.865368e-04 2.828921e-05 8.226249e-06 8.746856e-07 1.327162e-08 1.992635e-06 +-9.340692e-06 1.376933e-04 9.585419e-05 4.205893e-06 -4.893637e-05 -5.769649e-05 +-4.637658e-05 -3.139147e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.542957e-02 -2.989467e-04 1.054085e-05 1.892804e-06 1.015300e-08 1.762198e-05 +-2.501465e-04 1.021534e-04 1.081020e-03 1.007874e-03 7.017940e-04 4.419053e-04 + 2.613831e-04 1.498848e-04 +>TYI.EXP //14 + 1.181715e-03 4.492451e-05 -1.774020e-07 -1.684303e-06 2.070177e-08 -4.290966e-06 + 3.443111e-05 -8.246961e-04 -4.270085e-04 1.501057e-04 2.970017e-04 2.697741e-04 + 1.963428e-04 1.269656e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par98.edi b/examples/data/NEConductor/par98.edi new file mode 100644 index 00000000..dd8b776f --- /dev/null +++ b/examples/data/NEConductor/par98.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par98" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par98" +REFLAT=-30:11:58.1448 +REFLONG=139:44:58.0742 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par98" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 6.940743e-03 -2.497445e-04 -1.267537e-05 -2.354854e-07 4.111815e-06 6.731405e-04 +-4.347878e-03 6.255252e-03 8.711338e-03 6.452306e-03 4.208202e-03 2.536328e-03 + 1.457839e-03 8.244499e-04 +>ZXXI ROT=ZROT //14 + 1.071616e-03 -1.241523e-04 -2.118952e-06 3.601542e-07 2.667427e-06 1.942801e-04 +-2.974126e-03 -6.602194e-03 -2.429176e-04 2.078437e-03 2.272322e-03 1.782004e-03 + 1.198704e-03 7.388250e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866354e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.316932e+01 + 8.367652e+00 6.585004e+00 5.457261e+00 4.259229e+00 3.001304e+00 1.918644e+00 + 1.143142e+00 6.573200e-01 +>ZXYI ROT=ZROT //14 + 3.082500e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400289e+01 1.271675e+01 + 6.040967e+00 2.972853e+00 2.003578e+00 1.763658e+00 1.573087e+00 1.248512e+00 + 8.778464e-01 5.614224e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865735e+02 -1.241456e+02 -7.346922e+01 -4.197590e+01 -2.350537e+01 -1.316955e+01 +-8.365561e+00 -6.586812e+00 -5.463306e+00 -4.265725e+00 -3.006458e+00 -1.922119e+00 +-1.145262e+00 -6.585512e-01 +>ZYXI ROT=ZROT //14 +-3.082081e+02 -1.471551e+02 -7.805630e+01 -4.294174e+01 -2.400289e+01 -1.271673e+01 +-6.040391e+00 -2.968231e+00 -2.001083e+00 -1.763903e+00 -1.574684e+00 -1.250312e+00 +-8.792960e-01 -5.624094e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.690308e-03 -1.525227e-04 -2.515268e-06 6.105053e-08 -4.717149e-06 -6.406457e-04 + 3.828350e-03 -6.021321e-03 -7.192845e-03 -4.739760e-03 -2.808876e-03 -1.573875e-03 +-8.639856e-04 -4.779210e-04 +>ZYYI ROT=ZROT //14 + 1.073525e-04 -4.751817e-05 -2.220673e-07 1.697923e-07 -3.533825e-06 -2.514166e-04 + 3.086026e-03 5.356494e-03 -5.120077e-04 -2.084311e-03 -1.884333e-03 -1.309456e-03 +-8.050870e-04 -4.660740e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 6.601383e-03 -3.472176e-04 -3.752068e-05 5.582821e-08 1.805414e-08 1.844485e-06 +-1.961298e-05 4.982983e-06 1.187742e-04 6.591213e-05 2.443249e-05 9.409569e-06 + 4.181649e-06 2.052258e-06 +>TXI.EXP //14 +-1.384611e-04 4.039532e-05 9.889203e-06 7.102484e-07 3.253340e-08 6.116361e-07 + 6.785313e-07 -8.290938e-05 -2.091696e-05 4.279893e-05 3.074570e-05 1.532784e-05 + 6.971642e-06 3.155508e-06 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.540655e-02 -2.981151e-04 1.055486e-05 1.890933e-06 7.459829e-09 1.547766e-05 +-2.197723e-04 8.554987e-05 9.619233e-04 8.948977e-04 6.214976e-04 3.908115e-04 + 2.310246e-04 1.324479e-04 +>TYI.EXP //14 + 1.176837e-03 4.485484e-05 -1.795049e-07 -1.683777e-06 2.150784e-08 -3.813812e-06 + 3.192897e-05 -7.325047e-04 -3.808415e-04 1.349690e-04 2.644192e-04 2.393231e-04 + 1.738577e-04 1.123219e-04 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file diff --git a/examples/data/NEConductor/par99.edi b/examples/data/NEConductor/par99.edi new file mode 100644 index 00000000..1583bb18 --- /dev/null +++ b/examples/data/NEConductor/par99.edi @@ -0,0 +1,126 @@ +>HEAD +DATAID="par99" +FILEBY="WG3DForward" +FILEDATE=03/29/12 +STDVERS="SEG 1.0" +PROGVERS="WINGLINK EDI 1.0.22" +PROGDATE=04/23/02 + +>=DEFINEMEAS +MAXRUN=999 +MAXMEAS=9999 +UNITS=M +REFTYPE=CART +REFLOC="par99" +REFLAT=-30:11:41.9049 +REFLONG=139:44:58.2795 +REFELEV=0 +>HMEAS ID=1001.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1002.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 +>HMEAS ID=1003.001 CHTYPE=HZ X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>EMEAS ID=1004.001 CHTYPE=EX X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>EMEAS ID=1005.001 CHTYPE=EY X=0.0 Y=0.0 Z=0.0 X2=0.0 Y2=0.0 +>HMEAS ID=1006.001 CHTYPE=HX X=0.0 Y=0.0 Z=0.0 AZM=0.0 +>HMEAS ID=1007.001 CHTYPE=HY X=0.0 Y=0.0 Z=0.0 AZM=90.0 + +>=MTSECT +SECTID="par99" +NFREQ=14 +HX=1001.001 +HY=1002.001 +HZ=1003.001 +EX=1004.001 +EY=1005.001 +RX=1006.001 +RY=1007.001 + +>!****FREQUENCIES****! +>FREQ //14 + 3.162278e+03 9.999999e+02 3.162278e+02 1.000000e+02 3.162278e+01 1.000000e+01 + 3.162278e+00 1.000000e+00 3.162278e-01 1.000000e-01 3.162278e-02 1.000000e-02 + 3.162278e-03 1.000000e-03 +>!****IMPEDANCE ROTATION ANGLES****! +>ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****IMPEDANCES****! +>ZXXR ROT=ZROT //14 + 5.750324e-03 -2.883489e-04 -1.133140e-05 -2.118366e-07 3.753918e-06 5.912495e-04 +-3.701339e-03 5.638045e-03 6.744887e-03 4.292535e-03 2.478716e-03 1.365484e-03 + 7.421023e-04 4.085783e-04 +>ZXXI ROT=ZROT //14 + 9.736649e-04 -1.363038e-04 -1.198532e-06 3.666636e-07 1.875843e-06 1.668239e-04 +-2.690925e-03 -5.145274e-03 5.931432e-04 2.021139e-03 1.750461e-03 1.182371e-03 + 7.122916e-04 4.065300e-04 +>ZXX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZXYR ROT=ZROT //14 + 1.866352e+02 1.241440e+02 7.346935e+01 4.197589e+01 2.350537e+01 1.316949e+01 + 8.366446e+00 6.587062e+00 5.460733e+00 4.262541e+00 3.003831e+00 1.920314e+00 + 1.144150e+00 6.579031e-01 +>ZXYI ROT=ZROT //14 + 3.082500e+02 1.471571e+02 7.805614e+01 4.294173e+01 2.400289e+01 1.271700e+01 + 6.039614e+00 2.970470e+00 2.002811e+00 1.764061e+00 1.574000e+00 1.249436e+00 + 8.785611e-01 5.618995e-01 +>ZXY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYXR ROT=ZROT //14 +-1.865671e+02 -1.241459e+02 -7.346928e+01 -4.197590e+01 -2.350537e+01 -1.316967e+01 +-8.364920e+00 -6.588458e+00 -5.464887e+00 -4.266810e+00 -3.007164e+00 -1.922547e+00 +-1.145509e+00 -6.586913e-01 +>ZYXI ROT=ZROT //14 +-3.082054e+02 -1.471555e+02 -7.805633e+01 -4.294174e+01 -2.400289e+01 -1.271698e+01 +-6.039178e+00 -2.967261e+00 -2.001292e+00 -1.764334e+00 -1.575087e+00 -1.250617e+00 +-8.795001e-01 -5.625350e-01 +>ZYX.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>ZYYR ROT=ZROT //14 +-3.485993e-03 -1.504903e-04 -2.458012e-06 4.214740e-08 -3.606121e-06 -5.751729e-04 + 3.378403e-03 -5.518548e-03 -5.761934e-03 -3.177912e-03 -1.559224e-03 -7.280332e-04 +-3.469638e-04 -1.775218e-04 +>ZYYI ROT=ZROT //14 + 1.071057e-04 -4.601823e-05 -1.570553e-07 1.843851e-07 -2.392569e-06 -2.051702e-04 + 2.790726e-03 4.330695e-03 -1.094871e-03 -2.034775e-03 -1.504572e-03 -8.753555e-04 +-4.534073e-04 -2.259396e-04 +>ZYY.VAR ROT=ZROT //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>!****TIPPER PARAMETERS****! +>TROT.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TXR.EXP //14 + 4.915123e-03 -4.325289e-04 -3.756975e-05 3.106950e-07 3.717455e-08 5.664067e-06 +-7.753493e-05 2.340243e-05 3.755530e-04 3.160197e-04 2.022074e-04 1.222871e-04 + 7.116688e-05 4.050537e-05 +>TXI.EXP //14 + 1.196400e-05 5.213401e-05 1.132521e-05 5.382540e-07 2.450701e-08 -8.614680e-07 + 1.172685e-05 -2.785843e-04 -1.320413e-04 7.298706e-05 1.022170e-04 8.256796e-05 + 5.662876e-05 3.547822e-05 +>TXVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 +>TYR.EXP //14 +-1.538491e-02 -2.972919e-04 1.056828e-05 1.889224e-06 2.602245e-09 1.243020e-05 +-1.799390e-04 5.983805e-05 8.124334e-04 7.577850e-04 5.252623e-04 3.298528e-04 + 1.948646e-04 1.116915e-04 +>TYI.EXP //14 + 1.172352e-03 4.478323e-05 -1.817854e-07 -1.683437e-06 1.586751e-08 -3.455813e-06 + 3.109865e-05 -6.162909e-04 -3.281478e-04 1.136908e-04 2.240040e-04 2.024305e-04 + 1.468641e-04 9.481531e-05 +>TYVAR.EXP //14 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 + +>END \ No newline at end of file From 656c993a4ee62e756d0cdc50c716f12af2d5bc7b Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 29 Jun 2016 17:35:19 -0700 Subject: [PATCH 123/124] added functionality to guis --- mtpy/gui/edi_editor.py | 6 ++++-- mtpy/gui/modem_plot_response.py | 37 ++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/mtpy/gui/edi_editor.py b/mtpy/gui/edi_editor.py index dcc7bc9e..d01f37d4 100644 --- a/mtpy/gui/edi_editor.py +++ b/mtpy/gui/edi_editor.py @@ -1313,8 +1313,10 @@ def on_pick(self, event): self.mt_obj.Tipper.tipper_err[d_index] = 0.0 self.mt_obj.Tipper._compute_amp_phase() - - self._ax.figure.canvas.draw() + +# self._ax.figure.canvas.repaint() + self._ax.figure.canvas.update() + self._ax.figure.canvas.flush_events() def in_axes(self, event): """ diff --git a/mtpy/gui/modem_plot_response.py b/mtpy/gui/modem_plot_response.py index ecaca2eb..71e4dd63 100644 --- a/mtpy/gui/modem_plot_response.py +++ b/mtpy/gui/modem_plot_response.py @@ -66,6 +66,7 @@ def __init__(self): self.phase_xy_limits = None self.phase_yx_limits = None self.phase_yy_limits = None + self.tipper_limits = None self.subplot_wspace = .25 @@ -706,7 +707,10 @@ def plot(self): ax.set_ylabel('Im[Z (mV/km nT)]', fontdict=fontdict) if aa > 7: - ax.set_ylim(-1.1, 1.1) + if self.tipper_limits is not None: + ax.set_ylim(self.tipper_limits) + else: + ax.set_ylim(-1.1, 1.1) ax.set_xscale('log') ax.set_xlim(xmin=10**(np.floor(np.log10(period[0])))*1.01, @@ -1047,7 +1051,9 @@ def __init__(self, parent, **kwargs): self.phase_xx_limits = kwargs.pop('phase_xx_limits', None) self.phase_xy_limits = kwargs.pop('phase_xy_limits', None) self.phase_yx_limits = kwargs.pop('phase_yx_limits', None) - self.phase_yy_limits = kwargs.pop('phase_yy_limits', None) + self.phase_yy_limits = kwargs.pop('phase_yy_limits', None) + + self.tipper_limits = kwargs.pop('tipper_limits', None) self.subplot_wspace = kwargs.pop('subplot_wspace', .2) self.subplot_hspace = kwargs.pop('subplot_hspace', .0) @@ -1295,7 +1301,12 @@ def initUI(self): self.ylimp_yy_label = QtGui.QLabel('phase_yy') self.ylimp_yy_edit = QtGui.QLineEdit() self.ylimp_yy_edit.setText('{0}'.format(self.phase_yy_limits)) - self.ylimp_yy_edit.editingFinished.connect(self.set_text_phase_yy) + self.ylimp_yy_edit.editingFinished.connect(self.set_text_phase_yy) + + self.ytlim_label = QtGui.QLabel('tipper') + self.ytlim_edit = QtGui.QLineEdit() + self.ytlim_edit.setText('{0}'.format(self.tipper_limits)) + self.ytlim_edit.editingFinished.connect(self.set_text_tipper_lim) limits_grid = QtGui.QGridLayout() @@ -1322,6 +1333,9 @@ def initUI(self): limits_grid.addWidget(self.ylimp_yy_label, 3, 6) limits_grid.addWidget(self.ylimp_yy_edit, 3, 7) + limits_grid.addWidget(self.ytlim_label, 4, 0) + limits_grid.addWidget(self.ytlim_edit, 4, 1) + #--> legend properties self.legend_pos_label = QtGui.QLabel('Legend Position') self.legend_pos_edit = QtGui.QLineEdit() @@ -1572,6 +1586,23 @@ def set_text_phase_yy(self, text): if len(l_list) == 2: self.phase_yy_limits = tuple(l_list) + def set_text_tipper_lim(self, text): + text = self.ytlim_yy_edit.text() + if text =='None': + return + text = text.replace('(', '').replace(')', '') + t_list = text.split(',') + if len(t_list) != 2: + print 'enter as (min, max)' + l_list = [] + for txt in t_list: + try: + l_list.append(float(txt)) + except ValueError: + pass + if len(l_list) == 2: + self.tipper_limits = tuple(l_list) + def set_text_legend_pos(self): text = self.legend_pos_edit.text() if text =='None': From d81f5fd3c668dd65c6e0ded23a84d8e0665b292b Mon Sep 17 00:00:00 2001 From: JP Date: Wed, 29 Jun 2016 18:06:38 -0700 Subject: [PATCH 124/124] added attribute freq_tol to occam2d_rewrite, if None then interpolat over frequency range, if set to a percent value (.05) then frequency looked for --- mtpy/modeling/occam2d_rewrite.py | 62 +++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/mtpy/modeling/occam2d_rewrite.py b/mtpy/modeling/occam2d_rewrite.py index 8255254e..68023459 100644 --- a/mtpy/modeling/occam2d_rewrite.py +++ b/mtpy/modeling/occam2d_rewrite.py @@ -2086,6 +2086,7 @@ def __init__(self, edi_path=None, **kwargs): self.freq_min = kwargs.pop('freq_min', None) self.freq_max = kwargs.pop('freq_max', None) self.freq_num = kwargs.pop('freq_num', None) + self.freq_tol = kwargs.pop('freq_tol', None) self.occam_format = 'OCCAM2MTDATA_1.0' self.title = 'MTpy-OccamDatafile' @@ -2368,34 +2369,53 @@ def _fill_data(self): #loop over mt object in edi_list and use a counter starting at 1 #because that is what occam starts at. for s_index, edi in enumerate(self.edi_list): - station_freq = edi.Z.freq - interp_freq = self.freq[np.where((self.freq >= station_freq.min()) & - (self.freq <= station_freq.max()))] - # interpolate data onto given frequency list - z_interp, t_interp = edi.interpolate(interp_freq) - z_interp._compute_res_phase() - - rho = z_interp.resistivity - phi = z_interp.phase - rho_err = z_interp.resistivity_err - if t_interp is not None: - tipper = t_interp.tipper - tipper_err = t_interp.tipper_err + + if self.freq_tol is None: + station_freq = edi.Z.freq + interp_freq = self.freq[np.where((self.freq >= station_freq.min()) & + (self.freq <= station_freq.max()))] + # interpolate data onto given frequency list + z_interp, t_interp = edi.interpolate(interp_freq) + z_interp._compute_res_phase() + + rho = z_interp.resistivity + phi = z_interp.phase + rho_err = z_interp.resistivity_err + if t_interp is not None: + tipper = t_interp.tipper + tipper_err = t_interp.tipper_err + else: + tipper = None + tipper_err = None else: - tipper = None - tipper_err = None + station_freq = edi.Z.freq + rho = edi.Z.resistivity + phi = edi.Z.phase + tipper = edi.Tipper.tipper + tipper_err = edi.Tipper.tipper_err self.data[s_index]['station'] = edi.station self.data[s_index]['offset'] = edi.offset for freq_num, frequency in enumerate(self.freq): - #skip, if the listed frequency is not available for the station - if not (frequency in interp_freq): - continue - - #find the respective frequency index for the station - f_index = np.abs(interp_freq-frequency).argmin() + if self.freq_tol is not None: + try: + f_index = np.where((station_freq >= frequency*(1-self.freq_tol)) & + (station_freq <= frequency*(1+self.freq_tol)))[0][0] + + except IndexError: + f_index = None + else: + #skip, if the listed frequency is not available for the station + if (frequency in interp_freq): + #find the respective frequency index for the station + f_index = np.abs(interp_freq-frequency).argmin() + else: + f_index = None + if f_index == None: + continue + #--> get te resistivity self.data[s_index]['te_res'][0, freq_num] = rho[f_index, 0, 1] #compute error