def test_dirac_migration(self): from locations_trigger import trigger_locations_inner from filters import smooth wo = WavelocOptions() wo.set_test_options() wo.opdict['outdir'] = 'TEST_Dirac' wo.opdict['search_grid'] = 'grid.Taisne.search.hdr' wo.opdict['loclevel'] = 10 wo.opdict[ 'load_ttimes_buf'] = True # Optimized in time, but you must be usre you're reading the right grid for the test wo.opdict['syn_addnoise'] = False wo.opdict['syn_amplitude'] = 1.0 wo.opdict['syn_datalength'] = 20.0 wo.opdict['syn_samplefreq'] = 100.0 wo.opdict['syn_kwidth'] = 0.1 wo.opdict['syn_otime'] = 6.0 wo.opdict['syn_ix'] = 16 wo.opdict['syn_iy'] = 8 wo.opdict['syn_iz'] = 6 wo.opdict['syn_filename'] = 'test_grid4D_hires.hdf5' wo.verify_migration_options() wo.verify_location_options() wo.verify_synthetic_options() ########################## # generate the test case and retrieve necessary information ########################## logging.info('Running synthetic test case generation...') test_info = generateSyntheticDirac(wo.opdict) logging.debug(test_info) # retrieve info grid_filename = test_info['dat_file'] stack_filename = test_info['stack_file'] nx, ny, nz, nt = test_info['grid_shape'] dx, dy, dz, dt = test_info['grid_spacing'] x_orig, y_orig, z_orig = test_info['grid_orig'] ix_true, iy_true, iz_true, it_true = test_info['true_indexes'] stack_start_time = test_info['start_time'] # plot base filename base_path = wo.opdict['base_path'] outdir = wo.opdict['outdir'] # loclevel for triggers loclevel = wo.opdict['loclevel'] # set up x, y, z, t arrays x = np.arange(nx) * dx y = np.arange(ny) * dy z = np.arange(nz) * dz t = np.arange(nt) * dt + stack_start_time # extract the max stacks f_stack = h5py.File(stack_filename, 'r') max_val = f_stack['max_val'] max_x = f_stack['max_x'] max_y = f_stack['max_y'] max_z = f_stack['max_z'] locs = trigger_locations_inner(max_val, max_x, max_y, max_z, loclevel, loclevel, stack_start_time, dt) self.assertTrue(len(locs) > 0) #print locs # This is a dirac test, so only have one element in locs imax = np.argmax([loc['max_trig'] for loc in locs]) trig_loc = locs[imax] self.assertAlmostEqual(wo.opdict['syn_otime'], trig_loc['o_time'], 2) self.assertAlmostEqual(wo.opdict['syn_ix'] * dx + x_orig, trig_loc['x_mean']) self.assertAlmostEqual(wo.opdict['syn_iy'] * dy + y_orig, trig_loc['y_mean']) self.assertAlmostEqual(wo.opdict['syn_iz'] * dz + z_orig, trig_loc['z_mean']) f_stack.close()
events['ev5'] = event5ll base_path = os.getenv('WAVELOC_PATH') figdir = os.path.join(base_path, 'out', wo.opdict['outdir'], 'fig') griddir = os.path.join(base_path, 'out', wo.opdict['outdir'], 'grid') # compute all grids for evname, ev in events.iteritems(): for dep in depths: x, y = latlon2rect('TRANS_SIMPLE', ev[0], ev[1], proj_info) wo.opdict['syn_ix'] = int( round((x - dummy_grid.x_orig) / dummy_grid.dx)) wo.opdict['syn_iy'] = int( round((y - dummy_grid.y_orig) / dummy_grid.dy)) wo.opdict['syn_iz'] = int( round((dep - dummy_grid.z_orig) / dummy_grid.dz)) wo.opdict['syn_filename'] = 'test_emilia_%s_%.1f.dat' % (evname, dep) # No noise test wo.verify_synthetic_options() if recalc_grids: test_info = generateSyntheticDirac(wo.opdict, time_grid) # make all figures info_files = glob.glob(os.path.join(griddir, '*.info')) for info_file in info_files: f = open(info_file, 'r') test_info = eval(f.read()) logging.info(test_info) plotDiracTest(test_info, figdir)
wo.opdict['syn_kwidth'] = 0.1 wo.opdict['syn_otime'] = 6.0 wo.opdict['syn_ix'] = 16 wo.opdict['syn_iy'] = 8 wo.opdict['syn_iz'] = 6 wo.opdict['syn_addnoise'] = False wo.opdict['syn_filename'] = 'test_grid4D_hires.dat' figdir = os.path.join(base_path, 'out', wo.opdict['outdir'], 'fig') wo.verify_migration_options() wo.verify_location_options() wo.verify_synthetic_options() # No noise test test_info = generateSyntheticDirac(wo.opdict) test_info['grid_orig'] = (0, 0, -2.5) plotDiracTest(test_info, figdir) # Do noise tests wo.opdict['outdir'] = 'TEST_DiracNoisy' wo.opdict['syn_addnoise'] = True figdir = os.path.join(base_path, 'out', wo.opdict['outdir'], 'fig') wo.opdict['syn_snr'] = 3.0 wo.opdict['syn_filename'] = 'test_grid4D_hires_snr_3.0.dat' test_info = generateSyntheticDirac(wo.opdict) test_info['grid_orig'] = (0, 0, -2.5) plotDiracTest(test_info, figdir)
events['ev2']=event2ll events['ev3']=event3ll events['ev4']=event4ll events['ev5']=event5ll base_path=os.getenv('WAVELOC_PATH') figdir=os.path.join(base_path,'out',wo.opdict['outdir'],'fig') griddir=os.path.join(base_path,'out',wo.opdict['outdir'],'grid') # compute all grids for evname,ev in events.iteritems(): for dep in depths: x,y=latlon2rect('TRANS_SIMPLE',ev[0],ev[1],proj_info) wo.opdict['syn_ix']=int(round((x-dummy_grid.x_orig)/dummy_grid.dx)) wo.opdict['syn_iy']=int(round((y-dummy_grid.y_orig)/dummy_grid.dy)) wo.opdict['syn_iz']=int(round((dep-dummy_grid.z_orig)/dummy_grid.dz)) wo.opdict['syn_filename']='test_emilia_%s_%.1f.dat'%(evname,dep) # No noise test wo.verify_synthetic_options() if recalc_grids : test_info=generateSyntheticDirac(wo.opdict,time_grid) # make all figures info_files=glob.glob(os.path.join(griddir,'*.info')) for info_file in info_files: f=open(info_file,'r') test_info=eval(f.read()) logging.info(test_info) plotDiracTest(test_info,figdir)
def test_dirac_migration(self): from locations_trigger import trigger_locations_inner from filters import smooth wo=WavelocOptions() wo.set_test_options() wo.opdict['outdir'] = 'TEST_Dirac' wo.opdict['search_grid']='grid.Taisne.search.hdr' wo.opdict['loclevel'] = 10 wo.opdict['load_ttimes_buf'] = True # Optimized in time, but you must be usre you're reading the right grid for the test wo.opdict['syn_addnoise']=False wo.opdict['syn_amplitude']=1.0 wo.opdict['syn_datalength']=20.0 wo.opdict['syn_samplefreq']=100.0 wo.opdict['syn_kwidth']=0.1 wo.opdict['syn_otime']=6.0 wo.opdict['syn_ix']=16 wo.opdict['syn_iy']=8 wo.opdict['syn_iz']=6 wo.opdict['syn_filename']='test_grid4D_hires.hdf5' wo.verify_migration_options() wo.verify_location_options() wo.verify_synthetic_options() ########################## # generate the test case and retrieve necessary information ########################## logging.info('Running synthetic test case generation...') test_info=generateSyntheticDirac(wo.opdict) logging.debug(test_info) # retrieve info grid_filename=test_info['dat_file'] stack_filename=test_info['stack_file'] nx,ny,nz,nt=test_info['grid_shape'] dx,dy,dz,dt=test_info['grid_spacing'] x_orig,y_orig,z_orig=test_info['grid_orig'] ix_true,iy_true,iz_true,it_true=test_info['true_indexes'] stack_start_time=test_info['start_time'] # plot base filename base_path=wo.opdict['base_path'] outdir=wo.opdict['outdir'] # loclevel for triggers loclevel=wo.opdict['loclevel'] # set up x, y, z, t arrays x=np.arange(nx)*dx y=np.arange(ny)*dy z=np.arange(nz)*dz t=np.arange(nt)*dt+stack_start_time # extract the max stacks f_stack=h5py.File(stack_filename,'r') max_val=f_stack['max_val'] max_x=f_stack['max_x'] max_y=f_stack['max_y'] max_z=f_stack['max_z'] locs=trigger_locations_inner(max_val,max_x,max_y,max_z,loclevel,loclevel,stack_start_time,dt) self.assertTrue(len(locs)>0) #print locs # This is a dirac test, so only have one element in locs imax=np.argmax([loc['max_trig'] for loc in locs]) trig_loc=locs[imax] self.assertAlmostEqual(wo.opdict['syn_otime'],trig_loc['o_time'],2) self.assertAlmostEqual(wo.opdict['syn_ix']*dx+x_orig,trig_loc['x_mean']) self.assertAlmostEqual(wo.opdict['syn_iy']*dy+y_orig,trig_loc['y_mean']) self.assertAlmostEqual(wo.opdict['syn_iz']*dz+z_orig,trig_loc['z_mean']) f_stack.close()
wo.opdict["syn_kwidth"] = 0.1 wo.opdict["syn_otime"] = 6.0 wo.opdict["syn_ix"] = 16 wo.opdict["syn_iy"] = 8 wo.opdict["syn_iz"] = 6 wo.opdict["syn_addnoise"] = False wo.opdict["syn_filename"] = "test_grid4D_hires.dat" figdir = os.path.join(base_path, "out", wo.opdict["outdir"], "fig") wo.verify_migration_options() wo.verify_location_options() wo.verify_synthetic_options() # No noise test test_info = generateSyntheticDirac(wo.opdict) test_info["grid_orig"] = (0, 0, -2.5) plotDiracTest(test_info, figdir) # Do noise tests wo.opdict["outdir"] = "TEST_DiracNoisy" wo.opdict["syn_addnoise"] = True figdir = os.path.join(base_path, "out", wo.opdict["outdir"], "fig") wo.opdict["syn_snr"] = 3.0 wo.opdict["syn_filename"] = "test_grid4D_hires_snr_3.0.dat" test_info = generateSyntheticDirac(wo.opdict) test_info["grid_orig"] = (0, 0, -2.5) plotDiracTest(test_info, figdir)