Go to the list of seismic processes.
Go to SIOSEIS introduction.
This is the story of how I processed some data from
Antarctica aboard the R/V Palmer, cruise NBP9702, courtesy
of Prof. Steve Cande (SIO). There data are 48 channels,
recorded on an OYO DAS-1 recorder in SEG-D, but converted
to SEG-Y aboard the Palmer using SIOSEIS.
Step 1: The data were saved as tar files on Exabyte tapes.
Each file is 1.5GB, so there must be that much disk available
to look at any part of the data. SEG-Y tape file can be read
directly are are much preferred in my book.
I'm using an SGI computer without an Exabyte drive, so I
must read the tape across the network (which I couldn't do if it
was a SEG-Y tape). e.g.
rsh -n arch dd if=/dev/mt/tps0d1nrnsv bs=20b | tar xvBfb - 20
which gave me stdout:
x nbp9702tape39.segy, 1595907600 bytes, 3117008 blocks
There were two of these 1.5GB files on each tar tape and both files
wouldn't fit on the disk at the same time, so I either had to specify
the filename on the tar command or just let the disk fill up and then
position the tape with the mt command to get the second file once
the first file was deleted from the disk.
I then inventoried the data by using (and keeping) a list
of shots within each file. e.g.
lsd nbp9702tape37.segy 48 10
SHOT TR RP TR ID RANGE DELAY NSAMPS SI YR DAY HR MIN SEC
1 1 0 0 1 0 0 4096 2000 1997 67 10 11 4
2 1 0 0 1 0 0 4096 2000 1997 67 10 11 14
3 1 0 0 1 0 0 4096 2000 1997 67 10 11 29
4 1 0 0 1 0 0 4096 2000 1997 67 10 11 44
5 1 0 0 1 0 0 4096 2000 1997 67 10 11 59
6 1 0 0 1 0 0 4096 2000 1997 67 10 12 14
7 1 0 0 1 0 0 4096 2000 1997 67 10 12 29
8 1 0 0 1 0 0 4096 2000 1997 67 10 12 44
9 1 0 0 1 0 0 4096 2000 1997 67 10 12 59
10 1 0 0 1 0 0 4096 2000 1997 67 10 13 14
Step 2: Look at the first shot:
1) Determine if the channel numbers are really backwards.
2) See what traces are bad.
The log said channels 1, 34, 42 and 47 were dead and that
channels 6, 9, 14, 17, 18, 23 were noisy and channels
31 and 48 were "wimpy".
SIOSEIS plot uses the first trace to compute a scaling factor
and the first trace was nonzero (live but noisy). I had to
kill trace 1 by weighting it to zero before sioseis would make
a decent plot.
This script is slightly different from the one used in the
other MCS example in that the plot parameters create a large
I was running sioseis on a machine across the net, so I had
to allow that machine to display plots on my machine. On my
machine, I typed xhost +
and on the other machine I had to tell it where to display the
results by using the command:
setenv DISPLAY sioseis.ucsd.edu:0.0
script #1 - Create a plot of the first shot
plot #1 - plot of shot 1.
Notice that channel 21 is funny. It looks like the polarity is reversed.
Step 3: Use process weight kill the "dead" traces. I used nmo so that
it's easier to track an "event". Polarity inversions are much easier
to see if the first break is lined up. I used the same scalar on each
plot so that any gross change in shot amplitudes would be obvious.
The trace 21 reverse polarity was not on any of the shots on tape 39.
script #2 - The script to weight, filter and plot the first shot.
plot #2 - The plot of the weighted, filtered shot.
Step 4: Look at a single channel plot of the first 2000
shots using channel 2. Note that the plot is annotated by GMT
and I used process GAINS rather than AGC.
Plot #3 - Plot of trace 2 of the first two files.
Step 5: Sort out the geometry/navigation. ASA provided a smoothed
navigation file. The onboard GPS was a Y-code (military) receiver, so
the navigation is probably pretty good. The SIOSEIS geometry option
type 6 uses a navigation file to locate each shot based on the GMT
time in the SEG-Y trace header and the GMT in the navigation file.
I have to assume that the GPS time was used by the OYO seismic recorder.
I wrote a PERL script to convert the Palmer navigation file to a SIOSEIS
UTIG plot of Y-code vs CA-code vs CA-code differential
Geometry check (printout) of three shots.
Step 6: Examine the frequency spectrum to see if the data can be
decimated. This required a rewrite of the Matlab progarm rdsegy.m
used in another example because the machine being used had Matlab5.1
and rdsegy.m didn't work.
SIOSEIS & Matlab scripts for fft plot.
rdsegy.m for Matlab5.1
frequency plot of raw, filtered and decimated shot 331 tr 25.
Step 7: Read all the data to disk, file at a time, decimate the date,
inventory each decimated file, plot the "short" trace in groups of
2000 shots, and finally store the decimated file on the IGPP mass store
(e.g. rcp tape40 arch:/archive/mcs/1997/nbp9702).
script to filter and decimate
Step 8: Determine what data should be stacked from the "short" trace
sections made in step 7. Gather the data into rps. Since I was on
disk space, I decided to throw out the "bad" traces. Process weight
sets the SEG-Y dead trace flag when a weight of zero is used and
process gather drops dead traces from the gather. I also decide to
flip the reverse polarity trace at the same time so I wouldn't have
to worry about it later.
script to weight and sort by rp.
******* CAUTION *********
SIOSEIS creates temporary files that can be destroyed by running
multiple SIOSEIS jobs in the same directory simultaneously.
Do not run multiple job simultaneously in the working directory.
Step 9: Velocity analysis. We need to determine which velocity
analysis method is best for this dataset. The first one is semblance
contoured by Matlab. After modifying the vpick script to work on
only three seconds of data and not to filter the data, I ran it with
just one rp just to make sure it was working correctly.
sioseis plot of rp 1000 produced during vpick
script to extract every 100th shot.
script to plot the shots one at a time.
This analysis showed that the bad traces I picked earlier from tape 37
are not applicable to tape 39. Trace 21 is not reversed either. Change
the weights and regather.
new script to weight and sort by rp.
Looking at stdout (standard output is the printed output), there's an
SEG-Y Shot time error on shot 2930 time 68 1 17 33 242.0000
The lsd done earlier show 4 minutes of data missing.
While picking the semblance contours, I could see hints of some high
velocities for basement. I may want to repick, or try a different
velocity analysis technique.
The vpick output filename was: gathers.day068-0000z.vpick
and was the cut and pasted into plot script.
Step 10: Check the nmo velocity picks by applying the velocity
functions to rps they were picked from. Note how the same script is
used to plot every 100th rp, except this has nmo agc added in. I added
agc so that I could see any events. The velocities had to be edited
because I hit the mouse twice in the same spot once, but the sioseis
edit caught the error.
Check nmo script
Step 11: Muting the NMO strect can be done by the amount of moveout
or by specifying the mute pattern. Specifying the mute pattern
becomes difficult when the water bottom is constantly changing, so I
decide to try the automatic water bottom picker (process wbt), however
this becomes hard in noisey data. I used the process prout to print
the amplitudes of rp 1000 tr 1 to see what the amplitudes were. The
water bottom is very strong in comparison to the data immediately
after it, thus the traditional long window approach doesn't work.
Dump the amplitude values
Short/long automatic water bottom picker
The variation of picks is troubling, so I need to try some other
method. The dump of the amplitudes shows that the water bottom
reflection has an amplitude consistently above .1 while the background
is less than .1.
Threshold automatic water bottom picker.
Several traces were picked early, including rp 1011 trace 1.
Dump rp 1011 trace 1 amplitude values
Despike then threshold automatic water bottom picker.
Step 12: Determine a good mute pattern by plotting some moved out
data with an agc, so we can see all events clearly on a single shot.
Annotate every trace by it's range.
Plot of a moved out shot
Plot of a muted shot
Script that generated the plot.
Step 13: Check all the prestack parameters on every 100th rp.
There are some minor things that could be done, but I'm anxious to see
the stack. One rp didn't have the water bottom picked correctly.
There was a trace with lots of low frequency (streamer strum?). A
couple seemed to be have basement undercorrected.
chkstk gathers.day068-0000z 1000 100 2900
SIOSEIS/CSH script to check prestack parameters.
Step 14: Stack the data and plot it so we can see if we're making
SIOSEIS script to stack the data.
SIOSEIS script to gain and plot the stack.
plot of stack.
Step 15: Looking good! The next thing to try is to get rid of the
noise; the 10Hz stream strum probably can be filtered out by using
a higher pass on the low end (we did a 10x80 filter during decimation).
We also need to get the plot of the stack data at the same horizontal
scale as the short trace plot (40 traces per inch) because the sort
by rp created 4 reflection points for each shot.
In order to change the horizontal scale of the plot, I had to
change the plotter specified by parameter nibs. The early plots
used nibs 75 or 75 dots per inch so that the plot file was small.
My favorite 300 dot plotter is the HP DesignJet, nibs 2848.
New plot scale and new filter.
Plot with new filter and plot scales.
Step 16: Try a "median stack", which uses the median value of all
traces at each time sample. I guess this data is too noisy, because
the regular stack with "despiking" is better. The problem with
noise is that migration will make "smiles" out of each spike in
the water column.
Script to do median "stack".
Plot with new filter and plot scales.
Step 17: Pick velocities every 100 rps for data from day 068 0000z
to 1500z. I made a separate disk file for groups of 50 rps
(e.g. rps 5000 to 10000 with an increment of 100) to keep the disk
access time down. Picking 50 velocities took me 30-45 minutes, so
I wanted a break about then anyway. Notice that I filtered the data
with a narrower bandpass filter during the extraction process.
Script to extract every 100th rp.
Step 18: Stack the data from 0000z to 1530z, but display it in 2 hour
chunks. The new horizontal scale is 300 dots per inch because the
plotter is 300 dots per inch. Anything higher than 300 dpi will cause
some data to be lost.
Script to plot 2 hours of data.
Step 19: There's a 7 minute data gap when the tape was changed.
SIOSEIS created dead traces for the gap. Also, the automatic water
bottom detection killed some data and often picks something before
the bottom and then mute doesn't remove small spikes in the water
column that will create "smiles" when migrated.
So, the automatic water bottom picker can not be used on this
dataset and the water bottom time will have to be picked by some
other method (I did it by hand from the 8.5x11 single channel plots
at home while watching the Padres win another game. Process wbt
accepts the water bottom time in pairs of GMT vs two-way times and
does a linear interpolation between specified points).
Step 20: Migrate the stacked data with FDMIGR using the velocities
from NMO. The normal version of SIOSEIS allows only 4096 traces
to be migrated in a job, whereas the BIG version allows 16384. The
large executable is called sioseis.BIG and requires more memory and/or
more swap space on the host computer. Overlap migration sections with
50 rps so that the seismic energy can be placed properly and "edge"
effects are minimized.
The FDMIGR will have to be run in two jobs and then concatenated
afterwards. Another bookkeeping consideration is that the NMO
velocities are associated with RP numbers and these must be the same
as the stacked data being migrated (so don't renumber the stacked
data). When processing several lines at the same time, make sure the
various file names are very clear to identify. I put the line number
in the name. For the multiple FDMIGR jobs, I appended a letter (a, b,
c, ...) to the line number. Script files had the word script appended.
e.g. stack.line6a.script reads part of the gather file
and writes data file stack.line6a. fdm.line6b.script reads data file
stack.line6b and writes fdm.line6b
Script to migrate line 5 in chunks.
Script to plot 1.5 hours of line 5.
Plot of some unusual geology! (~160KB)
Step 21: Assemble the multiple migrated files of the same line into
a single file so that they are continuous. Drop 25 traces from the end
and beginning of the migrated files so that the sections are continuous.
Renumber the file so that the rp numbers are montonically increasing by
1 so that PLOT can always plot the north or east on the right. (The
first trace plotted is always on the right unless plot parameter dir
is used, but then some of the annotation is lost and the the color
scheme is not identical).
Script to combine files and renumber.
Script to reverse the trace order.
Step 22: Plot the migrated data for the HP DesignJet. Use program
SIOPLT on a few small test plots to make sure the plot parameters are
correct. I created a file, siopltrc, in the work directory with some
When plotting the "final" version, I saved the SIO rasterfiles so
that they could be combined on a single sheet of paper (each line is
around 8 feet long).
Script to generate a SIO rasterfile.
Step 23: Convert three SIO rasterfiles to a single HP-RTL file and
send to the HP plotter.
Script to convert SIOSEIS rasterfiles to HP.
Step 24: Create a seismic plot with the magnetics above the seismics.
The plot must be black and white and should be small enough to publish.
The most compressed horizontal scale is to make each plotter line
contain a seismc trace. The HP DesignJet has 300 dots per inch, so
the most that can be done is 300 traces per inch (trpin 300). I
decimated the data by retaining every fourth trace.
The start time is set to zero (stime 0) so that the magnetics can
be centered around the 1 second time line. The three migrated lines
are files fdm.line5x4, fdm.line6.1x4, fdm.line6.2x4.
The three SIOSEIS rasterfiles are: siofil5x4, siofil6.1x4, siofil6.2x4
Script to decimate the seismic line.
Script to generate the black and white plot.
Two of the three lines are stored in reverse order so the east end
of the seismic line is the first trace to be plotted. This creates a
problem when associating the magnetics with the seismics since the
magnetics are ordered with time increasing. e.g. magnetics:
1997 47 0 1 0 -116.0
1997 47 0 2 0 -113.0
1997 47 0 3 0 -111.0
1997 47 0 4 0 -116.0
1997 47 0 5 0 -118.0
1997 47 0 6 0 -109.0
The magnetics are all in one large file, so I made a smaller file
corresponding to the times of each seismic file. The three maggie
files are: maggie.line5, maggie.line6.1, maggie.line6.2
I also made a listing file for each SEG-Y migrated file.
The three lsd file are: lsd.line5x4, lsd.line6.1x4, lsd.line6.2x4
Program overlay plots "picks" relative to the first trace. Each
successive "pick" is located by the number of traces away from the
first trace. Overlay uses trpin (traces per inch) and the plotter
resolution, dots per inch, to compute where the pick is by plotter
lines. I wrote two PERL scripts to merge the magnetics file and
the seismic listing file to create a file with the parameters for
Perl script to merge reverse ordered seismics with magnetics.
Perl script to merge seismics with magnetics.
e.g. merge.mag maggie.line5 lsd.line5 > mag.line5
created file mag.line5, which looks like:
fno 5018 picks 1.9970000000000001 end
fno 5036 picks 2.0009999999999999 end
fno 5054 picks 1.998 end
fno 5073 picks 1.9990000000000001 end
fno 5091 picks 2 end
fno 5108 picks 2.004 end
fno 5126 picks 2.008 end
fno 5144 picks 2.0059999999999998 end
fno 5162 picks 2.0110000000000001 end
Then I ran program overlay. e.g.
overlay -p siofil5 5001 black 8 < mag.line5
The three merged plot files are: siofil5, siofil6.1, siofil6.2
I then put the three SIOSEIS plot files into a single plotter file.
Note that I put a white space of 1.5 inches between plots. e.g.
ipath siofil5 siofil6.1 siofil6.2 margin 1.0 opath hpfil slpath phead end
Then off to the plotter: lpr -Pgoya hpfil
Go to the list of seismic processes.
Go to SIOSEIS introduction.