示例#1
0
 def _get_receivers(self):
     if not self._receivers:
         self._receivers = receiver.load_table(self._receivers_fn)
         
     return self._receivers
示例#2
0
def standard_setup( datadir,
                    gfdb_path,
                    components,
                    effective_dt=1,
                    spacial_undersampling = [ 1, 1 ],
                    hosts = ['localhost'],
                    balance_method = '123321',
                    crustal_thickness_limit = None,
                    constraining_planes = None,
                    shifts = None,
                    blacklist = None,
                    xblacklist = None,
                    verbose = False,
    
                    local_interpolation = 'bilinear',
                    source_origin_file = 'source-origin.table',
                    receivers_file = 'receivers.table',
                    ref_seismogram_stem = 'reference',
                    ref_seismogram_format = 'mseed', **kwargs):
                    
    '''Start seismosizers and setup source location, Greens functions, 
       receivers, and reference seismograms.'''

    source_origin_file      = pjoin(datadir, source_origin_file)
    ref_seismogram_stem     = pjoin(datadir, ref_seismogram_stem)
    receivers_file          = pjoin(datadir, receivers_file)

    # setup database
    database = gfdb.Gfdb(gfdb_path)
    seis = seismosizer.Seismosizer(hosts, balance_method)
    if verbose: seis.set_verbose('T')
    seis.set_database(database)
    seis.set_effective_dt(effective_dt)
    seis.set_local_interpolation(local_interpolation)
    seis.set_spacial_undersampling(*spacial_undersampling)
    
    # setup source origin
    f = open( source_origin_file, 'r' )
    (slat, slon, stime) = [ float(x) for x in f.read().split() ]
    f.close()
    seis.set_source_location(slat, slon, stime)
    if crustal_thickness_limit is not None:
        seis.set_source_crustal_thickness_limit( crustal_thickness_limit )
    
    if constraining_planes is not None:
        values = []
        for plane in constraining_planes:
            for vect in plane:
                values.extend(vect)
                
        seis.set_source_constraints( *values )
    
    # setup receivers
    receivers = receiver.load_table(receivers_file, set_components=components)
    
    if len(receivers) == 0: sys.exit('no receivers')
    
    seis.set_receivers(receivers)
    
    seis.set_ref_seismograms( ref_seismogram_stem, ref_seismogram_format )
    if blacklist:
        seis.blacklist_receivers( blacklist )
    if xblacklist:
        seis.xblacklist_receivers( xblacklist )
        
    # apply reference seismograms shifts
    if shifts is not None:
        seis.shift_ref_seismograms( shifts )
    
    return seis