In [1]:
import obspy
In [2]:
s = obspy.read('/Users/matt/Dropbox/geotransect_test/data/seismic/data/CON02_Wind-04_PSTM.sgy')
In [9]:
dir(s.traces[1])
Out[9]:
In [18]:
for t in s.traces[:10]:
print t.stats.segy.trace_header.sample_interval_in_ms_for_this_trace
In [21]:
import numpy as np
%matplotlib inline
In [17]:
s.traces[100].plot()
In [22]:
r_elevs = []
s_elevs = []
esp = [] # energy source point number
ens = [] # ensemble number
for trace in s.traces:
nsamples = trace.stats.segy.trace_header.number_of_samples_in_this_trace
dt = trace.stats.segy.trace_header.sample_interval_in_ms_for_this_trace
if dt > 100:
dt /= 1000.
r_elevs.append(trace.stats.segy.trace_header.datum_elevation_at_receiver_group)
s_elevs.append(trace.stats.segy.trace_header.receiver_group_elevation)
esp.append(trace.stats.segy.trace_header.energy_source_point_number)
ens.append(trace.stats.segy.trace_header.ensemble_number)
ntraces = len(s.traces)
tbase = np.arange(0, nsamples * dt, dt)
tstart = 0
tend = tbase[-1]
aspect = float(ntraces) / float(nsamples)
nf = 1.0
In [24]:
data = np.zeros((nsamples, ntraces))
for i, trace in enumerate(s.traces):
data[:, i] = trace.data
line_extents = {'first_trace': 1,
'last_trace': ntraces,
'start_time': tstart,
'end_time': tend
}
clip_val = np.percentile(data, 99.0)
In [26]:
import matplotlib.pyplot as plt
In [30]:
largest = max(np.amax(data), abs(np.amin(data)))
# MAIN PLOT
h = (tend-tstart) / 250.0
w = ntraces / 250.0
fig = plt.figure(figsize=(4.0*w, h), facecolor='w')
ax = fig.add_axes([0.1, 0.1, 0.8, 0.85])
im = ax.imshow(data, cmap="Greys", origin='upper',
vmin=-clip_val,
vmax=clip_val,
extent=(line_extents['first_trace'],
line_extents['last_trace'],
line_extents['end_time'],
line_extents['start_time']),
aspect = aspect*0.5
)
ax.set_ylabel('Two-way time [ms]')
ax.set_xlabel('Trace no.')
ax.grid()
In [ ]: