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')
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