def read_ModEM(self, datafile=None, respfile=None): if ((datafile is None) and (respfile is None)): print "Please provide data and/or response file" # check data type compatible with provided input files self._check_data_type(datafile, respfile) # determine whether to automatically choose data type if self.data_type is None: find_datatype=True else: find_datatype=False # read files if datafile is not None: mdObj=mtmn.Data() mdObj.read_data_file(datafile) if self.workdir is None: self.workdir=op.dirname(datafile) if find_datatype: self.data_type='data' self.period=mdObj.period_list if respfile is not None: mrObj=mtmn.Data() mrObj.read_data_file(respfile) if self.workdir is None: self.workdir=op.dirname(respfile) if find_datatype: if self.data_type == 'data': self.data_type='residual' else: self.data_type='response' self.period=mrObj.period_list # get period index and period for plotting self.get_plot_period_index() # get mt_dict containing data, responses, or residual depending on # data_type if self.data_type == 'data': self.mt_dict=mdObj.mt_dict elif self.data_type == 'response': self.mt_dict=mrObj.mt_dict elif self.data_type == 'residual': self.mt_dict={} for key in mdObj.mt_dict.keys(): self.mt_dict[key]=mtpt.ResidualPhaseTensor(pt_object1=mdObj.mt_dict[key], pt_object2=mrObj.mt_dict[key])
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]
m_obj.z1_layer = 2 m_obj.z_target_depth = 20000 m_obj.z_bottom = 200000 m_obj.n_layers = 40 m_obj.pad_east = 15 m_obj.pad_north = 15 m_obj.pad_z = 5 m_obj.pad_stretch_h = 1.8 m_obj.pad_stretch_z = 1.5 m_obj.make_mesh() m_obj.plot_mesh() m_obj.save_path = sv_path m_obj.station_locations['elev'][:] = 0.0 m_obj.write_model_file(model_fn_basename='sp_sm_topo.rho') d_obj = modem.Data(edi_list=edi_list) d_obj.period_list = np.logspace(-3, 2.5, 17) d_obj.station_locations = m_obj.station_locations.copy() d_obj.error_egbert = 7 d_obj.error_tipper = .05 d_obj.write_data_file(save_path=sv_path, fn_basename='sp_data_err10_tip05.dat') ##============================================================================== ## Do all the work ##============================================================================== #data_fn = r"c:\Users\jpeacock\Documents\SanPabloBay\Inv01_dp_elev\sp_data_err10_tip05.dat" #model_fn = r"c:\Users\jpeacock\Documents\SanPabloBay\Inv01_dp_elev\sp_sm_topo.rho" #m_obj = modem.Model()
r"/home/jpeacock/Documents/ModEM/LV/sm_avg_inv2/lv_sm_avg_err07_NLCG_057.rho" ) mfn_avg_3 = r"/home/jpeacock/Documents/ModEM/LV/sm_avg_all_cov5/lv_avg_all_NLCG_069.rho" mfn_avg_1 = r"/home/jpeacock/Documents/ModEM/LV/sm_avg_cov5/lv_avg_cov5_NLCG_054.rho" mfn_comb_1 = ( r"/home/jpeacock/Documents/ModEM/LV/sm_comb_err07/lv_comb_err07_cov5_NLCG_055.rho" ) mfn_list = [mfn_sm3, mfn_avg_2] # difference between modem and ws grids # d_east = -7500. # d_north = 500. # get all models into useable objects modem_data = modem.Data() modem_data.read_data_file(data_fn) model_obj_avg = modem.Model() model_obj_avg.read_model_file(mfn_avg_2) model_obj_avg3 = modem.Model() model_obj_avg3.read_model_file(mfn_avg_3) model_obj_comb = modem.Model() model_obj_comb.read_model_file(mfn_comb_1) model_obj_sm3 = modem.Model() model_obj_sm3.read_model_file(mfn_sm3) sm3_res = interp_grid(model_obj_sm3, model_obj_avg)
# -*- coding: utf-8 -*- """ Created on Mon Nov 02 14:20:33 2015 @author: jpeacock """ import mtpy.modeling.modem_new as modem import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter mod_rfn = r"c:\Users\jpeacock\Documents\LV\lv_geo_avg_err03_cov5_NLCG_054.dat" mod_dfn = r"c:\Users\jpeacock\Documents\LV\lv_geo_err03_tip07.dat" data_obj = modem.Data() data_obj.read_data_file(mod_dfn) s_list = data_obj.station_locations['station'] ## plot station responses as impedance #mpr = modem.PlotResponse(data_fn=mod_dfn, resp_fn=mod_rfn, plot_yn='n', # color_mode='color') # #for station in s_list: # mpr.mtem = '.' # mpr.mtmm = '.' # mpr.cted = (.25, .25, .25) # mpr.ctmd = (.25, .25, .25) # mpr.ctem = (0, 0, 1) # mpr.ctmm = (1, 0, 0) # mpr.ms = 3
# -*- coding: utf-8 -*- """ Created on Fri Apr 10 11:54:57 2015 @author: jpeacock-pr """ import mtpy.modeling.modem_new as modem import mtpy.analysis.niblettbostick as nb import numpy as np #dfn = r"c:\MinGW32-xy\Peacock\ModEM\LV\Topography_test\lv_dp_23p_err12_tip2_elev.dat" dfn = r"/mnt/hgfs/ModEM/LV/Topography_test/lv_dp_23p_err12_tip2_elev.dat" d_obj = modem.Data() d_obj.read_data_file(dfn) #log_fid = file(r"c:\MinGW32-xy\Peacock\ModEM\LV\Topography_test\depths.log", 'w') log_fid = file(r"/mnt/hgfs/ModEM/LV/Topography_test/depths.log", 'w') depth_arr_min = np.zeros( (d_obj.period_list.shape[0], len(d_obj.mt_dict.keys()))) depth_arr_max = np.zeros( (d_obj.period_list.shape[0], len(d_obj.mt_dict.keys()))) for ii, mt_key in enumerate(sorted(d_obj.mt_dict.keys())): mt_obj = d_obj.mt_dict[mt_key] d_arr = nb.calculate_depth_nb(z_object=mt_obj.Z) log_fid.write('-' * 30 + '\n') log_fid.write('{0}\n'.format(mt_key)) log_fid.write('-' * 30 + '\n')
for zz in range(comb_mod.grid_z.shape[0]): smooth_comb_res[:, :, zz] = ( 10**smooth_2d(np.log10(smooth_comb_res[:, :, zz]), 9) / 2.0) smooth_comb_res = fill_outside_grid(smooth_comb_res, 5, 12) comb_mod.res_model = smooth_comb_res comb_mod.write_model_file( save_path=r"c:\Users\jpeacock\Documents\LV\Inversions", model_fn_basename=r"lv_mb_sm.rho", ) # --> plot to see how we did grid_east, grid_north = np.meshgrid(comb_mod.grid_east, comb_mod.grid_north) md = modem.Data() md.read_data_file( r"c:\Users\jpeacock\Documents\LV\Inversions\lv_mb_err12_tip10.dat") fig = plt.figure(3) plt.clf() ax_mb = fig.add_subplot(2, 2, 1, aspect="equal") ax_mb.pcolormesh(grid_east, grid_north, np.log10(mb_res[:, :, 33]), cmap="jet_r", vmin=-1, vmax=4) ax_lv = fig.add_subplot(2, 2, 2, aspect="equal", sharex=ax_mb, sharey=ax_mb)
mod_obj.pad_north = 18 mod_obj.pad_stretch_h = 1.4 mod_obj.pad_z = 4 mod_obj.n_layers = 40 mod_obj.z_target_depth = 40000.0 mod_obj.make_mesh() mod_obj.plot_mesh() mod_obj.write_model_file( model_fn=os.path.join(save_path, r"mshn_modem_sm.rho")) inv_period_list = np.logspace(-np.log10(625.0), 3, num=23) data_obj = modem.Data( edi_list=s_edi_list, station_locations=mod_obj.station_locations, period_list=inv_period_list, ) data_obj.error_type = "egbert" data_obj.error_egbert = 10.0 data_obj.error_tipper = 0.05 data_obj.get_mt_dict() data_obj._fill_data_array() data_obj.data_array["elev"][:] = 0.0 data_obj.write_data_file(save_path=save_path, fn_basename="mshn_modem_data_ef10.dat") # cov = modem.Covariance(grid_dimensions=mod_obj.res_model.shape) # cov.smoothing_east = 0.4 # cov.smoothing_north = 0.4 # cov.smoothing_z = 0.4
def data_fn(self, data_fn): self._data_fn = data_fn self.data_obj = modem.Data() self.data_obj.read_data_file(self._data_fn) self.redraw_plots()
# cp_east = cp_arr['rel_east'][0] # cp_north = cp_arr['rel_north'][0] # # d_obj.data_array['rel_east'][:] -= cp_east # d_obj.data_array['rel_north'][:] -= cp_north # # d_obj.write_data_file(fn_basename='mont_no_topo_shift.dat', # compute_error=False, # fill=False) inv01_dfn = r"c:\Users\jpeacock\Documents\Montserrat\Inv01_topo\Mont_data_elev.dat" inv02_dfn = ( r"c:\Users\jpeacock\Documents\Montserrat\Inv02_topo\mont_data_elev_shift.dat" ) d1_obj = modem.Data() d1_obj.read_data_file(inv01_dfn) d2_obj = modem.Data() d2_obj.read_data_file(inv02_dfn) d1_obj.data_array["rel_east"][:] = d2_obj.data_array["rel_east"][:] d1_obj.data_array["rel_north"][:] = d2_obj.data_array["rel_north"][:] d1_obj.data_array["elev"][:] = d2_obj.data_array["elev"][:] d1_obj.write_data_file( save_path=d2_obj.save_path, fn_basename="mont_data_elev_edit.dat", compute_error=False, fill=False, )