Пример #1
0
def detrend_taper_rotate(eventdir, sacfiles):
    """preprocess performs the demean,detrend,taper and rotation into radial and
    transverse components. It saves these at STACK_R.sac and STACK_T.sac"""

    ev = []
    # READ 3 Component SAC files into object array.
    for i in range(3):
        ff = os.path.join(eventdir, sacfiles[i])
        st = read(ff)
        ev.append(st[0])

    # Calculate values to be used in transformations
    dt = ev[1].stats.delta
    pslow = ev[1].stats.sac['user0']
    baz = ev[1].stats.sac['baz']
    PP = ev[1].stats.sac['t7']
    N = ev[1].stats.npts
    # Begin seismogram 50 seconds before P arrival
    # Here we either a full size taper, or a short taper padded with zeros
    if PP and (PP < ev[1].stats.sac['e'] ):
        nend = (PP - ev[1].stats.sac['b'] - 0.5)/dt # Window out 1/2 second before PP
        ctap = np.append( cosTaper(nend), np.zeros(N-nend + 1) )
    else:
        ctap = cosTaper(N)

    # detrend, taper all three components

    for i in range(3):
        ####### DETREND & TAPER #################
        ev[i].data = detrend(ev[i].data) * ctap

    # R, T = rotate(N, E)
    ev[1].data, ev[0].data = rotate(ev[1].data, ev[0].data, baz)
    # Call freetran and rotate into P and S space
    ev[1].data, ev[2].data = freetran(
        ev[1].data, ev[2].data, pslow, 6.06, 3.5)
    # Save freetran transformed data objects
    ev[1].write(os.path.join(eventdir,'stack_P.sac'), format='SAC')
    ev[2].write(os.path.join(eventdir,'stack_S.sac'), format='SAC')
Пример #2
0
                    if m2:
                         comps.append((m2.group(1),fs)) # Save the component extension, see Regex above.

            if len(comps) != 2:
                print files
                print "Did not register 2 components in directory:", eventdir
                #renameEvent(eventdir,"MissingComponents")
                continue
                # Sort in decending alphabetical, so 'E' is [0] 'N' is [1] and 'Z' is [2]
                # Pull out sacfiles from zipped sorted list.
            comps.sort()
            _ , sacfiles = zip(*comps)
            #print sacfiles
            # Run Processing function
            try:

                rotate(eventdir, sacfiles)
            #     #sh("rm {}/*stack*".format(eventdir), shell=True, executable = "/bin/bash")
            except IOError:
                print "IOError in event:", eventdir
                renameEvent(eventdir,"IOError")
                continue
            except SeisDataError as e:
                print e.msg + " in event:", eventdir
                renameEvent(eventdir, e.msg)
                continue
            except ValueError:
                print "ValueError in event:", eventdir
                renameEvent(eventdir,"ValueError")
                continue