Files
2014-10-08 09:00:54 -07:00

56 lines
1.6 KiB
Python

import numpy as np
import matplotlib.pyplot as plt
def clipsign (value, clip):
clipthese = abs(value) > clip
return value * ~clipthese + np.sign(value)*clip*clipthese
def wiggle (traces, skipt=1,scale=1.,lwidth=.1,offsets=None,redvel=0., manthifts=None, tshift=0.,sampr=1.,clip=10., dx=1., color='black',fill=True,line=True, ax=None):
ns = traces.shape[1]
ntr = traces.shape[0]
t = np.arange(ns)*sampr
timereduce = lambda offsets, redvel, shift: [float(offset) / redvel + shift for offset in offsets]
if (offsets is not None):
shifts = timereduce(offsets, redvel, tshift)
elif (manthifts is not None):
shifts = manthifts
else:
shifts = np.zeros((ntr,))
for i in range(0, ntr, skipt):
trace = traces[i].copy()
trace[0] = 0
trace[-1] = 0
if ax == None:
if (line):
plt.plot(i*dx + clipsign(trace / scale, clip), t - shifts[i], color=color, linewidth=lwidth)
if (fill):
for j in range(ns):
if (trace[j] < 0):
trace[j] = 0
plt.fill(i*dx + clipsign(trace / scale, clip), t - shifts[i], color=color, linewidth=0)
else:
if (line):
ax.plot(i*dx + clipsign(trace / scale, clip), t - shifts[i], color=color, linewidth=lwidth)
if (fill):
for j in range(ns):
if (trace[j] < 0):
trace[j] = 0
ax.fill(i*dx + clipsign(trace / scale, clip), t - shifts[i], color=color, linewidth=0)
def PrimaryWave(x, velocity, tinterp):
return tinterp + 1./velocity*x
def ReflectedWave(x, velocity, tinterp):
time = np.sqrt(x**2/velocity**2+tinterp**2)
return time