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]:
['__add__',
 '__class__',
 '__delattr__',
 '__dict__',
 '__div__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__gt__',
 '__hash__',
 '__init__',
 '__le__',
 '__len__',
 '__lt__',
 '__mod__',
 '__module__',
 '__mul__',
 '__ne__',
 '__new__',
 '__original_str__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_addProcessingInfo',
 '_ltrim',
 '_rtrim',
 'attach_response',
 'copy',
 'count',
 'data',
 'decimate',
 'detrend',
 'differentiate',
 'filter',
 'getId',
 'id',
 'integrate',
 'max',
 'normalize',
 'plot',
 'remove_response',
 'resample',
 'simulate',
 'slice',
 'spectrogram',
 'split',
 'stats',
 'std',
 'taper',
 'times',
 'trigger',
 'trim',
 'verify',
 'write']

In [18]:
for t in s.traces[:10]:
    print t.stats.segy.trace_header.sample_interval_in_ms_for_this_trace


2000
2000
2000
2000
2000
2000
2000
2000
2000
2000

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 [ ]: