Esempio n. 1
0
    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])
Esempio n. 2
0
    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()
Esempio n. 4
0
    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
Esempio n. 6
0
# -*- 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')
Esempio n. 7
0
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
Esempio n. 9
0
    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,
)