# seismic = pd.read_table(r'C:\Users\eroots\Downloads\Malartic Seismic Receivers location (1)\MAL_LN131_R1_KMIG_SUGETHW_UTM.txt', header=0, names=('trace', 'x', 'y'), sep='\s+') ######################################################### # A-G / ROUYN # main_transect = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/rouyn/j2/main_transect_more.lst') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/abi-gren/j2/center_fewer3.lst') # backup_data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/abi-gren/j2/center_fewer3.lst') # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/abi-gren/centerMore_ModEM/NLCG_NLCG_120.rho') # seismic = pd.read_table('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/rouyn/rou_seismic_traces.txt', # header=0, names=('trace', 'x', 'y'), sep='\s+') ######################################################### # MATHESON # main_transect = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/mat_westLine.lst') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/mat_bb_cull1.lst') # backup_data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/mat_bb_cull1.lst') # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/matheson/mat3/mat3_lastIter.rho') main_transect = WSDS.RawData(local_path + '/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/MATBB.lst') data = WSDS.RawData(local_path + '/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/MATall.lst') backup_data = WSDS.RawData(local_path + '/phd/ownCloud/data/Regions/MetalEarth/matheson/j2/MATall.lst') mod = WSDS.Model(local_path + '/phd/ownCloud/data/Regions/MetalEarth/matheson/Hex2Mod/HexMat_all.model') ######################################################### # AFTON # main_transect = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/afton/j2/l0.lst') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/afton/j2/afton_cull1.lst') # backup_data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/afton/j2/afton_cull1.lst') # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/afton/afton1/afton2_lastIter.rho') # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/afton/afton_rot/aftonrot_NLCG_069.rho') ######################################################### # GERALDTON # main_transect = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/main_transect.lst') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/ger_cull4.lst') # backup_data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/ger_cull4.lst')
import naturalneighbor as nn import matplotlib.pyplot as plt import numpy as np import e_colours.colourmaps as cm from mpl_toolkits.axes_grid1 import make_axes_locatable cmap = cm.jet_plus(64) # listfile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\dbr15\j2\allsites.lst' # listfile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\MetalEarth\j2\allbb.lst') # datafile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\MetalEarth\j2\allbb.data') # datafile = 'C:/Users/eric/Documents/MATLAB/MATLAB/Inversion/Regions/MetalEarth/swayze/swz_cull1/swz_cull1f_Z.dat' datafile = 'C:/Users/eric/phd/ownCloud/data/Regions/MetalEarth/j2/cull_allSuperior.data' listfile = 'C:/Users/eric/phd/ownCloud/data/Regions/MetalEarth/j2/culled_allSuperior.lst' data = WSDS.Data(datafile=datafile, listfile=listfile) raw = WSDS.RawData(listfile=listfile) raw.locations = raw.get_locs(mode='latlong') for ii in range(len(raw.locations)): lon, lat = utils.project((raw.locations[ii, 1], raw.locations[ii, 0]), zone=16, letter='U')[2:] raw.locations[ii, 1], raw.locations[ii, 0] = lon, lat data.locations = raw.locations save_path = 'C:/Users/eric/phd/ownCloud/Documents/Seminars/Seminar 3/Figures/Pseudosections/culled/' # rmsites = [site for site in data.site_names if site[0] == 'e' or site[0] == 'd'] # data.remove_sites(rmsites) # data.sort_sites(order='west-east') rho = {site.name: utils.compute_rho(site)[0] for site in data.sites.values()} pha = {site.name: utils.compute_phase(site)[0] for site in data.sites.values()} rho_lim = [0, 5] n_interp = 250 period = 14 padding = 50000
import pyMT.data_structures as WSDS import pandas as pd import numpy as np # Define your data and list locations data_file = 'C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/swayze/swz_cull1/finish/swz_cull1i_Z.dat' list_file = 'C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/swayze/j2/swz_cull1.lst' # Read data and list data = WSDS.Data(data_file) raw = WSDS.RawData(list_file) # Define what info you want in the CSV (headers) columns = ('site', 'X', 'Y', 'period', 'beta', 'alpha', 'det_phi', 'skew_phi', 'phi_1', 'phi_2', 'phi_3', 'phi_max', 'phi_min', 'Lambda', 'azimuth', 'delta') c = 0 site_list = [] # Initialize numpy array with zeros arr = np.zeros((len(data.site_names) * len(data.periods), len(columns))) for site in data.site_names: for ii, period in enumerate(data.periods): phase_tensor = data.sites[site].phase_tensors[ii] for jj, column in enumerate(columns): # Can't pass string to np array, so ignore for now if column == 'site': # arr[ii, jj] = site pass # If looking for lat/longs, grab these from the RawData object elif column == 'X': arr[c, jj] = raw.sites[site].locations['Long'] elif column == 'Y':
import pyMT.data_structures as WSDS import matplotlib.pyplot as plt import shapefile from pyproj import Proj import numpy as np import matplotlib.ticker as plticker loc = plticker.MultipleLocator(base=75.0) # this locator puts ticks at regular intervals abi = WSDS.RawData(r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions' + r'\abi-gren\New\j2\allsites.lst') # wst = WSDS.RawData(r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions' + # r'\wst\New\j2\all.lst') wst = WSDS.RawData(r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions' + r'\wst\New\j2\southeastern.lst') abi.locations = abi.get_locs(mode='latlong') wst.locations = wst.get_locs(mode='latlong') MT_stations = ([ix for ix in abi.locations[:, 0]] + [ix for ix in wst.locations[:, 0]], [iy for iy in abi.locations[:, 1]] + [iy for iy in wst.locations[:, 1]]) p = Proj(proj='utm', zone=17, ellps='WGS84') sl = shapefile.Reader('D:/PhD/Seismic Lines/Export_Output_11') MT_stations = p(MT_stations[1], MT_stations[0]) MT_stations = np.transpose(np.array(MT_stations)) / 1000 sx, sy = ([], []) for shape in sl.shapeRecords(): sx += [ix[0] / 1000 for ix in shape.shape.points[:]] sy += [iy[1] / 1000 for iy in shape.shape.points[:]] transect = np.transpose(np.array((sx, sy))) fig = plt.figure() ax = fig.add_subplot(111)
# main_list = 'C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/j2/main_transect.lst' # listfile = 'C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/j2/main_transect.lst' ########################################### # DRYDEN listfile = local_path + 'phd/ownCloud/data/Regions/MetalEarth/dryden/j2/dry5_3.lst' main_list = local_path + 'phd/ownCloud/data/Regions/MetalEarth/dryden/j2/main_transect_pt.lst' ########################################### # MALARTIC # listfile = local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/j2/mal_amt.lst' # main_list = local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/j2/mal_amt.lst' ########################################### # LARDER # listfile = local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/main_transect_bb.lst' # main_list = local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/main_transect_bb.lst' data = WSDS.RawData(listfile) main_transect = WSDS.RawData(main_list) # data = WSDS.RawData(listfile=listfile) normalize = 1 fill_param = 'phi_2' # fill_param = 'beta' # fill_param = 'Lambda' use_periods = sorted(list(data.narrow_periods.keys())) # use_periods = data.sites[data.site_names[0]].periods x_scale, y_scale = 1, 120 save_fig = 1 freq_skip = 2 radius = 20 label_offset = -4.5 file_path = local_path + '/phd/ownCloud/Documents/ME_Transects/Dryden_paper/RoughFigures/'
# mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/malartic/mal1/mal3_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/malartic/mal1/mal3_lastIter.dat') # mod = WSDS.Model(local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/Hex2Mod/HexMal_Z.model') # data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/j2/mal_hex.lst') ##################################################################### # DRYDEN # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/norot/dry5norot_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/norot/dry5norot_lastIter.dat') ##################################################################### # AFTON # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/regions/afton/afton1/afton2_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/regions/afton/afton1/afton2_lastIter.dat') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/regions/afton/j2/afton_cull1.lst') ##################################################################### # LARDER data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/test.lst') # mod = WSDS.Model(local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/Hex2Mod/Hex2Mod_all.model') mod = WSDS.Model( local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/Hex2Mod/Hex2Mod_Z_static.model' ) # reso = [] # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/dry53.rho') # kimberlines = [5.341140e+006, 5.348097e+006, # 5.330197e+006, 5.348247e+006, # 5.369642e+006] kimberlines = [] mod.origin = data.origin # data.locations = np.array([[0 for ii in range(17)], # [0.000000000E+00, 0.501143799E+04, 0.104698379E+05, # 0.136017852E+05, 0.178389980E+05, 0.208527168E+05,
# data = WSDS.Data(r'C:\Users\eric\phd\ownCloud\data\Regions\MetalEarth\swayze\swz_cull1\finish\swz_cull1i_Z.dat') # reso = WSDS.Model(r'C:\Users\eric\phd\ownCloud\data\Regions\MetalEarth\swayze\swz_cull1\finish\Resolution.model') # mod = WSDS.Model(r'C:\Users\eroots\phd\ownCloud\data\Regions\MetalEarth\swayze\swz_cull1\finish\Resolution.model') # mod = WSDS.Model(r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\MetalEarth\swayze\R1South_2\bb\R1South_2e_smooth.model') # data = WSDS.Data(r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\MetalEarth\swayze\R1South_2\bb\R1South_2f_bb_Z.dat') # data = WSDS.Data(datafile='C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/dry53.data', # listfile='C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/j2/dry5_3.lst') ##################################################################### # MALARTIC # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/malartic/mal1/mal3_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/malartic/mal1/mal3_lastIter.dat') mod = WSDS.Model( local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/Hex2Mod/HexMal_Z.model') data = WSDS.RawData( local_path + 'phd/ownCloud/data/Regions/MetalEarth/malartic/j2/mal_hex.lst') ##################################################################### # DRYDEN # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/norot/dry5norot_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/dryden/dry5/norot/dry5norot_lastIter.dat') ##################################################################### # AFTON # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/regions/afton/afton1/afton2_lastIter.rho') # data = WSDS.Data('C:/Users/eroots/phd/ownCloud/data/regions/afton/afton1/afton2_lastIter.dat') # data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/regions/afton/j2/afton_cull1.lst') ##################################################################### # LARDER # data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/test.lst') # mod = WSDS.Model(local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/Hex2Mod/Hex2Mod_all.model') # reso = []
import pyMT.data_structures as WSDS import pyMT.utils as utils from scipy.interpolate import griddata import matplotlib.pyplot as plt import numpy as np import e_colours.colourmaps as cm import naturalneighbor as nn # listfile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\dbr15\j2\allsites.lst' # datafile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Test_Models\dimensionality\synthLayer.data' listfile = 'C:/Users/eroots/phd/ownCloud/data/Regions/MetalEarth/swayze/j2/main_transect.lst' # data = WSDS.Data(datafile=datafile) data = WSDS.RawData(listfile) cmap = cm.jet() n_interp = 300 # rmsites = [site for site in data.site_names if site[0] == 'e' or site[0] == 'd'] # data.remove_sites(rmsites) # data.sort_sites(order='west-east') data.locations = data.locations[ data.locations[:, 0].argsort()] # Make sure they go north-south # A little kludge to make sure the last few sites are in the right order (west-east) # data.locations[0:8, :] = data.locations[np.flip(data.locations[0:8, 1].argsort(), 0)] rho = {site.name: utils.compute_rho(site)[0] for site in data.sites.values()} pha = {site.name: utils.compute_phase(site)[0] for site in data.sites.values()} bost = { site.name: utils.compute_bost1D(site)[0] for site in data.sites.values() } depths = { site.name: utils.compute_bost1D(site)[1] for site in data.sites.values()
def do_the_bosticks(listfile=None, datafile=None, comp=None, N_interp=None, z_bounds=None, filter_width=1, sites_slice=None): # if listfile is None: # print('Listfile is None') # listfile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\abi-gren\New\j2\allsites.lst' if datafile is None: print('datafile is None') datafile = r'C:\Users\eric\Documents\MATLAB\MATLAB\Inversion\Regions\abi-gren\New\j2\allsites_1.data' if listfile: raw = WSDS.RawData(listfile=listfile) else: raw = WSDS.Data(datafile=datafile) if not sites_slice: sites_slice = ('p91011', 'p91009', 'e90005', 'e90001', 'g90003', 'p91003', 'p91006', 'p91006', 'p91008', 'p91012', 'e89001', 'e90002', 'g90004', 'g90002', 'g90006', 'p91013', 'p91014', 'p91015', 'p91016', 'p91017', 'p91019') data = WSDS.Data(listfile=listfile, datafile=datafile) NS = len(raw.site_names) if not N_interp: NZ_interp = 200 NXY_interp = 200 elif len(N_interp) == 1: NZ_interp = N_interp NXY_interp = N_interp else: NZ_interp = N_interp[0] NXY_interp = N_interp[1] locs = np.zeros((NS, 2)) all_depths = [] all_bosticks = [] for ii, site_name in enumerate(raw.site_names): site = raw.sites[site_name] locs[ii, 1] = data.sites[site.name].locations['X'] / 1000 locs[ii, 0] = data.sites[site.name].locations['Y'] / 1000 # locs[ii, 1] = raw.sites[site.name].locations['Long'] # locs[ii, 0] = raw.sites[site.name].locations['Lat'] bostick, depth = utils.compute_bost1D(site, comp=comp, filter_width=filter_width)[:2] if any(np.isnan(depth)): print(site_name) sys.exit() all_depths.append(depth) all_bosticks.append(bostick) all_depths_flat = np.array(utils.flatten_list(all_bosticks)) data_points = np.zeros((len(all_depths_flat), 3)) c = 0 for ii, ds in enumerate(all_depths): for d in ds: data_points[c, 0] = locs[ii, 0] data_points[c, 1] = locs[ii, 1] data_points[c, 2] = d c += 1 try: y = [data.sites[site].locations['X'] / 1000 for site in sites_slice] # if site in data.site_names] x = [data.sites[site].locations['Y'] / 1000 for site in sites_slice] # if site in data.site_names] # y = [raw.sites[site].locations['Long'] for site in sites_slice] # if site in data.site_names] # x = [raw.sites[site].locations['Lat'] for site in sites_slice] # if site in data.site_names] except KeyError as e: if (type(sites_slice[0]) == str): print('Site {} not found. Check your site list.'.format(e)) print(e) sys.exit() else: x = sites_slice[:int(len(sites_slice) / 2)] y = sites_slice[int(len(sites_slice) / 2):] # This sorting is south-north. Might not make sense for west-east profiles. x, y = ([y2 for (x2, y2) in sorted(zip(y, x))], [x2 for (x2, y2) in sorted(zip(y, x))]) print(x, y) print(raw.site_names) print(data.periods) print('Data file is {}'.format(datafile)) print('List file is {}'.format(listfile)) V = np.array(utils.flatten_list(all_bosticks)) if not z_bounds: z_bounds = (0.1, 300) zi = np.logspace(np.log10(z_bounds[0]), np.log10(z_bounds[1]), NZ_interp) yi = np.linspace(min(y), max(y), NXY_interp) xi = np.interp(yi, y, x) X = np.ndarray.flatten(np.tile(xi, (NZ_interp, 1)), order='F') Y = np.ndarray.flatten(np.tile(yi, (NZ_interp, 1)), order='F') Z = np.ndarray.flatten(np.tile(zi, (1, NXY_interp)), order='F') query_points = np.transpose(np.array((X, Y, Z))) return data_points, query_points, V
# data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/afton/j2/afton_cull1.lst') # backup_data = WSDS.RawData('C:/Users/eroots/phd/ownCloud/data/Regions/afton/j2/afton_cull1.lst') # mod = WSDS.Model('C:/Users/eroots/phd/ownCloud/data/Regions/afton/afton1/afton2_lastIter.rho') ######################################################### # GERALDTON # main_transect = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/main_transect.lst') # data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/ger_cull4.lst') # backup_data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/geraldton/j2/ger_cull4.lst') # mod = WSDS.Model(local_path + 'phd/ownCloud/data/Regions/MetalEarth/geraldton/ger_cull4/finish/gerFinish_lastIter.rho') # seismic = pd.read_table(r'C:/Users/eroots/phd/ownCloud/Metal Earth/Data/Seismic/ME_Seismic_PostStack_Migrated_sections/' + # r'GERALDTON_LN301_R1_KMIG/GERALDTON_LN301_R1_KMIG_SUGETHW_UTM.txt', # header=0, names=('trace', 'x', 'y'), sep='\s+') ######################################################### # LARDER main_transect = WSDS.RawData( local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/main_transect.lst') data = WSDS.RawData(local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/test.lst') backup_data = WSDS.RawData( local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/j2/test.lst') mod = WSDS.Model( local_path + 'phd/ownCloud/data/Regions/MetalEarth/larder/Hex2Mod/Hex2Mod_all.model') seismic = pd.read_table( local_path + '/phd/ownCloud/Metal Earth/Data/Seismic/ME_Seismic_PostStack_Migrated_sections/' + r'LARD_LN321_R1_KMIG/LARD_LN321_R1_KMIG_SUGETHW_UTM.txt', header=0, names=('trace', 'x', 'y'), sep='\s+')
# listfile = 'C:/Users/eric/phd/ownCloud/data/Regions/MetalEarth/j2/culled_allSuperior.lst' filename = 'C:/Users/eric/phd/ownCloud/secondary/simpeg_tests/eastSuperior_1D_Z.dat' listfile = 'C:/Users/eric/phd/ownCloud/data/Regions/MetalEarth/j2/1D_sites.lst' shp_file_base = 'C:/Users/eric/phd/ownCloud/data/ArcMap/test2.shp' # out_path = 'C:/Users/eric/phd/ownCloud/Documents/Seminars/Seminar 3/Figures/PTs/all/' # out_file = 'allSuperior_PT_' out_path = 'C:/Users/eric/phd/ownCloud/secondary/simpeg_tests/Figures/PTs/' out_file = '1D_PT_' ext = '.png' dpi = 600 save_fig = 1 cutoff_distance = 500 ################################################################################# all_data = WSDS.Data(filename, listfile=listfile) all_raw = WSDS.RawData(listfile) ME_data = deepcopy(all_data) ME_raw = deepcopy(all_raw) ME_data.remove_sites( sites=[site for site in ME_data.site_names if site.startswith('9')]) ME_raw.remove_sites( sites=[site for site in ME_raw.site_names if site.startswith('9')]) all_sites_ME = deepcopy(ME_data.site_names) # Remove redunantly close points for ii, site1 in enumerate(ME_data.site_names): for jj, site2 in enumerate(ME_data.site_names): dist = euclidean( (ME_data.locations[ii, 1], ME_data.locations[ii, 0]), (ME_data.locations[jj, 1], ME_data.locations[jj, 0])) if dist < cutoff_distance and site1 in all_sites_ME and (site1 != site2):
def get_inputs(): raw_origin = '0, 0' args = {} # print('Output model, sites, or both? (m/d/b) {Default = b}') to_output = verify_input(message='Output model, sites, or both? (m/d/b)', expected='mbd', default='b') if not to_output: to_output = 'b' if to_output == 'm' or to_output == 'b': # Get model name modelfile = verify_input('Input model name', expected='read') args.update({'modelfile': modelfile}) include_resolution = verify_input('Include model resolution?', expected='yn', default='n') if include_resolution == 'y': resolution_file = verify_input( 'Resolution file name:', expected='read', default='Resolution0_inverted.model') args.update({'resolutionfile': resolution_file}) if to_output == 'd' or to_output == 'b': # Get data or list file datafile = verify_input('Input data or list file name', expected='read') # If listfile, make sure the conversion to raw data works if '.lst' in datafile: path = os.path.abspath(datafile) datpath = input('Path to .dat files \n' + '[Default: {}] > '.format(path)) try: raw_data = WSDS.RawData(listfile=datafile, datpath=datpath) raw_origin = str(raw_data.origin).replace('(', '').replace(')', '') args.update({'datpath': datpath}) args.update({'listfile': datafile}) # args.update({'origin': origin}) except WSFileError as err: print(err.message) # Otherwise just get the data file elif '.dat' in datafile: args.update({'datafile': datafile}) origin = verify_input('Input model origin as Easting, Northing', expected='numtuple', default=raw_origin) args.update({'origin': origin}) args.update( {'UTM': verify_input('UTM Zone', expected=str, default='dummy')}) if args['UTM'] != 'dummy': args.update({ 'transform_coords': verify_input( 'Do you want to transform the coordinates to this UTM zone?', expected='yn', default='y') }) else: args.update({'transform_coords': 'n'}) sea_level = verify_input( 'Sea level adjustment (Positive for above sea level)', expected=float, default=0) args.update({'sea_level': sea_level}) outfile = verify_input('Base output file name', expected='write') args.update({'outfile': outfile}) return args
'beta': np.rad2deg(beta), 'lambda': Lambda, 'azimuth': np.rad2deg(azimuth) } return parameters def calculate_phase_tensor(site): X, Y = form_tensors(site) # phi = [np.matmul(np.linalg.inv(x), y) for x, y in zip(X, Y)] phi = np.matmul(np.linalg.inv(X), Y) return phi, X, Y if __name__ == '__main__': filename = 'F:/GJH/TNG&MTR-EDI/all.lst' data = WSDS.RawData(filename) site = data.sites[data.site_names[0]] all_phi, X, Y = calculate_phase_tensor(site) phi_parameters = {} for ii, phi in enumerate(all_phi): parameters = calculate_phase_parameters(phi) if ii == 0: phi_parameters = { key: np.zeros((len(site.periods))) for key in parameters.keys() } phi_parameters['phi_2'] = np.zeros((len(site.periods)), 'complex') for key, value in parameters.items(): phi_parameters[key][ii] = value
def interpolate_slice(x, y, Z, NP): mod_interp = RBS(x, y, Z) interp_vals = mod_interp(np.linspace(x[0], x[-1], NP), np.linspace(y[0], y[-1], NP)) return interp_vals mod = WSDS.Model(r'C:\Users\eric\Documents' + r'\MATLAB\MATLAB\Inversion\Regions' + r'\abi-gren\New\abi0_sens\outSens_model.00') reso = WSDS.Model(r'C:\Users\eric\Documents' + r'\MATLAB\MATLAB\Inversion\Regions' + r'\abi-gren\New\abi0_sens\Resolution0_inverted.model') data = WSDS.RawData( r'C:\Users\eric\Documents' + r'\MATLAB\MATLAB\Inversion\Regions' + r'\abi-gren\New\abi0_sens\bigabi_2.lst', datpath=r'C:\Users\eric\Documents' + r'\MATLAB\MATLAB\Inversion\Regions' + r'\abi-gren\New\j2') mod.origin = data.origin mod.to_UTM() cax = [1, 5] modes = {1: 'pcolor', 2: 'imshow', 3: 'pcolorimage'} mode = 3 use_alpha = 0 saturation = 0.8 lightness = 0.45 # cmap_name = 'gist_rainbow' # cmap_name = 'viridis_r' # cmap_name = 'magma_r' # cmap_name = 'cet_isolum_r' cmap_name = 'cet_bgy_r'