July 2, 2013 Seismic Data Preprocessing Workshop

In this session we loaded about 200 shot records from a noncommercial seismic survey offshore Washington State. These data were downloaded from the internet by following links on the Marine Geoscience Data System (MGDS) entry page For the workshop I chose the data for line 3 stored in the 4GB file MGL1212.003.MCS01.001.tar accessible from the MGDS Data Set page Uncompressing and unpacking that file produces a directory TAPE0008.REEL containing individual SEG-D formatted shot records with names matching the pattern R{ffid}_{timestamp}.RAW. That directory also contains an EOF.RAW file[1].

EOT.RAW R000069_1342242636.RAW R000138_1342244291.RAW

R000001_1342240888.RAW R000070_1342242661.RAW R000139_1342244313.RAW

R000002_1342240915.RAW R000071_1342242686.RAW R000140_1342244334.RAW

R000003_1342240941.RAW R000072_1342242711.RAW R000141_1342244356.RAW

R000004_1342240966.RAW R000073_1342242737.RAW R000142_1342244377.RAW

R000005_1342240993.RAW R000074_1342242763.RAW R000143_1342244398.RAW

R000006_1342241020.RAW R000075_1342242789.RAW R000144_1342244420.RAW

R000007_1342241047.RAW R000076_1342242815.RAW R000145_1342244441.RAW

R000008_1342241073.RAW R000077_1342242841.RAW R000146_1342244463.RAW

R000009_1342241100.RAW R000078_1342242868.RAW R000147_1342244485.RAW

R000010_1342241126.RAW R000079_1342242895.RAW R000148_1342244506.RAW

R000011_1342241152.RAW R000080_1342242922.RAW R000149_1342244528.RAW

R000012_1342241177.RAW R000081_1342242949.RAW R000150_1342244550.RAW

R000061_1342242435.RAW R000130_1342244116.RAW R000199_1342245619.RAW

R000062_1342242460.RAW R000131_1342244138.RAW R000200_1342245641.RAW

R000063_1342242485.RAW R000132_1342244160.RAW R000201_1342245663.RAW

R000064_1342242510.RAW R000133_1342244182.RAW R000202_1342245685.RAW

R000065_1342242535.RAW R000134_1342244204.RAW R000203_1342245710.RAW

R000066_1342242560.RAW R000135_1342244226.RAW R000204_1342245736.RAW

R000067_1342242585.RAW R000136_1342244248.RAW

R000068_1342242610.RAW R000137_1342244270.RAW

In order to read and display these data files, we used the freeware Seismic Unix (SU) software package maintained by the Colorado School of Mines (CSM) Center for Wave Phenomena (CWP). The full source tree for the current version (43 revision 3) was downloaded from the page. It may be built and run on Linux, Mac OS X, and other Unix-flavored operating systems, including the Cygwin 32 Windows environment. For the workshop we are using it with Mac OS X. To save participants the effort of wading through its installation instructions, I preconfigured the source tree for the Mac and provided two small scripts, one to build the executables and the other to set up the environment for running them. At the time, most, but not all, of the excutables built and I switched over to a Linux version running remotely from an SEP computer. (Subsequently, I tracked down and fixed the Mac OS X compilation problems and sent the changes I made back to the CWP folks for inclusion in their next patch release.)

To use the build script, listed below, one first changes directory to the location in which the software distribution was expanded. For the workshop, I have used the unimaginative name cwproot for that directory. Within that directory are the SU src subdirectory and the scripts buildit.sh and setup.sh. The buildit.sh script sets the environment variable CWPROOT and runs a handful of make commands to compile, link and install executables and scripts. One invokes the script by typing “./buildit.sh”on the command line.

#!/bin/bash

# buildit.sh to build the CWP SU software

export CWPROOT=`pwd`

export PATH=${CWPROOT}/bin:${PATH}

cd src

make install

make xtinstall

make finstall

make sfinstall

cd ..

The setup.sh file, listed below, is even shorter, but is invoked differently because it is “sourced” rather than executed so that it modifies the current user environment. It is invoked by typing “. ./setup.sh” on the command line.

# to use: . ./setup.sh

CWPROOT=`pwd`

export CWPROOT

PATH=${CWPROOT}/bin:${PATH}

export PATH

For csh/tcsh users, the script and its invocation are different:

# to use: source ./setup.sh

setenv CWPROOT `pwd`

set path=(${CWPROOT}/bin ${path})

The suhelp utility provides a catalogue of most available SU modules. In addition, each executable is self-documenting, that is, when its name is entered alone on the command line, it simply prints out details on

how to use it.

The format of an SU dataset is almost the same as that of a standard SEG-Y dataset. There are four differences. First, only the traces themselves are in SU, all 3200 byte textual headers and the 400 byte binary reel header are absent. This makes it easy to concatenate multiple SU files into a single dataset or, conversely, split an SU dataset into multiple pieces, each as an SU dataset itself. Second, the SU system overwrites bytes 181-212 in each trace header, bytes which are now assigned in the current SEG-Y standard. This may cause some information to be thrown away when importing SEG-Y into SU. Third, the SU trace data is always kept in IEEE floating point format. Last, the ordering of bytes within each field of the trace header and within the bytes of the trace data depends upon which machine the SU dataset was created on and which compiler options were used when building the SU software. For this workshop, the SU software is compiled with the –DSUXDR option to ensure consistent byte ordering on all machines.

One topic I briefly raised was that of coordinate systems and precision. The data we are using is available in SEG-Y format, complete with X-Y coordinates, as well as SEG-D, which doesn’t provide coordinates. When I examined the SEG-Y coordinates, they showed that in each shot record, the shot location was identical to each of its receiver locations. This was simply wrong. The minimum distance between a source and its receiver array was 264 meters. While this could be repaired, and we will, indeed, later import source and receiver coordinates into our SU datasets, it is important to have experience reading SEG-D field data into a seismic processing system.

Invoking segdread without arguments gives the self-doc printout

SEGDREAD - read an SEG-D tape

segdread > stdout tape=

Required parameters:

tape= input tape device

tape=- to read from stdin

Optional parameters:

use_stdio=0 for record devices (9-track reel tape drive)

=1 for pipe, disk and fixed-block 8mm drives

verbose=0 silent operation

= 1 ; echo every 'vblock' traces

= 2 ; echo information about blocks

vblock=50 echo every 'vblock' traces under verbose option

ptmin=1 first shot to read

ptmax=INT_MAX last shot to read

gain=0 no application of gain

aux=0 no recovery of auxiliary traces

errmax=0 allowable number of consecutive tape IO errors

ns=0 override of computed ns to work around SEG-D

flaws. Ignored when use_stdio=0.

pivot_year=30 Use current century for 2 digit yrs less than

pivot_year, previous century otherwise.

type: sudoc segdread for further information

Using this help, I invoked the command

segdread tape=R000001_1342240888.RAW use_stdio=1 gain=1 > test.su

which completed normally, albeit with excessive printout. (I’ve updated segdread to be less repetitive and forwarded the changes to the CWP folks.) To get an idea of what is in the output, we run the surange utility.

surange < test.su

636 traces:

fldr 1

tracf 1 636 (1 - 636)

ep 3226

trid 1

ns 8192

dt 2000

year 2012

day 196

hour 4

minute 41

sec 28

This printout tells us we have just converted field record 1 (matching the R000001 in the SEG-D filename) with 636 traces of 8192 samples at a 2 milliseconds interval. These data correspond to shotpoint 3226 and were acquired at 4:41:28 on the 196th day (July 14th) of 2012. Note that there are no entries for the coordinate fields sx, gx, sy, and gy.

Now that we have imported this SEG-D record into SU format, let’s take a look at it using one of the SU graphical tools. Here’s we’ll use the suximage utility. This, as its selfdoc explains, is a wrapper for the underlying graphical tool ximage. Running the default command

suximage < test.su

produces the X-Windows display

This is a grayscale display with the largest positive amplitudes appearing as white and the largest negative amplitudes as black. The vertical scale is the time in seconds (8192 samples at 2 msec. is 16.384 seconds) and the horizontal scale is tracf, the trace number in the field file, ranging from 1–636. Most of the plot is almost featureless gray, indicating that the default amplitude scaling was controlled by the large amplitudes in the small handful of vertical streaks. To override the default scaling, the ximage program provides several options:

perc=100.0 percentile used to determine clip

clip=(perc percentile) clip used to determine bclip and wclip

bperc=perc percentile for determining black clip value

wperc=100.0-perc percentile for determining white clip value

bclip=clip data values outside of [bclip,wclip] are clipped

wclip=-clip data values outside of [bclip,wclip] are clipped

balance=0 bclip & wclip individually

=1 set them to the same abs value

if specified via perc (avoids colorbar skew)

Redisplaying with the command

suximage < test.su perc=98

A much more feature full display, indeed. The very steep streaks are known as swell noise and result from small pressure changes as waves pass over and along the towed hydrophone sensor array. The linear event starting at the far right near the top is the direct wave traveling from the source to the hydrophones. The curved events are reflections off the subsurface, the topmost, arriving at about 3½ seconds traveltime on tracf 636, being from the water bottom. The arrival at about 7 seconds traveltime below it is what is known as a free surface multiple, that is, the water bottom reflection bouncing off the air-water sea surface interface (with a reflection coefficient of −1) and thence reflecting of the water bottom a second time.

Since the swell noise is not associated with the subsurface, let us suppress it and take a closer look at the reflections. One way to do this is to realized that the swell noise varies quite slowly along the vertical axis. This makes it amenable to low-cut filtering, that is, removing slowly varying temporal components of each trace. Using suhelp, we find that the program sufilter provides such an option. We invoke it with a highpass option

sufilter < test.su > testbandpass.su f=1,2,8,200 amps=0,0,1,1

and then display the output as before. One noteworthy feature of SU is your ability to “pipe” data through multiple SU modules without creating a separate output file for each module. Thus the above could also have been handled via the command line

sufilter < test.su f=1,2,8,200 amps=0,0,1,1 | suximage perc=98

where the two su commands are separated by the | pipe symbol.

The swell noise has definitely been suppressed and the free surface multiples are eminently clear. In view of the fact that there are 8192 samples vertically, while the computer screen has only a thousand or so pixels it can display vertically, there is a lot of detail that is missing in this screen capture. Fortunately, suximage allows selection and zooming, either by clicking and dragging a box around the portion you want to zoom or by pressing keys to zoom in and out and scroll. Focusing on the shallow right hand portion of the display, we see that there is still some faint swell noise above the seafloor reflection and that the number of noisy traces is more than we might have gleaned at first from the previous displays.

Finally, while we didn’t get to it during class, it will be more convenient to assemble all the shot records into a single SU file. Here’s a script that will do this:

!# /bin/sh –v

touch line3raw.su

for i in R*.RAW

do

segdread tape=$i use_stdio=1 gain=1 > line3raw.su

done

Running surange on line3raw.su:

129744 traces:

fldr 1 204 (1 - 204)

tracf 1 636 (1 - 636)

ep 3226 3429 (3226 - 3429)

trid 1

ns 8192

dt 2000

year 2012

day 196

hour 4 6 (4 - 6)

minute 0 59 (41 - 2)

sec 0 59 (28 - 16)

[1] This arrangement is created by an onboard realtime quality control (QC) package SeisNet™ that run on a Microsoft Windows platform. I once modified Landmark Graphic’s ProMAX® seismic data processing package to allow it to stream these records into its SEG-D Input module as soon as they were created on disk, allowing ProMAX to be used for more sophisticated realtime analysis and preprocessing.