def tearDown(self): plt_close('all')
def _main_func(self, edipath): """ test function should be successful with a edipath :return: """ # path to save to savepath = self._output_dir # list of stations slst = [ edi[0:-4] for edi in os.listdir(edipath) if edi.find('.edi') > 0 ] # create an occam data object ocd = occam2d.Data( edi_path=edipath, station_list=slst, # interpolate_freq=True, # freq=np.logspace(-3,1,30) ) ocd.save_path = savepath # choose frequency range to invert # ocd.freq_num = 50 ocd.freq_min = 1 ocd.freq_max = 10000 # ocd.freq_num = 50 # number of frequencies to invert for ###########make data file # error floors ocd.res_te_err = 10 ocd.res_tm_err = 10 ocd.phase_te_err = 5 ocd.phase_tm_err = 5 # ocd.model_mode= 4 ocd.write_data_file() # make model and mesh files ocr = occam2d.Regularization(ocd.station_locations) # number of layers ocr.n_layers = 60 # cell width to aim for, note this is the mesh size (2 mesh blocks per model block) ocr.cell_width = 200 # controls number and size of padding ocr.num_x_pad_cells = 9 ocr.x_pad_multiplier = 1.9 # controls aspect ratio of blocks ocr.trigger = 0.25 # z1 layer and target depth in metres ocr.z1_layer = 20 ocr.z_target_depth = 10000 ocr.num_z_pad_cells = 10 ocr.z_bottom = 100000 ocr.save_path = ocd.save_path ocr.build_mesh() ocr.build_regularization() ocr.write_mesh_file() ocr.write_regularization_file() ocr.plot_mesh() plt_wait(1) plt_close() # make startup file ocs = occam2d.Startup() ocs.iterations_to_run = 40 ocs.data_fn = os.path.join(ocd.save_path, 'OccamDataFile.dat') ocs.resistivity_start = 2.0 ocr.get_num_free_params() ocs.param_count = ocr.num_free_param ocs.save_path = ocd.save_path ocs.model_fn = ocr.reg_fn ocs.write_startup_file() return savepath
def tearDown(self): plt_wait(1) plt_close('all')
def test_plot_model_and_responses(self): """ test function :return: T/F """ # path to directory containing inversion files idir = os.path.join(SAMPLE_DIR, 'Occam2d') # save path, to save plots to savepath = self._temp_dir offset = 0 # go to model results directory and find the latest iteration file iterfile = 'ITER12.iter' respfile = 'RESP12.resp' datafn = 'OccamDataFile.dat' # get the iteration number iterno = iterfile[-7:-5] outfilename = iterfile[:-5] plotmodel = True # set to True to plot the resistivity model plotresponses = True # set to True to plot the responses save = True # horizontal padding on the edges for plotting, in km xpad = 1 # plot the model if plotmodel: plotm = occam2d.PlotModel( iter_fn=os.path.join(idir, iterfile), data_fn=os.path.join(idir, datafn), station_font_pad=0.5, station_font_size=6, station_font_rotation=75, climits=(0., 2.5), # colour scale limits xpad=xpad, dpi=300, # resolution of figure fig_aspect= 0.5, # aspect ratio between horizontal and vertical scale ylimits=(0, 10), # depth limits stationid=(-1, 3), # index of station name to plot plot_yn='n') plotm.plot() if save: plotm.save_figure( os.path.join(savepath, outfilename + '_resmodel.png'), close_fig='n') # this will produce 1 figure .png plt_wait(1) # plot the responses if plotresponses: plotresponse = occam2d.PlotResponse(os.path.join(idir, datafn), resp_fn=os.path.join( idir, respfile), plot_type=['pb35', 'pb40']) if save: plotresponse.save_figures( savepath, close_fig='n') # this will produce 2 .pdf file plt_wait(1) plt_close()