예제 #1
0
    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()
예제 #2
0
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)
예제 #3
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_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)
예제 #4
0
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)
예제 #5
0
  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()
예제 #6
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_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)