Practical SeisX Segy - other Utilities


How to rename a group of segy files using a name in the segy header.

Sometimes you get a series of files named file1, file2, file3... from a tape. You need to look at the ebcdic header to figure out what the line is called. Here is how I first scan a series of segy files, examine the ebcdic header and build a series of unix move (mv) commands. If you examine the perl script you will see an example of the translate (tr) expression in order to convert ebcdic header to ascii. I use two perl scripts, the first to dump the header ~ekeyser/Perl/ebcdic_dump.pl and ~ekeyser/Perl/ebcdic2rename.pl to generate the move commands. Here's how it works:
bash-2.03$ ls *SGY > junk
bash-2.03$ head junk
Do1.SGY
Do15.SGY
Do2.SGY
Do3.SGY
Do4.SGY
Do5.SGY
Do6.SGY
Do8.SGY
Do9.SGY
All we have are a group of files with no idea what the names are. We will now dump the headers. Note that this script will automatically translate any ebcdic characters to ascii so we call all read them our our ascii computers.
bash-2.03$ ~ekeyser/Perl/ebcdic_dump.pl | more
#############################################################
File Name = Do1.SGY has been found 
#############################################################
C 1 EXPORTED FROM AVOA DATE: Tuesday  Oct. 09 14:42:25 2007                     
C 2 SP:       0.00        0.00  TRACES: 1 659                                   
C 3 RL:    7000.00 msec     SR:     2.00 msec/sample                            
C 5 BYTES  17-20 I*4    INTERPOLATED STATION NUMBER * 1000                      
C 6        71-72 I*2    COORDINATE SCALER                                       
C 7        73-76 I*4    X COORDINATE OF CDP                                     
C 8        77-80 I*4    Y COORDINATE OF CDP                                     
C 9        81-84 I*4    X COORDINATE OF CDP                                     
C10        85-88 I*4    Y COORDINATE OF CDP                                     
C11                                                                             
C12 CROSS PLOT FILES                                                            
C13 FILE 1 O: RpRs Esso84 84942-84 A3580.84942-84.RPm.STK                       
C14 FILE 2 O: RpRs Esso84 84942-84 A3580.84942-84.RSm.STK                       
C15                                                                             
C16 POLYGON INFORMATION                                                         
C17  BASE AMPLITUDE=0                                                           
C18  SEQ  AMPLITUDE NAME                                                        
C19  1       2000   CROSSPLOT#1                                                 
C20  2       4000   CROSSPLOT#2                                                 
C21  3       6000   CROSSPLOT#3                                              
Here is the first line. We note that the real (correct) line name is located on line C13. In order to extract this information we need to fix the if statement to 12 (remember Perl starts counting with zero) and to parse this line first with spaces and then with dots. We will use the first two dot separated fields from the last field. The variable $#internal_names contains the number of fields.

Be warned, you will need to edit these few lines of code. This is good perl stuff to learn all about!

Here are the lines that need to be edited.


 if ( $i == 12) {  #avo file name is on the 13th line in the ebcdic header
 @internal_names = split /\s+/,$ascii_string,0;  #split the string on multiple blanks (s+)
 @name_field = split /\./, $internal_names[$#internal_names], 0;   #name details are dot separated grabbing the last space separated field
  printf"mv %s %s.%s.RpRsRED.200711.cnc.sgy\n",  $name, $name_field[0], $name_field[1]; #use only the first two subfields

All that is left is to run the script
bash-2.03$ ~ekeyser/Perl/ebcdic2rename.pl > run
bash-2.03$ head run
mv Do1.SGY A3580.84942-84.RpRsRED.200711.cnc.sgy
mv Do15.SGY A5603.85984-85.RpRsRED.200711.cnc.sgy
mv Do2.SGY A3577.84931-84.RpRsRED.200711.cnc.sgy
mv Do3.SGY A3582.84932-84.RpRsRED.200711.cnc.sgy
mv Do4.SGY A3584.84935-84.RpRsRED.200711.cnc.sgy
mv Do5.SGY A41117.7209-G-38.RpRsRED.200711.cnc.sgy
mv Do6.SGY A41117.7209-G-38.RpRsRED.200711.cnc.sgy
mv Do8.SGY A5604.85985-85.RpRsRED.200711.cnc.sgy
mv Do9.SGY A46480.84826-84.RpRsRED.200711.cnc.sgy
mv Dq103.SGY A3577.84931-84.RpRsRED.200711.cnc.sgy

How to edit a range of SeisWare (SeisX) data samples.

The perl script sx2big.pl will read either a PC SeisWare file or Unix SeisX file and convert the data to a Big Endian SeisX format. Both SeisX and Seisware can read either formats. The -f parameter can be used to set to zero all amplitudes below a given number. Here's how to run the script to zero out a range of amplitudes below the number 6.33. First step is to create a file named junk that has the name of the SeisWare file:
ls F112659.81326-73.2D.f-fx-mig.200405.gox.MIG.1.sgy > junk
~ekeyser/Perl/sx2big.pl -f 6.33

-Input file  = F112659.81326-73.2D.f-fx-mig.200405.gox.MIG.1.sgy
-Output file = F112659.81326-73.2D.f-fx-mig.200405.gox.MIG.2.sgy
Data are: Big Endian (SUN)
SI=4000 NS=1750 FORMAT=3 START_X=0 START_Y=0 START_Z=0 END_X=1129 END_Y=0 END_Z=7000000 GEOMETRY=2 SXFLAG=91
START_WINDOW=     0.0 END_WINDOW=7000000.0 PEAK=24354.580 AVE=2183.593 RMS=3056.352
TRACE_SORT=0 DATUM=   200.0 VEL=3500.000 MAX_ENSEMBLE=   0.000
AXIS_TRACE=1 LINE=2 TIME=3
NAME=81326-73 PHASE=    0.00, GAIN=    0.00 GAIN_EXP=    1.00 
ROTATION=0 CT 1=0 CT 2=0, CT 3=0
     Line   Trace     SPID       CDP     UTMX     UTMY
You have elected to set all amplitudes less than     6.33 to the value 0
       1        1     93.00       25   547851  7725233
       2        1     92.92       26   547851  7725210
       3        1     92.83       27   547852  7725188
       4        1     92.75       28   547852  7725165
       5        1     92.67       29   547852  7725142
       6        1     92.58       30   547852  7725119
       7        1     92.50       31   547853  7725096
       8        1     92.42       32   547853  7725073
       9        1     92.33       33   547853  7725051
1000
-fini
Note that the output file has the version number incremented by one. Most of the SeisWare binary header fields are also listed out as well as the first few traces.

Pssst - leave out the -f parameter if you just want to create a big endian version of your SeisWare file.

How to convert SeisX segy data to CSEG segy data (trace headers integers)

I needed to convert some SeisX files to a more standard segy format. I have been told by Landmark that SeisVision cannot read segy files that have shot points, UTMX or UTMY as IEEE floating point. The simple script sx2cseg.pl will convert the above to Integers, the shot points will be multiplied by 1000. The SeisX flag is turned off (set to zero) ane the EnCana flag in binary header byte position 400 is set to the number 99. Here's how it works:
 ls *sgy > junk
~ekeyser/perl/sx2cseg.pl

FUG-1.STK.1.sgy **ERROR** Line not SeisX format
FUG-10.STK.1.sgy.....
FUG-11.STK.1.sgy.....
FUG-12.STK.1.sgy.....
FUG-13.STK.1.sgy.....
FUG-14.STK.1.sgy.....
FUG-15.STK.1.sgy.....
FUG-16.STK.1.sgy.....
FUG-17.STK.1.sgy.....
FUG-18.STK.1.sgy.....
FUG-19.STK.1.sgy.....
Note that the first line was flagged as not in SeisX format, the rest were converted properly. Use (General), (SEGY File viewer) to examine the files. The should be easy to read into any workstation loader program. fyi - the actual numbers are 32bit IEEE format, SeisX can convert them to 32bit IBM float if you like!

Eric's Tricks to correct Line ID's and Line Names so they will archive

Here is how I find data and move it to a single directory. Young has give us the bm script to enable the Unix user to do global rename commands.

### A few useful commands, this one does a word count
ls *sgy | wc -l
### make a file executable and run it
chmod +x run
./run

### Too many files in a directory, I use grep to help
ls > temp
grep .sgy temp > junk
wc -l junk
    2176 junk

### Young Sung (former Seismic Data Manager/Loader)  gives us an easy way to do some global edits with bm
bm .012003. .200301.
A3583.ESSO-CA-84933-84.stk.012003.lyx.STK.0.sgy ->> A3583.ESSO-CA-84933-84.stk.200301.lyx.STK.0.sgy
A36672.ESSO-CA-85734-86.stk.012003.lyx.STK.0.sgy ->> A36672.ESSO-CA-85734-86.stk.200301.lyx.STK.0.sgy
A36673.ESSO-CA-85735-86.stk.012003.lyx.STK.0.sgy ->> A36673.ESSO-CA-85735-86.stk.200301.lyx.STK.0.sgy
A36674.ESSO-CA-85736-86.stk.012003.lyx.STK.0.sgy ->> A36674.ESSO-CA-85736-86.stk.200301.lyx.STK.0.sgy
...

### here is how to find a group of files and move them into a single directory
cd /data/encanastack18/gek
find . -name "*.sgy" > junk
awk '{printf("mv %s /dataload/dump/seisx/Bad/.\n",substr($1,3))}' junk  > run
more run
Here is a little perl script called clean_edm_names.pl to fix dates that are in the fourth last field, four letter dates will have 01 added to them. Dates specified as month-year will be changed to year-month with script clean_edm_names.pl
ls *sgy > junk
~ekeyser/Perl/clean_edm_names.pl > run
more run
mv "F101475.3D-LANGLEY.mig.011999.lyx.MIG.0.sgy" F101475.3D-LANGLEY.mig.199901.lyx.MIG.0.sgy
mv "F101476.3D-NIGLINTGAK-kp.mig.031989.kp.MIG.0.sgy" F101476.3D-NIGLINTGAK-kp.mig.198903.kp.MIG.0.sgy
mv "F101476.3D-NIGLINTGAK.mig.031989.lyx.MIG.0.sgy" F101476.3D-NIGLINTGAK.mig.198903.lyx.MIG.0.sgy
mv "F101476.3D-NIGLINTGAKa.mig.031989.kp.MIG.0.sgy" F101476.3D-NIGLINTGAKa.mig.198903.kp.MIG.0.sgy
mv "F101730.3D-ATIGI.f-pr-mig.042003.gox.MIG.1.sgy" F101730.3D-ATIGI.f-pr-mig.200304.gox.MIG.1.sgy
mv "F101730.3D-ATIGI.f-pr-mig.042003.gox.MIG.2.sgy" F101730.3D-ATIGI.f-pr-mig.200304.gox.MIG.2.sgy
...
Look at this script, it's easy to add most anything you want to change

How to validate segy data (does EDM have a proper match)

Here is how I validate the data and then move it up a level to /dataload/dump/stacks before Arthur's EDM script does it's thing. We move all the data ending in sgy to a directory called Bad and we grab Arthur's EDM line name lists sort them and store them in the file called EDM.LST. I use the awk script pad_edm.ak to format and remove duplicates from the EDM master list

cd /dataload/dump/seisx
ls -alt > junk
vi junk
awk '{printf("mv %s Bad/.\n", $9)}' junk > run
chmod +x run
./run
cd Bad

### We need to build an accurate list of LineID and LineName, we do this once
cp /data/seismic_index/sync/EDM_LINENAMES.ORA* .
cat EDM_LINENAMES.ORA10  EDM_LINENAMES.ORA20 > junk
awk -f ~ekeyser/Ak/pad_edm.ak junk | sort -u > EDM.LST
more EDM.LST
A000P23 P23
A000P55 P55
A000P58 P58
A000P64 P64
A001001 65154
A001002 65155
A001003 65156
A001004 65157
...
Yes, we see lists of reference numbers padded out to seven places. The second field looks like a line name. Let us merge the files, sort them and validate the lineID, LineName. Use the command word cound (wc) to determine the number of files we have.

the firstlastmerge.ak takes the lineID, pads it out to 6 numbers so we can sort the data with the EDM master line list file. The Perl script good_names.pl passes the data and creates a series of move commands that can be use to move the data up a level.

ls > junk 
grep sgy junk > stackey.list

ls *.*  > stackey.list      #use for field, make a list of all files

###clean up the names check for good names, create a script called run

ls *sgy > stackey.list
awk -f ~ekeyser/Ak/firstlastmerge.ak < stackey.list | sort > junk
cat EDM.LST junk | sort -u  > data_ref.lst
~ekeyser/Perl/good_names.pl > run
more run

mv "A13272.82609-78.un.8-109.mig.1992.esso.MIG.0.sgy" ../.
mv "A13273.83655-81.un.1001-2435.stk.1992.esso.STK.0.sgy" ../.
mv "A13274.84842-83.un.995-1565.stk.1992.esso.STK.0.sgy" ../.
mv "A13275.84846-83.un.1002-1412.stk.1992.esso.STK.0.sgy" ../.
mv "A13276.82902-72.un.7-127.stk.1992.esso.STK.0.sgy" ../.
mv "A13277.83654-81.un.1004-1566.stk.1992.esso.STK.0.sgy" ../.
mv "A13278.83657-81.un.1001-1230.stk.1992.esso.STK.0.sgy" ../.
mv "A13279.83658-81.5746.971-1166.um.1992.esso.STK.0.sgy" ../.
mv "A13280.84448-82.un.1001-1556.stk.1992.esso.STK.0.sgy" ../.
mv "A13281.84851-83.un.1003-1385.stk.1992.esso.STK.0.sgy" ../.
mv "A13282.84852-83.un.994-1640.stk.1992.esso.STK.0.sgy" ../.
...
Run contains a list of files that pass the mustard and will update to the EnCana archive. Make run an executable and move the files up a level.
chmod +x run
./run

How to add (over write) a lineName from a unique LineID

Here's the problem, how do you correct (or add) a LineName to a segy file that contains a LineID. Most ID types will tell you to set up a data base and do a merge or table join. I'll show you how to do it with a sort operation and a ten line perl script. Go to the directory called Bad, move all the files ending in sgy to Bad, merge EnCana's two EDM databases together and clean up the names. Here is the script that will correct a LineName assuming of course that the LineID is correct. It is called merge_ids.pl
### use id to replace the name

ls *sgy > stackey.list
awk -f ~ekeyser/Ak/firstlastmerge.ak < stackey.list | sort > junk
cat EDM.LST junk | sort -u  > data_ref.lst
~ekeyser/Perl/merge_ids.pl > run

more data_ref.lst
/sgy
...skipping
A13270 91-84
A13272 82609-78
A13272:A13272.82609-78.un.8-109.mig.1992.esso.MIG.0.sgy
A13273 83655-81
A13273:A13273.83655-81.un.1001-2435.stk.1992.esso.STK.0.sgy
A13274 84842-83
A13274:A13274.84842-83.un.995-1565.stk.1992.esso.STK.0.sgy
A13275 84846-83
A13275:A13275.84846-83.un.1002-1412.stk.1992.esso.STK.0.sgy
A13276 82902-72
...
Last step is to generate the move commands that correct the line names!
### use id to replace the name

ls *sgy > stackey.list
awk -f ~ekeyser/Ak/firstlastmerge.ak < stackey.list | sort > junk
cat EDM.LST junk | sort -u  > data_ref.lst
more data_ref.lst

~ekeyser/Perl/merge_ids.pl > run
 more run
mv "A13272.82609.un.8-109.mig.1992.esso.MIG.0.sgy" "A13272.82609-78.un.8-109.mig.1992.esso.MIG.0.sgy"
mv "A13291.84466.un.971-1520.stk.1992.esso.STK.0.sgy" "A13291.84466-82.un.971-1520.stk.1992.esso.STK.0.sgy"
mv "A28966.84556.5316.963-1608.5316s.1982.esso.STK.0.sgy" "A28966.T38-4.5316.963-1608.5316s.1982.esso.STK.0.sgy"
mv "A71296.CAIS-00021.stk.062003.ukn.STK.0.sgy" "A71296.DKL-00008.stk.062003.ukn.STK.0.sgy"
mv "F100692.SA82-0014.f-pd-sw-ma-mig-temp.200602.gox.sgy" "F100692.SA82-14.f-pd-sw-ma-mig-temp.200602.gox.sgy"
mv "F100704.SA82-0075.f-pd-sw-ma-mig-temp.200602.gox.sgy" "F100704.SA82-75.f-pd-sw-ma-mig-temp.200602.gox.sgy"
mv "F100708.SA82-0142.f-pd-sw-ma-mig-temp.200602.gox.sgy" "F100708.SA82-142.f-pd-sw-ma-mig-temp.200602.gox.sgy"
mv "F101130.SA83-0302.mig.200403.sch.sgy" "F101130.SA83-302.mig.200403.sch.sgy"
mv "D177352.CHRISTINA-064D-048P.f-mig-fxy.200603.ver.sgy" "D177352.ECOG-CQSS-064D-005.f-mig-fxy.200603.ver.sgy"
mv "D177352.CHRISTINA-064D-048P.f-spbmig-fxy.200603.ver.sgy" "D177352.ECOG-CQSS-064D-005.f-spbmig-fxy.200603.ver.sgy"
...

How to add (over write) a unique LineID given a Line Name (non unique)

Let's do a LineName match. Since I know most of my lines have this problem, I will make a smaller EDM.LST that contains only the Mackenzie Delta Lines. Hopefully this will reduce the number of duplicate line names. I do this with a sqrt retrieval into a comma separated file. Note how we need the -7 option to properly take care of the excel character data:
dos2unix -7 sqrt.csv > junk
head -5 junk
LineId,SeisLineName,LineType,LineClass,LineLength,LineLengthUnit,SPRg,AreaName,EnrgySrce,Vintage,Fold,ShotFor,ShotBy,SRV?,FR?,FT?,STK?,SS?,Complete?,LastProc
A10122,87097-89,2DLINE,NON-OPERATINGPARTNER,18.01,KM, 1001-1602,MACKENZIEDELTA,VIBROSEIS,1989,120,ESSORESOURCES(CANADA)LTD.,GRANTGEOPHYSICALCORP.,Y,O,O,O,Y,Y,2003
A10543,87096-89,2DLINE,NON-OPERATINGPARTNER,17.62,, 1002-1586,MACKENZIEDELTA,,1989,120,ESSORESOURCES(CANADA)LTD.,GRANTGEOPHYSICALCORP.,D,O,O,O,Y,N,2003
A10541,87093-89,2DLINE,NON-OPERATINGPARTNER,16.62,, 1002-1693,MACKENZIEDELTA,,1989,60,ESSORESOURCES(CANADA)LTD.,SONICSGEOPHYSICALLTD.,D,O,O,O,Y,N,2003
A10120,87094-89,2DLINE,NON-OPERATINGPARTNER,18.61,, 1002-1768,MACKENZIEDELTA,,1989,60,ESSORESOURCES(CANADA)LTD.,SONICSGEOPHYSICALLTD.,D,O,O,O,Y,N,2003
We need a list that contains lineName, LineID, Line Class and Shot for. Read the sqrt into excel and remove all blanks in the file. (This makes it easier to parse the file). Here's another simple script to extract these data from the above file.
awk -f ~ekeyser/Ak/21412.ak < junk  | sort > linename_lineid.txt
head -5 linename_lineid.txt
01-MCK-101 A47069 DATATRADE CHEVRON 
01-MCK-112 A47070 DATATRADE CHEVRON 
01-MCK-124 A47071 DATATRADE CHEVRON 
01-MCK-125 A47072 DATATRADE CHEVRON 
01KUG02 A43557 OPERATINGPARTNER ALBERTAENERGYCO.LTD. 
The above looks like data from my area. Let's see how many lines I have and compare it to the total number on lines in the EDM data base.
wc -l linename_lineid.txt
wc -l EDM.LST
    3028 linename_lineid.txt
  300144 EDM.LST
Wow, we have over 300,000 different lines in EDM and only 3,027 in the Mac Delta. Let's see how many names we can match to generate a proper LineID.
ls *sgy > stackey.list
awk -f ~/Ak/firstlastmergename.ak < stackey.list | sort > junk
cat linename_lineid.txt junk | sort -u  > data_ref.lst
more data_ref.lst
/sgy
...skipping
261        P170660                  
262        P170661               PURCHASE   
262:A36246.262.scan.1999.kp-pul.STK.0.sgy
263        P170662                  
271        A36247                PURCHASE  GULFOIL 
274:A36250.274.scan.1999.kp-pul.STK.0.sgy
272        P170671               PURCHASE   
272:A36248.272.scan.1999.kp-pul.STK.0.sgy
273        P170672               PURCHASE   
273:A36249.273.scan.1999.kp-pul.STK.0.sgy
274        P170673               PURCHASE   
274:A36250.274.scan.1999.kp-pul.STK.0.sgy
2C-13_5    P171157               PURCHASE  SHELLCANADARESOURCESLTD. 
2C-13_5:A36282.2C-13_5.scan.1998.kp-ver.STK.0.sgy
...
This makes sense, the line names seem to be matching. Let's do the merge for line name.

~ekeyser/Perl/merge_names.pl > run
bash-2.03$ more run
mv "A36280.2C-12.scan.1998.kp-ver.STK.0.sgy" "P171155.2C-12.scan.1998.kp-ver.STK.0.sgy"
mv "A36284.2C-14.scan.1998.kp-ver.STK.0.sgy" "P171158.2C-14.scan.1998.kp-ver.STK.0.sgy"
mv "A36286.2C-15.scan.1998.kp-ver.STK.0.sgy" "P171160.2C-15.scan.1998.kp-ver.STK.0.sgy"
mv "A36288.2C-16.scan.1998.kp-ver.STK.0.sgy" "P171162.2C-16.scan.1998.kp-ver.STK.0.sgy"
...
We can see that the LineID's have been changed. Let's do our check so we can move the good lines up a level
ls *sgy > stackey.list
awk -f ~/Ak/firstlastmerge.ak < stackey.list | sort > junk
cat EDM.LST junk | sort -u  > data_ref.lst
~ekeyser/Perl/good_names.pl > run
bash-2.03$ more run
mv "A36684.85750-86.scan.2000.lyx.MIG.0.sgy" ../.
mv "A46273.82037.scan.1999.kp-pul.STK.0.sgy" ../.
mv "F115347.84933-84.f-pr-mig.012004.gox.MIG.0.sgy" ../.
mv "F123496.83092.scan.1999.kp-pul.STK.0.sgy" ../.
mv "F123497.83093.scan.1999.kp-pul.STK.0.sgy" ../.
mv "F123498.83094.scan.1999.kp-pul.STK.0.sgy" ../.
bash-2.03$ pwd
/dataload/dump/stacks/Bad
chmod +x run
./run

How to add (over write) a lineName from a unique LineID using all of EDM

Sort for Line_names. Here we use the full EDM data base to make our Line Name match First step is to append the two EDM data bases together and format the output to Line Name and then Line Id.
cat EDM_LINENAMES.ORA10  EDM_LINENAMES.ORA20 > junk
awk -f ~ekeyser/Ak/edm_name.ak junk | sort -u > EDM2.LST

ls *sgy > stackey.list
awk -f ~/Ak/firstlastmergename.ak < stackey.list | sort > junk

head EDM2.LST
- A23185
0 T2766
0-107 A31154
0-288EXT T8831
0-356 T10456
0-363 T10457
0-427 T8825
...

cat EDM2.LST junk | sort -u > data_ref.lst
more data_ref.lst
/sgy
...skipping
6A382 A34622
6A383 A36884
6A383:AA36884.6A383.CD-17859.fstr.199101.pul.sgy
6A383:AA36884.6A383.CD-17859.mig.199101.pul.sgy
6A383:AA36884.6A383.CD-17859.ustr.199101.pul.sgy
...
o
~ekeyser/Perl/merge_names.pl > run
more run
mv "AA36884.6A383.CD-17859.fstr.199101.pul.sgy" "A36884.6A383.CD-17859.fstr.199101.pul.sgy"
mv "AA36884.6A383.CD-17859.mig.199101.pul.sgy" "A36884.6A383.CD-17859.mig.199101.pul.sgy"
mv "AA36884.6A383.CD-17859.ustr.199101.pul.sgy" "A36884.6A383.CD-17859.ustr.199101.pul.sgy"
mv "A14756.PCP-GR-83023.CD-06849.fm.199610.dgi.sgy" "P15243.PCP-GR-83023.CD-06849.fm.199610.dgi.sgy"
mv "A14756.PCP-GR-83023.CD-06849.fm1.199610.dgi.sgy" "P15243.PCP-GR-83023.CD-06849.fm1.199610.dgi.sgy"
mv "A14756.PCP-GR-83023.CD-06849.fs.199610.dgi.sgy" "P15243.PCP-GR-83023.CD-06849.fs.199610.dgi.sgy"
...
Here we see wrong LineID's getting corrected and AEC's reference numbers being corrected to those of EnCana (These were PCP's)

How to move the CD- prefix to the third field

Rename so the CD- prefix is the third field
ls CD-* > junk
ls S-* > junk
head -5 junk
CD-18475.D177382.ALAMO_MERGE.gth-cdp13.200007.wg.sgy
CD-18476.D177382.ALAMO_MERGE.gth-cdp14.200007.wg.sgy
CD-18477.D177382.ALAMO_MERGE.gth-cdp15.200007.wg.sgy
CD-18478.D177382.ALAMO_MERGE.gth-cdp16.200007.wg.sgy
CD-18479.D177382.ALAMO_MERGE.gth-cdp17.200007.wg.sgy
~ekeyser/Perl/clean_cd_name.pl > run
more run
mv "CD-18475.D177382.ALAMO_MERGE.gth-cdp13.200007.wg.sgy" D177382.ALAMO_MERGE.CD-18475.gth-cdp13.200007.wg.sgy
mv "CD-18476.D177382.ALAMO_MERGE.gth-cdp14.200007.wg.sgy" D177382.ALAMO_MERGE.CD-18476.gth-cdp14.200007.wg.sgy
mv "CD-18477.D177382.ALAMO_MERGE.gth-cdp15.200007.wg.sgy" D177382.ALAMO_MERGE.CD-18477.gth-cdp15.200007.wg.sgy
mv "CD-18478.D177382.ALAMO_MERGE.gth-cdp16.200007.wg.sgy" D177382.ALAMO_MERGE.CD-18478.gth-cdp16.200007.wg.sgy
...
Looks good let's execute
chmod +x run
./run

How to quickly uppercase the LineID and LineName data fields

Here we have some lines that have lower case characters. I use a simple perl script clean_uppercase.pl to create a file containing a series of move commands to correct the data.
#### how to convert the LineID and LineName to uppercase
ls *sgy > junk
~ekeyser/Perl/clean_uppercase.pl  > run
more run
more run
mv "p172935.02KAM03.pre.052003.ver.MIG.0.sgy" P172935.02KAM03.pre.052003.ver.MIG.0.sgy
mv "p172939.02SBL2.f-prfk-prmig.022003.gox.MIG.0.sgy" P172939.02SBL2.f-prfk-prmig.022003.gox.MIG.0.sgy
mv "a41118.7106105.f-prfk-prmig.022003.gox.MIG.0.sgy" A41118.7106105.f-prfk-prmig.022003.gox.MIG.0.sgy
mv "a43558.01KUG03.f-pr-fk-pr-mig.042003.gox.MIG.0.sgy" A43558.01KUG03.f-pr-fk-pr-mig.042003.gox.MIG.0.sgy
...

How to retrieve all the online /stacks and /field data

Steps are to first to make a list of LineID's, second to grep out of the two master lists that are updated every night. The last step is to run the Perl scripts copystack_name.pl for the stacks and copyfield_name.pl for the field data. These scripts will automatically create folders for LineName_LineID, stack and shots directory. The SeisCap encapsulated files will be copied to the root directory.
##### How to copy the online data
### Copy data, build folders, place seiscap files at the root, field files under shots

dos2unix < 2d.lst > 2d.list
more 2d.list
P2926
P35090
P42804
...
awk '{printf("grep  \"/%s\.\" /data/seismic_index/stack.list >> new_stack.all \n", $1)}' 2d.list  > run
~ekeyser/Perl/copystack_name.pl

awk '{printf("grep  \"/%s\.\" /data/seismic_index/field.list >> new_field.all \n", $1)}' 2d.list  > run2
~ekeyser/Perl/copyfield_name.pl

more run
grep  "/P2926\." /data/seismic_index/stack.list >> new_stack.all 
grep  "/P35090\." /data/seismic_index/stack.list >> new_stack.all 
grep  "/P42804\." /data/seismic_index/stack.list >> new_stack.all 

more new_stack.all
/data/stacks14/1/2926/P2926.PCP-NOR-750.17020105.f06.sgy              /PCP-NOR-750
/data/stacks14/1/2926/P2926.PCP-NOR-750.17020105.f11.sgy              /PCP-NOR-750
/data/stacks07/30000/35090/P35090.PCP-NOR-890385.f-str.021990.ksp.sgy              /PCP-NOR-890385
/data/stacks07/30000/35090/P35090.PCP-NOR-890385.f-str.031990.ksp.sgy              /PCP-NOR-890385
...
You can now access the data from your windows view on the world. All the data are nicely organized in data folders.

How I grab and load EnCana workstation data from a ftp server

While I do not "load" my seismic data any more with the new EnCana workstation format I do go through a lot of steps to validate and check my data. I also batch process my data to 4ms. Here's what I currently do:
  1. Sign on to the ftp server, specify bin and grab the data with mget
  2. Place the extra copies in a folder called extra
  3. Run the EnCana check.pl program and the spids.pl program to check the data
  4. Extract all the EBCDIC headers into one file and make sure it is right
  5. Extract the navigation information out of the headers into a separate navigation file that can be loaded into landmark or a mapping package. Convert this file to SeisX lineaments for my map
  6. For our landmark parterns, I convert the ascii header to EBCDIC and the format code of 6 to a 1 with a2e.pl
  7. Convert the EnCana files to full SeisX files with encana2seisx.pl This program will automatically apend a MIG or a STK and set the version numbers. Psssst, this program will also show you how to write a SeisX formatted file.
  8. Correct the internal line names to what I like with fixname.pl . (Last two sub fields of the second field)
  9. Check the data format with the script phase.pl
  10. Run my favorite batch processing sequence batchit_mac.ak on my data
  11. Finally, I get to attach my new data!
First step is to use ftp to get the data. Here are the details:
ftp -i geox

Connected to geox.encana.com.
220 syclnt FTP server (Version 4.1 Fri Feb 12 13:15:17 CST 1999) ready.
Name (geox:ekeyser): pancan00
331 Password required for pancan00.
Password:
ftp> bin

200 Type set to I.
mget *CA-8*
We have the data, now let's check it with check.pl:
 ls *sgy > junk
~ekeyser/perl/check.pl
 **WARNING**  Line name A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy Month 4 or Year 320 Not valid
 1  0  1 A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy
 **WARNING**  Line name A5485.ESS0-CA-85989-85.u-fx-mig.032004.gox.sgy Month 4 or Year 320 Not valid
... 
We have warning messages, GeoX needs to change the date from month and year to year and month. Otherwise it looks good. Next we will do the spids.pl check:
~ekeyser/perl/spids.pl

  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy                   1    983      2   519582  7721770   869   1419    870   522859  7700416    869    436   1.99
b A5485.ESS0-CA-85989-85.u-fx-mig.032004.gox.sgy                   1    983      2   519582  7721770   869   1419    870   522859  7700416    869    436   1.99
b A5485.ESS0-CA-85989-85.u-fx-str.032004.gox.sgy                   1    983      2   519582  7721770   869   1419    870   522859  7700416    869    436   1.99
b A5485.ESS0-CA-85989-85.u-str.032004.gox.sgy                      1    983      2   519582  7721770   869   1419    870   522859  7700416    869    436   1.99
b A5485.ESSO-CA-85989-85.f-fx-mig.032004.gox.sgy                   1    983      2   519582  7721770   869   1419    870   522859  7700416    869    436   1.99
b A5486.ESSO-CA-85991A-85.f-fx-mig.032004.gox.sgy                  1   1521     51   531488  7718871  1023   1005   1073   521902  7742452   1023    515   1.98
b A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.sgy                  1   1521     51   531488  7718871  1023   1005   1073   521902  7742452   1023    515   1.98
b A5486.ESSO-CA-85991A-85.u-fx-mig.032004.gox.sgy                  1   1521     51   531488  7718871  1023   1005   1073   521902  7742452   1023    515   1.98
b A5486.ESSO-CA-85991A-85.u-fx-str.032004.gox.sgy                  1   1521     51   531488  7718871  1023   1005   1073   521902  7742452   1023    515   1.98
b A5486.ESSO-CA-85991A-85.u-str.032004.gox.sgy                     1   1521     51   531488  7718871  1023   1005   1073   521902  7742452   1023    515   1.98
fini -- Total Traces = 9460
These data look good. Next step is to dump the EBCDIC headers into a flat file with ebcdic_dump.pl
~ekeyser/perl/ebcdic_dump.pl > ebcdic_header.lst
more ebcdic_header.lst

#############################################################
File Name = A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy has been found 
#############################################################
C 1 CLIENT: ENCANA                    PROCESSED BY:GEO-X SYSTEMS LTD. 2004Mar01 
C 2 LINE: ESS0-CA-85989-85 REFERENCE ID: A5485    AREA: BEAUFORT      SEA       
C 3 STACK TYPE: FILTERED PRE-STACK MIGRATION                                    
C 4  SHOT FOR:                ESSO RESOURCES LTD.                               
C 5  SHOT BY:                 SONICS EXPLORATION    PTY: 822                    
C 6  DATE:                    APRIL 1985                                        
C 7  LOCATION:                BEAUFORT SEA        NTS: 104-E-10/107-E-8         
C 8  DIRECTION:               SP. 1409  ---> N      SP. 983                     
C 9  SPREAD:                  2500 - 50 * 50 - 3500 M                           
C10  SOURCE INTERVAL:         150 M            RECEIVER INTERVAL: 50 M          
C11  ACQUISITION FOLD:        2000 %                                            
C12  SOURCE: DYNAMITE         1 X 28 KG @ 36 M DEPTH,                           
C13  SOURCE: DYNAMITE         1 X 31 KG @ 36 M DEPTH,                           
C14  RECEIVERS:               L-28 14 HZ; 60% DAMPING; 9 OVER 50 M              
C15  INSTRUMENTS:             DFS V            120 TRACE                        
C16  GAIN MODE:               IFP              TAPE FORMAT: SEG-B               
C17  FIELD FILTERS:           8/18-128 HZ      NOTCH: OUT                       
C18  SAMPLE INTERVAL:         2 MS             RL: 7.0 S                        
C19 DATUM ELEV 200   M   REPL VEL 3500 M/SEC   TIME OF FIRST SAMPLE 0    MS     
C20 PROJECTION:  UTM ZONE 8      SURVEY DATUM: NAD 27_?                         
C21 PROCESSING: DEMULTIPLEX (OR REFORMAT) AND AMPLITUDE RECOVERY                
C22 PROCESSING: PHASE COMPENSATION...SYSTEM MINIMUM-PHASE CONVERSION            
C23 PROCESSING: FIVE-COMPONENT SURFACE CONSISTENT SIGNATURE DCON...             
C24 PROCESSING:  DESIGN WINDOW: AT 50 M, 200- 3000 MS; AT 3500 M, 700 - 3000 MS 
C25 PROCESSING: STATICS...ELEVATION/WEATHERING, REFRACTION ANALYSIS             
...
I have checked these headers and they look good. I now want a navigation file for my Landmark users and to convert to a culture layer on my map. Create a segp like file with sx2segp.pl:
ls *f-pr-mig*sgy > junk
~ekeyser/perl/sx2segp.pl
A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy A5485 ESS0-CA-85989-85
A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.sgy A5486 ESSO-CA-85991A-85
fini -- 
more navigation.segp
ESS0-CA-85989-85                     983.5     519582.0   7721770.0
ESS0-CA-85989-85                     990.0     519616.0   7721447.0
ESS0-CA-85989-85                    1000.0     519668.0   7720950.0
ESS0-CA-85989-85                    1010.0     519720.0   7720453.0
ESS0-CA-85989-85                    1020.0     519772.0   7719956.0
ESS0-CA-85989-85                    1030.0     519825.0   7719459.0
ESS0-CA-85989-85                    1040.0     519877.0   7718962.0
ESS0-CA-85989-85                    1050.0     519929.0   7718465.0
ESS0-CA-85989-85                    1060.0     519982.0   7717968.0
ESS0-CA-85989-85                    1070.0     520038.0   7717471.0
ESS0-CA-85989-85                    1080.0     520098.0   7716975.0
ESS0-CA-85989-85                    1090.0     520176.0   7716482.0
ESS0-CA-85989-85                    1100.0     520280.0   7715993.0
ESS0-CA-85989-85                    1110.0     520377.0   7715503.0
ESS0-CA-85989-85                    1120.0     520459.0   7715010.0
ESS0-CA-85989-85                    1130.0     520537.0   7714516.0
ESS0-CA-85989-85                    1140.0     520611.0   7714047.0
ESS0-CA-85989-85                    1150.0     520689.0   7713554.0
ESS0-CA-85989-85                    1160.0     520775.0   7713061.0
ESS0-CA-85989-85                    1170.0     520881.0   7712573.0
ESS0-CA-85989-85                    1180.0     521008.0   7712090.0
...
Here we have first, last and every tenth shot point. We will convert this segp like file to SeisX culture. Here's how with the awk nav2lin.ak:
awk -f ~ekeyser/Ak/nav2lin.ak < navigation.segp > lines.asc
more lines.asc

# Photon Systems ASCII Format v1.0

struct CultureLayer { Name Scale }

struct Text { ColorName X Y Height Justification Text }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}

CultureLayer  "2003encana" 200000
Polyline "Red" 2 None False False
44
   519582.00   7721770.00
   519616.00   7721447.00
   519668.00   7720950.00
   519720.00   7720453.00
   519772.00   7719956.00
   519825.00   7719459.00
   519877.00   7718962.00
   519929.00   7718465.00
   519982.00   7717968.00
   520038.00   7717471.00
   520098.00   7716975.00
   520176.00   7716482.00
   520280.00   7715993.00
...
I like to edit this file to change the name and colour of the culture layer.

Next step is to convert the EBCDIC header from ascii into ebcdic and the format code of 6 to a 1 with program a2e.pl. This enables the use of Panther's tool for loading into Landmark.

 ls *sgy > junk
 ~ekeyser/perl/a2e.pl

#############################################################
File Name = A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy has been found 
#############################################################
'C 1 CLIENT: ENCANA                    PROCESSED BY:GEO-X SYSTEMS LTD. 2004Mar01 '
'C 2 LINE: ESS0-CA-85989-85 REFERENCE ID: A5485    AREA: BEAUFORT      SEA       '
'C 3 STACK TYPE: FILTERED PRE-STACK MIGRATION                                    '
'C 4  SHOT FOR:                ESSO RESOURCES LTD.                               '
'C 5  SHOT BY:                 SONICS EXPLORATION    PTY: 822                    '
'C 6  DATE:                    APRIL 1985                                        '
'C 7  LOCATION:                BEAUFORT SEA        NTS: 104-E-10/107-E-8         '
'C 8  DIRECTION:               SP. 1409  ---> N      SP. 983                     '
'C 9  SPREAD:                  2500 - 50 * 50 - 3500 M                           '
'C10  SOURCE INTERVAL:         150 M            RECEIVER INTERVAL: 50 M          '
'C11  ACQUISITION FOLD:        2000 %                                            '
'C12  SOURCE: DYNAMITE         1 X 28 KG @ 36 M DEPTH,                           '
'C13  SOURCE: DYNAMITE         1 X 31 KG @ 36 M DEPTH,                           '
...
'C32 PROCESSING: __STACK__                                                       '
'C33                                                                             '
'C34                                                                             '
'C35                                                                             '
'C36                                                                             '
'C37                                                                             '
'C38 TRACE HDR: BYTES 17-20 SP, 21-24 CDP, 81-84 UTM EAST, 85-88 UTM NORTH.      '
'C39                                                                             '
'C40                                                                             '
Format 6 changed to format 1
fini -- 
Now we will convert only the pre stack time to SeisX format with encana2seisx.pl. We will put all the rest of the seismic lines in a directory called extra.
mkdir extra
mv *gox* extra/.
mv extra/*f-pr-mig*sgy .
ls *sgy > junk
/home/ekeyser/perl/encana2seisx.pl
Working on A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy is in EnCana format, I'll update to SeisX
2D data
Trace 500
mv  A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.sgy to A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy
Working on A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.sgy is in EnCana format, I'll update to SeisX
2D data
Trace 500
Trace 1000
mv  A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.sgy to A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.MIG.0.sgy
fini -- 
The above step will check for the SeisX flag (91 or 92) and if it is not set, will compute the trace amplitudes and the rest of the SeisX stuff for the binary and trace headers. Let's correct the internal line names with fixname.pl:
ls *sgy > junk
~ekeyser/perl/fixname.pl -f22

A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy ESS0-CA-85989-85 to 85989-85
A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.MIG.0.sgy ESSO-CA-85991A-85 to 85991A-85
fini
The internal line name has been changed to the last two sub fields of the second dot deliminated name. Run the phase.pl checker now:
~ekeyser/perl/phase.pl
External_File_Name                                        Internal               Format Samples SI   Max_amp   RMS_amp End_Y End_X Phase
A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy                  85989-85                  1    3500  2   16076.1    2426.3   869     0   0.0
A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.MIG.0.sgy                 85991A-85                 1    3500  2   16232.4    2445.1  1023     0   0.0
fini
We see that our format code is 1, we have 3500 2ms samples and some amplitudes on our data. Lets process our data with my batchit_mac.ak script.
mkdir Process
 ls *sgy > junk
awk -f ~ekeyser/Ak/batchit_mac.ak  batchit.job
 more batchit.job
# spt_process batchit.job 
$INPUT
SYSTEM_PATH /apps/paradigm/PG00/PG99/seisx_support
FILE A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy
FMT_FILE /apps/paradigm/PG00/PG99/seisx_support/segy_v3.fmt
#END_PARMS
$FILTER
8.000000e+00 1.200000e+01 4.000000e+01 7.000000e+01
#END_PARMS
$RESAMPLE
4.000000e+00
#END_PARMS
$AGC
1.000000e+03 2.500000e+03
#END_PARMS
$PAD
8.000000e+03
#END_PARMS
$OUTPUT
FILE Process/A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy
FMT_FILE
DESC A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy 8-12-40-70,1000agc,4ms,2500rms
FORMAT 16_BIT_INT
#END_PARMS
#PROCESS
$INPUT
SYSTEM_PATH /apps/paradigm/PG00/PG99/seisx_support
FILE A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.MIG.0.sgy
...
Now lets run the processing job. We will check the output with phase.pl
/apps/paradigm/seisx3.6.SunOS/bin/spt_process batchit.job

Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace 1 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     1 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     2 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     3 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     4 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     5 of   869
MESS: Processing File A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy Trace     6 of   869
...
cd Process
ls *sgy > junk
~ekeyser/perl/phase.pl
~ekeyser/perl/phase.pl
External_File_Name                                        Internal               Format Samples SI   Max_amp   RMS_amp End_Y End_X Phase
A5485.ESS0-CA-85989-85.f-pr-mig.032004.gox.MIG.0.sgy                  85989-85                  3    1750  4   22272.9    3110.9   869     0   0.0
A5486.ESSO-CA-85991A-85.f-pr-mig.032004.gox.MIG.0.sgy                 85991A-85                 3    1750  4   19463.3    3100.3  1023     0   0.0
fini
We see that we have half the number of samples at 4ms and our data are 16bit. We can finally now attach our seismic lines to our project and feel somewhat confident that our data are good. We are done!!!!!!!!!!!!!!

How to load IEEE data into SeisX 4.0

The only way I have found to load IEEE data into SeisX 4.0 is to make sure the format flag is set to the number 6. If you have the number 1, SeisX thinks the data are IBM and I can't figure out how to overide the data. Here is a simple perl script format26.pl to change the format flag to the number 6.
ls *sgy > junk
~ekeyser/perl/format26.pl

#############################################################
File Name = 34820.43518.2D.f-tpna-tx-mig.200402.es.sgy has been found 
#############################################################
'C01 Client: Encana Corp.                                                        '
'C02 Line: 43518     REFERENCE #: 34820       AREA: Groundbirch                  '
'C03 Location: B.C   Twp.79-81 Rge.21-22 W6M  N.T.S E,F,K,J 93-P-14              '
...
'C24 Trace gather: Max Fold = 65            Processing Datum:  Surface in Time   '
'C25 Velocities: Interactive semblance      Surface Consistent Statics           '
'C26 TP Shot noise reduction: 50     % Velocities:Interactive semblance/Trim stat'
'C27 Mute Pairs: (d t)  1    212 200  3013 2200                                  '
'C28 Stack: Fold = 65             Multichannel Trace Scaling Residual Amplitude  '
'C29 TX DCON NOISE REDUCTION 21     trace time variant  75     % N.R.            '
'C30 Anti-Alias Kirchhoff Migration  100    % velocity                           '
'C31 Filter:  8 / 12 - 70 / 80 Hz. Mean Scaling window: 500   2400 ms.           '
Format 1 changed to format 6
fini -- 
I dump the EBCDIC header for you and change the format. Now just go and load the data!

Psssst If you wnat to go the other way and force the format code to a 1 use the following:

ls *sgy > junk
~ekeyser/perl/format21.pl

How to load a honking big 3D segy into SeisX 4.0

So far I have loaded a 38gig 3D into SeisX 4.0 I am amazed at the performance, it takes no more than 30 seconds to display any arbitrary line from the volume. When I was told it was taking more than four days to load this size of data set into our "other" Interpretation system I wrote some scripts to identify problems and we can now load these data in less than eight hours as a batch operation. I'm afraid I don't have the time or patience to manually load each file of a large 3d. Now if we can get SeisX to allow us to load 3D's from multiple input files it should take only four hours to load. Here is how to do it: Here's how to combine your segy files together
ls *sgy > junk
head junk
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy
87187.VER-VER-003D-88.an2_1.mig.082000.ver.sgy
87187.VER-VER-003D-88.an2_2.mig.082000.ver.sgy
87187.VER-VER-003D-88.an2_3.mig.082000.ver.sgy
87187.VER-VER-003D-88.an2_4.mig.082000.ver.sgy
87187.VER-VER-003D-88.an2_5.mig.082000.ver.sgy
87187.VER-VER-003D-88.an3_1.mig.082000.ver.sgy
87187.VER-VER-003D-88.an3_2.mig.082000.ver.sgy
87187.VER-VER-003D-88.an3_3.mig.082000.ver.sgy
87187.VER-VER-003D-88.an3_4.mig.082000.ver.sgy
87187.VER-VER-003D-88.an3_5.mig.082000.ver.sgy
87187.VER-VER-003D-88.an4_1.mig.082000.ver.sgy
87187.VER-VER-003D-88.an4_2.mig.082000.ver.sgy
87187.VER-VER-003D-88.an4_3.mig.082000.ver.sgy
87187.VER-VER-003D-88.an4_4.mig.082000.ver.sgy
87187.VER-VER-003D-88.an4_5.mig.082000.ver.sgy
87187.VER-VER-003D-88.an5_1.mig.082000.ver.sgy
87187.VER-VER-003D-88.an5_2.mig.082000.ver.sgy
87187.VER-VER-003D-88.an5_3.mig.082000.ver.sgy
87187.VER-VER-003D-88.an5_4.mig.082000.ver.sgy
87187.VER-VER-003D-88.an5_5.mig.082000.ver.sgy
...

~ekeyser/perl/combine.pl
  External_File_Name                                             Line    Trace     Trace Num
Number sampless=2126 Data Format=1
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                  59465     1230            1
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                  59710     2694       226823
221 1024 Blocks of 8953856 bytes, 519 traces left over. Total traces= 226823
Elapsed time = 273.00
Number sampless=2126 Data Format=1
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                  59710     2695            1
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                  59955     4158       232744
227 1024 Blocks of 8953856 bytes, 296 traces left over. Total traces= 232744
Elapsed time = 290.00
fini -- 
Notice that it is take somewhat over four minutes to copy each 2gig chunk of data. Go have a coffee as you now get to wait while the computer does the work.

PS: you probably will have to go into the perl script and twiddle the unpack statement inside the subroutine at the end to match your data. This script needs to be able to read a trace counter, inline and xline positions. Here's what a couple of formats I have written look like:

######### SeisX format            ##################
#    ($trace,$LINE_SEQUENCE_NUMBER,$TRACE_SEQUENCE_NUMBER, $shot,$cdp, $X, $Y) = unpack('l x4 l2 f l x56 f2 ',$th);
######## Veritas format           ##################
     ($trace,$TRACE_SEQUENCE_NUMBER,$LINE_SEQUENCE_NUMBER) = unpack('x4 l3 ',$th);
######## Veritas format Reversed  ##################
#    ($trace,$LINE_SEQUENCE_NUMBER, $TRACE_SEQUENCE_NUMBER) = unpack('x4 l3 ',$th);
######## Pan Canadian Format               ##################
#    ($trace,$TRACE_SEQUENCE_NUMBER, $LINE_SEQUENCE_NUMBER) = unpack('l x12 l2',$th);

How to extract Line Trace XY out of very large (or small) 3D datasets

Are loading large 3D's a real pain. Here is a script that will pull off the following: This program is very fast, I can scan 60gig of files in less than 30 seconds! Here is how to run the program. First step is to make a list of files that you wish to extract the information and then run the begend.pl perl script:
find /data/stacks15/80000/87187 -name "*.sgy" > junk

head junk
141 sw1041p:/home/ekeyser/tmp % head junk
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an2_1.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an2_2.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an2_3.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an2_4.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an2_5.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an3_1.mig.082000.ver.sgy
/data/stacks15/80000/87187/87187.VER-VER-003D-88.an3_2.mig.082000.ver.sgy
...

~ekeyser/perl/begend.pl

 External_File_Name                                             Line    Trace   Xcoord   Ycoord    Trace Num
Number sampless=2126 Data Format=1
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                   1230    59465   751658  4838783            1
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                   5620    59465   767052  4786112         4391
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                   1230    59470   751670  4838787         4392
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                   2694    59710   757380  4821390       226823
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                   5620    59705   767628  4786280       225029
87187.VER-VER-003D-88.an1_1.mig.082000.ver.sgy                    901    59710   751092  4842902       225030
Number sampless=2126 Data Format=1
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                   2695    59710   757383  4821378            1
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                   5620    59710   767640  4786284         2926
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                    901    59715   751104  4842906         2927
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                   4158    59955   763101  4803997       232744
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                   5620    59950   768216  4786452       229486
87187.VER-VER-003D-88.an1_2.mig.082000.ver.sgy                    901    59955   751680  4843074       229487
Number sampless=2126 Data Format=1
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   4159    59955   763105  4803985            1
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   5620    59955   768228  4786455         1462
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   1230    59960   752846  4839130         1463
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   5620    60200   768816  4786627       216621
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   5620    60195   768804  4786624       212230
87187.VER-VER-003D-88.an1_3.mig.082000.ver.sgy                   1230    60200   753422  4839299       212231

...
Useful, eh? Note that the Lines increment by 5, you will have to use the /5 option to renumber the lines in SeisX. In order to verify that the program is working, you can cut and paste the Trace Number into the SeisX segy editor. If you see garbage you will have to edit one line of the perl script inside the subroutine at the end of the program. It's really quite simple. Here's what two different formats look like, the first for SeisX files and the second
######### SeisX format  ############################
#    ($trace,$LINE_SEQUENCE_NUMBER,$TRACE_SEQUENCE_NUMBER, $shot,$cdp, $X, $Y) = unpack('l x4 l2 f l x56 f2 ',$th);

######## Veritas format ############################
    ($trace,$TRACE_SEQUENCE_NUMBER,$LINE_SEQUENCE_NUMBER, $X, $Y) = unpack('x4 l3 x56 l2 ',$th);
All you need to do is edit the unpack statement, x4 means four spaces, l3 means three, 32 bit integers, f2 means two 32 bit IEEE reals. Send me a note if you are having problems with this.

Next step is to create a culture file to display a polygon around each 3D. Here's how:

~ekeyser/perl/begend.pl > report.txt
awk -f /home/ekeyser/Ak/3d2lin.ak < report.txt > report.pha
more report.pha

# Photon Systems ASCII Format v1.0

struct CultureLayer { Name Scale }

struct Text { ColorName X Y Height Justification Text }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}

CultureLayer  "3D_example" 200000
Polyline "Black" 2  CrossHatch False True
7
   751670.00   4838787.00
   751658.00   4838783.00
   767052.00   4786112.00
   767628.00   4786280.00
   757380.00   4821390.00
   751092.00   4842902.00
   751670.00   4838787.00
Polyline "Dark Green" 2  CrossHatch False True
--More--(5%)
What's on my 3D stack tape files
The map to the right shows the status of collecting up all of the 3D stack files that make up three 3D's on the east coast. Each separate box is really a polygon that surrounds the data on that file.

The larger cross hatch boxes contain around eight to ten gig of data. The skinny boxes contain less than two gig. Visually you can see the gaps in the data that need to be resolved.

The Green outline is the outline around one of the 3D's. It's important to check that the input data and the final workstation data set agree in location.

How to convert a Mapit file to SeisX lineaments

This problem has a multi stage solution. We start off with a file that doesn't contain shot points and the positional information is degrees, minutes and seconds. An example of the file looks like:
 m1                       68464640N133432566W 2
 m1                       68461768N133413112W 2
 m1                       68453786N133395064W 2
 m1                       68443648N133372758W 2
 m1                       68433074N133333758W 2
 m1                       68422346N133293980W 2
 m1                       68415012N133280000W 2
 m1                       68411499N133262122W 2
 m1                       68400392N133252412W 2
 m1                       68392922N133234084W 2
The first step is to convert this format into a segp like format using my awk called
mapit2segp.ak. Here's how to run this:
awk -f ~ekeyser/ak/mapit2segp.ak gulf.seg > gulf.segp

head gulf.segp
m1                      1    68.779556 -133.723794  
m1                      2    68.771578 -133.691978  
m1                      3    68.760517 -133.664067  
m1                      4    68.743467 -133.624328  
m1                      5    68.725206 -133.560439  
m1                      6    68.706517 -133.494389  
m1                      7    68.697256 -133.466667  
m1                      8    68.687497 -133.439228  
m1                      9    68.667756 -133.423367  
m1                     10    68.658117 -133.394678  
The script above converts to decimal degrees and assigns some dummy shot points. Input this file into a mapping package to project the data (I am now using Petrosys). The output of Petrosys looks like:
head gulf_xy.segp
m1                     1.0   68.779556 -133.723801           551548.           7630317.
m1                     2.0   68.771576 -133.691971           552853.           7629454.
m1                     3.0   68.760513 -133.664062           554007.           7628246.
m1                     4.0   68.743469 -133.624329           555656.           7626381.
m1                     5.0   68.725204 -133.560440           558288.           7624404.
m1                     6.0   68.706520 -133.494385           561013.           7622386.
m1                     7.0   68.697258 -133.466660           562162.           7621380.
m1                     8.0   68.687500 -133.439224           563302.           7620321.
Next step is to edit down the fields we need with another awk:
awk '{printf("%s %d %d %d\n",$1, $2, $5, $6)}'  gulf_xy.segp > gulf.xy
head gulf.xy
m1 1 551548 7630317
m1 2 552853 7629454
m1 3 554007 7628246
m1 4 555656 7626381
m1 5 558288 7624404
m1 6 561013 7622386
m1 7 562162 7621380
m1 8 563302 7620321
m1 9 564001 7618136
m1 10 565193 7617092
Here's the awk nav2lin.ak that I use to convert the above segp like file to SeisX lineaments:
awk -f ~ekeyser/ak/nav2lin.ak < gulf.xy > junk

more junk
# Photon Systems ASCII Format v1.0

struct CultureLayer { Name Scale }

struct Text { ColorName X Y Height Justification Text }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}

CultureLayer  "2003encana" 200000
Polyline "Red" 2 None False False
20
   551548.00   7630317.00
   552853.00   7629454.00
   554007.00   7628246.00
   555656.00   7626381.00
   558288.00   7624404.00
   561013.00   7622386.00
   562162.00   7621380.00
   563302.00   7620321.00
   564001.00   7618136.00
   565193.00   7617092.00
   566644.00   7616449.00
...
Here are the sed commands I use to correct this file, changing red to orange, the name 2003encana to Gulf and the line width of 2 to 1. Of course you could edit the awk script and not have to run sed:
sed -f ~ekeyser/ak/mapit.sed < junk > mapit-gulf.asc

more mapit-gulf.asc
# Photon Systems ASCII Format v1.0

struct CultureLayer { Name Scale }

struct Text { ColorName X Y Height Justification Text }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}

CultureLayer  "Gulf" 200000
Polyline "Orange" 1 None False False
20
   551548.00   7630317.00
   552853.00   7629454.00
   554007.00   7628246.00
   555656.00   7626381.00
   558288.00   7624404.00
   561013.00   7622386.00
   562162.00   7621380.00
   563302.00   7620321.00
   564001.00   7618136.00
   565193.00   7617092.00
...
This file can now be read into SeisX and our lines will appear as a culture layer!

How to load a Landmark 8bit segy file to SeisX 8bit

So have you tried to load Landmark 8bit data and all you get is garbage past the first trace? There is a simple trick to solve this problem. It's caused because SeisX declared the number 5 to be a 8bit integer. Landmark uses the number 6 for 8bit float. SeisX 4.0 uses the number 6 for 32 bit IEEE.

The solution is simple, change the number in byte 25 of the segy binary header from a six to a five. Hence the very simple perl script six2five.pl. Here's how you run it:


ls *sgy > junk
~ekeyser/perl/six2five.pl

#############################################################
File Name = Eric.sgy has been found 
#############################################################
Format has been changed from 6 to format 5
fini -- 
Now just load the data, keep the default output format (same as input). You have down loaded your 3D without having to convert back to 32 bit!

How to renumber my CDP's and Traces

You are trying to use SeisX version 4.0 and you can't attach your lines. It turns out that you have duplicate cdp numbers and you need to fix them. I wrote the following fixcdps.pl script to renumber your data. Here's how:
ls *sgy > junk
~ekeyser/perl/fixcdps.pl
Try running spids.pl to verify your shot trace relationship before and after fixcdps.pl.

How to add comments to the EBCDIC header

Here is my problem. I just exported a wack of seismic lines from a Landmark project. The only information contained in the EBCDIC header is the letter C in card column one, not very informative!

The perl program, up2header.pl has been written to append comments to the EBCDIC header. The program determines the first line that still has enough room at the end to accomodate the new information. You can control the starting position for the insertion.

I first check my EBCDIC header to see if there is room using the script ebcdic_dump.pl

ls *sgy > junk
~ekeyser/perl/ebcdic_dump.pl | more

#############################################################
File Name = F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy has been found 
#############################################################
fini -- 
Here we have a totally blank EBCDIC header. Let's add the external name to the EBCDIC header.
ls *sgy > junk2
awk '{printf("%s,Line=%s\n", $1, $1)}' junk2  > junk
more junk

F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy,Line=F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy

~ekeyser/perl/up2header.pl
#############################################################
File Name = F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy has been found 
#############################################################
'C Line=F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy                      '
fini -- 
We now need to add a bit more description. We will use awk to build the file junk containing the information we desire. In this example we are forcing the text onto the second line.
ls *sgy > junk2
awk '{printf("%s,From 8bit Landmark project,2\n", $1)}' junk2  > junk
more junk

F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy,From 8bit Landmark project,2

 ~ekeyser/perl/up2header.pl
#############################################################
File Name = F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy has been found 
#############################################################
'C Line=F104367.BP-US-GM-9S.BP-US-GM-9S.mig.un.bp.MIG.0.sgy                      '
'C From 8bit Landmark project                                                    '
fini -- 
Now we have information in the first and the second line of our header. Note that the user can control the first line to place the information by adding a comma and the start line column.

Colour code my 2D seismic lines

Colour coded seismic
Have you ever wanted to colour code your seismic lines? In this example I wanted to show GeoX processing in red, GSI in cyan and Esso in yellow. This took the following three steps:
  1. Separate the SeisX seismic lines into different directories by processor
  2. Extract a navigation.segp file for all SeisX lines in the directory using sx2segp.pl
  3. Convert the navigation file to Photon Ascii using program nav2lin.ak

Here's what my commands look like:
ls *sgy > junk
~ekeyser/perl/sx2segp.pl
awk -f ~ekeyser/Ak/nav2lin.ak < navigation.segp > lines.asc 
You have a choice, you can change line colour and width un the nav2lin.ak script or you can edit the file called lines.asc. Here's what the files lines.asc looks like:
head -20 lines.asc
# Photon Systems ASCII Format v1.0

struct CultureLayer { Name Scale }

struct Text { ColorName X Y Height Justification Text }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}

CultureLayer  "Lynx" 200000
Polyline "orange" 1 None False False
79
   558073.00   7698680.00
   558227.00   7698587.00
   558433.00   7698462.00
   558638.00   7698338.00
   558844.00   7698213.00
   559049.00   7698089.00
...
To make the map, I supressed the lines connecting the shot points but displayed the culture instead.

Howto create 3D segy data (with dummy data values)

This procedure was used in Alaska to create a 3D volume in which to load interpreted horizons. As a result of a farmin, we were provided interpretation files but not the segy data. The following steps were used to create a 3D and load the interpretations.

The first step was to determine the size to make the volume by scanning the data to determine the first and last line and trace. The minmax.ak script was written to extract the numbers we needed: Here is how it worked:

nawk -f ~ekeyser/ak/minmax.ak < armstrong_ak_patch_z4.asc
Min_line=2633 Max_line=3210 Min_trace=17553 Max_trace=17913
The horizon file was then edited with the following commands to reformat the data so we have line, trace, X, Y, time in milli seconds.
awk '{printf("%d %d %d %d %d \n", $1, $2, $3, $4, $6*1000)}' LCU.dat > LCU.asc
awk '{printf("%d %d %d %d %d \n", $1, $2, $3, $4, $6*1000)}' PatchSagTimeData.xyz > Patch_sag.asc
In order to read these data into seisx we added the following header cards to the job deck.
1 -9999.99
SAG P Cyan
#3D_GRIDNAME Patch
We extracted a right angle triangle with the XY's
Patch
2633                              17560.00   478566.88758  6056621.33704
3210                              17560.00   500183.13909  6098733.01337
3210                              17910.00   525726.07186  6085621.65346

Simpson
1                                   160.00   512294.51195  6055583.74717
580                                 160.00   559473.95387  6048107.92389
580                                 322.00   561568.61097  6061308.05757
The final step is to edit the perl script to specify the line trace relationships and the data format and the number of samples. Here is my script dummy3d.pl. Here is how to run it:
~ekeyser/perl/dummy3d.pl
This script will generate a file called test.sgy. You need to load this file just like any other 3d. The last step is to read in the horizons generated above and we are done.

Howto automatically assign MIG or STK and Version numbers to SeisX files

Perl expressions do the trick here. Just look at version.pl. This program will rebuild the last three fields. If the letters mig appear in the file name, the file will be called a .MIG otherwise it will be called .STK. The version number will be automatically incremented so long as the first field (reference number) is the same. Here's how to run it:
ls *sgy > junk
~ekeyser/perl/version.pl
Perl renames the file directly, no need to create a script, chmod and execute it. Just run it. Here's what the output looks like:
mv: 9441.JBE-N-E9.fmig.092003.ssp.MIG.0.sgy and 9441.JBE-N-E9.fmig.092003.ssp.MIG.0.sgy are identical
mv  35899.PCP-EG-910011.fmig.092003.ssp.MIG.0.sgy to 35899.PCP-EG-910011.fmig.092003.ssp.MIG.0.sgy
mv  35899.PCP-EG-910011.fpzmig.092003.ssp.MIG.0.sgy to 35899.PCP-EG-910011.fpzmig.092003.ssp.MIG.1.sgy
mv  35899.PCP-EG-910011.fstr.092003.ssp.STR.0.sgy to 35899.PCP-EG-910011.fstr.092003.ssp.STK.2.sgy
mv  9033.PCP-GSI-80269.fmig.092003.ssp.MIG.0.sgy to 9033.PCP-GSI-80269.fmig.092003.ssp.MIG.0.sgy
mv  9033.PCP-GSI-80269.fpzmig.092003.ssp.MIG.0.sgy to 9033.PCP-GSI-80269.fpzmig.092003.ssp.MIG.1.sgy
mv  9033.PCP-GSI-80269.fstr.092003.ssp.STR.0.sgy to 9033.PCP-GSI-80269.fstr.092003.ssp.STK.2.sgy
mv  9038.PCP-GSI-80272.fmig.092003.ssp.MIG.0.sgy to 9038.PCP-GSI-80272.fmig.092003.ssp.MIG.0.sgy
mv  9038.PCP-GSI-80272.fpzmig.092003.ssp.MIG.0.sgy to 9038.PCP-GSI-80272.fpzmig.092003.ssp.MIG.1.sgy
...
Note how our .STR. files got changed to .STK.

Howto Convert EnCana Workstation SEGY files to SeisX (pssst howto eliminate data loading)

Here's how to convert your EnCana SEGY files to fully compatible SeisX/SeisWare files that only need to be attached to your project. (I'll even show you how to batch some post stack processing) Make sure the order of the seismic lines in the file junk is the order you want them numbered on output. Note that this program runs at about half speed but has the advantage that any number of versions can be converted. In SeisX, you have to load them one line at a time. The first step is to create an ordered list, this will control the version numbering sequence. Note that two lines of code will convert any number of files. It also works for both 2D and 3D (It should, let me know if it doesn't). Cut and paste the following two lines in the directory with your segy files:
ls *sgy | sort > junk
/home/ekeyser/perl/encana2seisx.pl
Here's what the output looks like
bash-2.03$ /home/ekeyser/perl/encana2seisx.pl
Working on f101685.ECC-NWT-2003-18.f-far-angle-fx-mig.082003.gox.sgy is in EnCana format, I'll update to SeisX
2D data
Trace 500
Trace 1000
Trace 1500
mv  f101685.ECC-NWT-2003-18.f-far-angle-fx-mig.082003.gox.sgy to f101685.ECC-NWT-2003-18.f-far-angle-fx-mig.082003.gox.MIG.0.sgy
Working on f101685.ECC-NWT-2003-18.f-far-offset-fx-mig.082003.gox.sgy is in EnCana format, I'll update to SeisX
2D data
Trace 500
Working on F101730.ECC-ATIGI-3D-03.f-nomegabin-fx-mig.082003.gox.sgy is in EnCana format, I'll update to SeisX
Trace 500
Trace 1000
Trace 1500
Trace 2000
...

Second Step - Howto Build a SeisX index file for 3D

Our data has now been converted to SeisX for both 2D and 3D files. We now need to build the index file for all our 3D's. (Note SeisX 4.0 does this automatically). Here is how I do this operation with SeisX 3.5:
ls *3D*sgy > junk
awk '{printf("/home/ekeyser/Sx/generate_indx -if /home/ekeyser/Sx/segy_v3.fmt %s\n",$1)}' junk   > run
chmod +x run
./run
Here is the output
Opening F101730.ECC-ATIGI-3D-03.f-pr-fx-fx-mig.042003.gox.MIG.0.sgy for scanning...
Scanning Line 1
Scanning Line 2
Scanning Line 3
Scanning Line 4
Scanning Line 5
Scanning Line 6
Scanning Line 7
...
Scanning Line 289
Scanning Line 290
Writing out index file...

Index file for F101730.ECC-ATIGI-3D-03.f-pr-fx-fx-mig.042003.gox.MIG.0.sgy successfully created!

Third step - Howto batch Post stack process our data

Second step is to process our data. Here is a slick way to take this awk script and create a job deck for all the seismic lines to be processed. This script is basically a set of print statements. Note that the new versions will be loaded under the directory call Process. This is my Mackenzie Delta flow, it's 8-12-40-70 filter, resample to 4ms, 1000 agc to an RMS of 2500 and data are paded to 8 seconds (I hate these short seismic lines). Data are output as 16bit, I like the precision and disk is cheap. I'm sure your flow will be different. Cut and paste the following four lines:
mkdir Process
ls *sgy > junk
awk -f /home/ekeyser/Ak/batchit_mac.ak < junk > run
/apps/paradigm/seisx3.6.SunOS/bin/spt_process run
Here's what the output looks like
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   580 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   580 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   590 of  1928
MESS: Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   600 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   600 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   610 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   620 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   630 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   640 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   650 of  1928
Processing File a43565.01KUG09.f-prfk-prmig-115.022003.gox.MIG.5.sgy Trace   660 of  1928
...
Be sure to run the latest version of spt_process, especially if you need the version that will pad your data out.

Howto extract Elevations, Fold and Total Statics from EnCana Workstation segy format files

Let's extract all that good stuff out of the trace headers and create some horizons for: We get to use yet another perl script header2hor.pl and here is how we do it. We will extract the data out of the first version of the line.
ls *.0.sgy > junk
/home/ekeyser/perl/header2hor.pl
This perl script creates a file called elevations.asc. Here is what this file looks like:
4 -9999.99
ELEV C Blue
STATIC C Gold
FOLD C Peru
SP_loc  C Salmon
01-KUG-09                          306.000     558395.0   7653503.0    84    48     0     0
01-KUG-09                          306.000     558386.0   7653515.0    84    48     0     0
01-KUG-09                          306.000     558377.0   7653527.0    84    48     0     0
01-KUG-09                          306.000     558369.0   7653539.0    84    48     0     0
01-KUG-09                          306.000     558360.0   7653552.0    84    48     0     0
...
Load it into SeisX by Horizon, import and you are done!

How do I convert a ASCII header to EBCDIC and format code of 6 to 1

It's perl again, make a list of your files and run this script. All the descriptive headers are dumped out to the screen so you can read them. I wrote this utility so you can easily load your data. Most loading programs don't know what to do with the number 6!
ls *sgy > junk
 ~ekeyser/perl/a2e.pl

#############################################################
File Name = test.A43558.01KUG03.f-pr-fk-fx-mig.042003.gox.sgy has been found
#############################################################
C 1 CLIENT: ENCANA______..__          PROCESSED BY:GEO-X SYSTEMS LTD. 2003Apr04
C 2 LINE: 03KUG03          REFERENCE ID: 43558    AREA: KUGMALLIT
C 3 STACK TYPE: FILTERED PRE-STACK FK+POST STACK FX+MIGR
C 4  SHOT FOR:                AEC WEST
C 5  SHOT BY:                 WESTERN GECO.         PTY: 1261
C 6  DATE:                    MAY 2001
C 7  LOCATION:                KUGMALLIT  107-E-8
C 8  DIRECTION:               SP. 709.5  ---> SE   SP. 181.5
C 9  SPREAD:                  4485 - 15 * 15 - 4485 M
C10  SOURCE INTERVAL:         120 M            RECEIVER INTERVAL: 30 M
C11  ACQUISITION FOLD:        3750 %
C12  SOURCE: DYNAMITE         1 X 20 KG @ 18 M DEPTH,
C13  RECEIVERS:               OYO 30CT 10 HZ; 70% DAMPING; 6 OVER 2 M
C14  INSTRUMENTS:             SERCEL 408       300 TRACE
C15  GAIN MODE:                                TAPE FORMAT: SEG-D
C16  FIELD FILTERS:           .8 NYQ MIN.      NOTCH: OUT
C17  SAMPLE INTERVAL:         2 MS             RL: 3.0 S
C18
C19 DATUM ELEV 200   M   REPL VEL 3500 M/SEC   TIME OF FIRST SAMPLE 0    MS
C20 PROJECTION:  UTM ZONE 8      SURVEY DATUM: NAD 27_?
C21 PROCESSING: DEMULTIPLEX (OR REFORMAT) AND AMPLITUDE RECOVERY
C22 PROCESSING: PHASE COMPENSATION...SYSTEM MINIMUM-PHASE CONVERSION
C23 PROCESSING: 5-COMP SUR CONSIST SIG DCON... Time-variant spectral whiten
C24 PROCESSING:  DESIGN WINDOW: AT 15 M, 300- 3000 MS; AT 4485 M, 1300- 3000 MS
C25 PROCESSING: FK on Shot Records +/- 7 ms/trace dip rejection
C26 PROCESSING: STATICS...ELEVATION/WEATHERING, REFRACTION ANALYSIS
C27 PROCESSING: TRACE EDITING, TIME-VARIANT MEAN SCALING
C28 PROCESSING: NMO CORRECTION (VEL. ANALYSIS: 10 CDPS EVERY 30   CDPS)
C29 PROCESSING: FIRST BR. MUTE (X/T) 400/700 ; 1990/1800-1810 ; 4420/2800 (M/MS
C30 PROCESSING: SURFACE CONS. RES. STATICS (WIND 500 -3000 MS, MAX +/-24 MS)
C31 PROCESSING: TRACE GATHER  (MAX FOLD 43 )
C32 PROCESSING: CROSS-CORRELATION STATICS (WIND 500 -3000 MS, STAT +/- 6  MS)
C33 PROCESSING: STACK
C34 FX NOISE REDUCTION
C35 FINITE DIFFERENCE  MIGRATION (100% STACKING VELOCITIES)
C36 FILTER:  ORMSBY FILTER    8 /12-70 /85  HZ
C37 SCALING: MEAN WINDOW 100 -3000 MS
C38 TRACE HDR: BYTES 17-20 SP, 21-24 CDP, 81-84 UTM EAST, 85-88 UTM NORTH.
C39
C40
Format 6 changed to format 1
fini --

How do collect shotpoint statistics from some unknown segy files?

Here is a perl script that will attempt to decode the shot point field. It will examine bytes 17 to 20 as integer, IBM or IEEE and plot out the results. I have updated this script to print out some stats re the actual numbers read from the tenth trace. You will see the average, RMS, absolute minimum absolute maximum. I added change to enable the user to deduce if these 32bit data are really 8bit data masquerading as a 32 bit number (usually files exported from Landmark). Here's how to run it!
ls *sgy > junk
~ekeyser/Perl/spdump.pl | more
External_File_Name                                               First_spid  Last_spid   Ratio
un.714.MIG.1.sgy IBM  ave rms min max =   16.955   37.204    0.031  152.000
un.714.MIG.1.sgy IEEE ave rms min max =   20.046   26.628    1.000   76.000
IEE un.714.MIG.1.sgy                                                 41.000   4812.000  1.000
un.716.MIG.1.sgy IBM  ave rms min max =   13.386   27.907    0.031  142.000
un.716.MIG.1.sgy IEEE ave rms min max =   19.024   24.039    0.750   71.000
IEE un.716.MIG.1.sgy                                                 41.000   4259.000  0.989
un.721.MIG.1.sgy IBM  ave rms min max =   15.728   31.656    0.031   96.000
un.721.MIG.1.sgy IEEE ave rms min max =   19.114   24.659   32.000   56.000
IEE un.721.MIG.1.sgy                                                 41.000    292.000  1.000
un.730.MIG.1.sgy IBM  ave rms min max =   24.803   47.266    0.031  204.000
un.730.MIG.1.sgy IEEE ave rms min max =   25.919   32.406   44.000  102.000
IEE un.730.MIG.1.sgy                                                 41.000   1582.000  1.000
un.738.MIG.1.sgy IBM  ave rms min max =   27.662   53.309    0.031  226.000
un.738.MIG.1.sgy IEEE ave rms min max =   26.972   34.538    8.000  113.000
IEE un.738.MIG.1.sgy                                                 62.000    688.000  1.000
un.739.MIG.1.sgy IBM  ave rms min max =   30.325   56.812    0.031  212.000
un.739.MIG.1.sgy IEEE ave rms min max =   28.268   36.039    2.000  106.000
IEE un.739.MIG.1.sgy                                                 44.000   1724.000  1.000
un.740.MIG.1.sgy IBM  ave rms min max =   39.255   65.641    0.031  212.000
un.740.MIG.1.sgy IEEE ave rms min max =   32.698   40.174    8.000  106.000
In the above example, I deduce that the data are IEEE, but the numbers are really 8bit.

How do I create a navigation file with the first and last spid and every 10?

Perl does the trick, first create a line list in the file called junk. Second step is to run the script sx2segp.pl

ls *sgy > junk
~ekeyser/perl/sx2segp.pl

un.1.un.1-270.pul99.MIG.0.sgy un 1
un.104X.un.141-200.pul99.MIG.0.sgy un 104X
un.106X.un.1040-1096.pul99.MIG.0.sgy un 106X
un.108.un.1-67.pul99.MIG.0.sgy un 108
un.112X.un.71-278.pul99.MIG.0.sgy un 112X
...
Here is what the output file called navigation.segp looks like.
head navigation.segp

U-380                                  1.0     515190.0   7733225.0
U-380                                 10.0     514048.0   7732926.0
U-380                                 20.0     512737.0   7732553.0
U-380                                 30.0     511449.0   7732204.0
U-380                                 40.0     510146.0   7731891.0
U-380                                 50.0     508859.0   7731514.0
U-380                                 60.0     507596.0   7731186.0
U-380                                 70.0     506277.0   7730814.0
U-380                                 80.0     504984.0   7730474.0
U-380                                 82.0     504714.0   7730405.0

How do I easily dump the contents of the EBCDIC header into a text file?

Here is yet another simple perl script. This one can handle EBCDIC, ASCII or a combination of both formats and correctly translate the data. Remember, SeisX writes ASCII to the last two lines of the description even if the rest of the header is in EBCDIC. Here's how to run the ebcdic_dump.pl utility:

ls *sgy > junk
~ekeyser/perl/ebcdic_dump.pl | more
#############################################################
File Name = 37411.87169c.28129.601-1740.verita00.fm.MIG.4.sgy has been found 
#############################################################
C 1 PROCESSOR: VERITAS GEOSERVICES LIMITED   DATE: NOVEMBER 2000                
C 2 LINE:      87169 (37411)                 STATIONS: 570 - 1741               
C 3 CLIENT:    AEC                           AREA: MACKENZIE DELTA              
C 4 DATA:      FILTERED MIGRATION - POST STACK FD                               
C 5 HEADER BYTE LOCATIONS   STATION NUMBER: 17-20  CDP NUMBER: 21-24            
C 6 COORDINATE (UTM) X: 73-76,81-84     COORDINATE (UTM) Y: 77-80, 85-88        
C 7 FORMAT: SEGY         DATA SAMPLE CODE: 1 = 32 BIT FLOATING POINT            
C 8                      FIELD PARAMETERS                                       
C 9 DATA ACQUISITION BY:   SONICS EXPLORATION       PARTY NUMBER: 1268          
C10 DATA ACQUISITION FOR:  ESSO                                                 
C11 ACQUISITION DATE:      FEBRUARY 1990                                        
C12 TRACES/SHOT: 120  RECORD LENGTH: 6.0 SEC  SAMPLE INTERVAL: 2 MS             
C13 PROCESSED RECORD LENGTH: 6000 MSEC  PROCESSED SAMPLE RATE: 2 MS             
C14 GROUP INTERVAL: 30 M         SHOT INTERVAL: 60 M                            
C15 RECORDING SYSTEM: I/O SYS II            FILTER: OUT - 128 HZ                
C16 SOURCE: DYNAMITE    1 HOLE AT 20 M                                          
C17 CHARGE: 18 KG                                                               
C18 SPREAD: TR NO:   1............60 SP 61............120                       
C19 OFFSET (M):      1830.........60    60...........1830 M                     
C20 GEOPHONE MAKE/MODEL: GEOSPACE 20D  GEOPHONE ARRAY: 9 OVER 30 M              
C21 GEOPHONE FREQUENCY: 14 HZ    GEOPHONE DAMPING: 60%                          
C22                      PROCESSING SEQUENCE                                    
C23 REFORMAT & GEOMETRY                                                         
C24 DATUM AND WEATHERING STATICS                                                
C25 DATUM: 200 M   VR: 3000 M/S                                                 
C26 GAIN RECOVERY - OFFSET DEPENDENT                                            
C27 DECONVOLUTION - SURFACE CONSISTENT ( 0.1% PW, 100 MS OPER.)                 
C28 DCON DESIGN WINDOWS: NEAR OFFSET: 300 - 3500 MS  FAR OFFSET: 1500 - 4000 MS 
C29 SPECTRAL BALANCING                                                          
C30 SURFACE CONSISTENT RESIDUAL STATICS - TWO ITERATIONS                        
C31 VELOCITY ANALYSIS  - CVS - INTERACTIVE INTERPRETATION (VIPIR)               
C32 MUTE                                                                        
C33 NOISE ATTENUATION - FX FILTER (SHOT DOMAIN)                                 
C34 CDP STACK                                                                   
C35 FINITE DIFFERENCE MIGRATION                                                 
C36 FILTER - 5,10,50,70 HZ                                                      
C37 SCALING - TYPE:  AGC (1000 MS WINDOW LENGTH)                                
C38                                                                             
C39                                                                            
7411.87169c.28129.601-1740.verita00.fm.MIG.4.sgy 8-12-40-70,1000agc,2500rms,@
#############################################################

How do I convert the XY's in SeisX files from one zone to another?

This answer is simple. Doug Bath has written a program for AEC that will convert the XY's in the header from one projection to another. This program can be run interactively but can be run in a command line mode. The program syntax is /home/aec/bin/segyutm infile outfile old_central_meridian new_central_meridian seisx_flag. The meridians should be positive and the SeisX flag is a y or n. Here is an efficient way to convert the data. Make a list of all your SeisX files to be converted in a directory. Create another directory to contain your output. Use awk to create your card deck and then run the program.
ls *sgy > junk
mkdir tmp
awk '{printf("/home/aec/bin/segyutm %s tmp/%s 123 117 y\n", $1,$1)}' junk  > run
chmod +x run
./run
Another way to do this same operation is to use SeisX 3.62, I have been told you can convert XY's without having to detach lines in your project. You might want to give this a try.

How do I run the EnCana segy check program?

Two steps here, first make a list of files in the file called junk then run the program check.pl The lines below show hot to collect all of the curently known segy files at EnCana
ls *sgy > junk
ls *seg_* >> junk
ls *segy >> junk
ls *stack >> junk
~ekeyser/perl/segy/check.pl | more
 1  0  0 173270.LTO-KX-99-2A.u-swfk-mig-utm11-utm11.032003.ver.sgy
 **WARNING**  Line name 173270.LTO-KX-99-2A.u-swfk-str-utm10.032003.ver.sgy Stack type  is Not valid
 1  0  0 173270.LTO-KX-99-2A.u-swfk-str-utm10.032003.ver.sgy
 **WARNING**  Line name 173270.LTO-KX-99-2A.u-swfk-str-utm11-utm11.032003.ver.sgy Stack type  is Not valid
 1  0  0 173270.LTO-KX-99-2A.u-swfk-str-utm11-utm11.032003.ver.sgy
 1  1  0 96244.CCS-Q-82-8.str.999999.ukn.sgy
The first three columns of the report contain three levels of checks. The first column checks that the first dot deliminated name field contains a number in the range of 1 to 200,000. The number one is a pass, two is a fail. The second column is the lite check. It verifies that the full line name follows the EnCana segy name standard and checks that the segy binary header format code is a number in the range of zero to six. The last check is the full heavy check, details are contained here. Checks exist for reference number, sample interval, samples per trace, format code , datum elevation, replacement velocity, Line name, 2D or 3D flag, Encana identification flag, Trace, shot point, surface elevation and total static applied. If you want anything else checked, please feel free to give me a call.

Here is how I normally create a file with the error messages.

~ekeyser/perl/segy/check.pl > report.lst
Note: Some of the seismic processors have been given the check program so they can catch errors before the data arrive!

How can I Create a segp file with elevations from the trace header? March 18, 2003

Assuming your elevation is stored in byte41 as IEEE floating point use the following perl sx2segp.pl script!
ls *sgy > junk
~ekeyser/perl/segy/sx2segp.pl
more elevations.asc
1 -9999.99
elevation C Blue
01-KUG-23                 101.0     546243.0   7626353.0  113.0
01-KUG-23                 110.0     546025.0   7626512.0  119.0
01-KUG-23                 120.0     545787.0   7626695.0   98.0
01-KUG-23                 130.0     545546.0   7626874.0   96.0
01-KUG-23                 140.0     545306.0   7627054.0   90.0
01-KUG-23                 150.0     545066.0   7627233.0   85.0
01-KUG-23                 160.0     544825.0   7627412.0   85.0
01-KUG-23                 170.0     544585.0   7627592.0   76.0
01-KUG-23                 180.0     544344.0   7627771.0   76.0
...

How can I rename my seismic lines so there are four fields separated by three dots - March 4, 2003

First run the find command to obtain a list of all files you want to change, run the script dots2_.ak that will create a file that can be executed as a series of move commands. Here is the flow:
find . -name "*.sgy" > junk
awk -f ~ekeyser/ak/dots2_.ak < junk > run
chmod +x run
./run
Here is what an example of run looks like:
mv ./2D/1281.CX-VX-330.str.stack.STR.0.sgy ./2D/1281_CX-VX-330_str_stack.STR.0.sgy
mv ./2D/70816.REQ-NOR-WW-44.fmig.0998.MIG.0.sgy ./2D/70816_REQ-NOR-WW-44_fmig_0998.MIG.0.sgy
mv ./2D/A31081.UM.SGY.UMG.0.sgy ./2D/A31081_UM_SGY.UMG.0.sgy
...
Second step is to fix the project.history file. copy this file out of the way and run the dots2_history.ak :
cp project.history project.history.old
awk '{printf("%s\n", $1)}' project.history > junk
awk -f ~ekeyser/ak/dots2_history.ak < junk > project.history
Here is what the project.history now looks like:
head project.history
/dat/photon4/p007145/Elm_PhaseIII/2D/P37670_PCP-CJ-930025_i-str_011994_ver.IMIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101343_CH-T-38_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101344_CH-T-42A_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101345_CH-T-61A_f-fx-mig01_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101346_CH-T-63A_f-fx-mig01_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101347_CH-T-63C_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101348_CH-T-65C_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101349_CH-T-61AB_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101642_D-CDX-DARJ-008_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt
/dat/photon4/p007145/Elm_PhaseIII/2D/P101643_D-DS-EMS-001_f-fx-mig_122001_ksp.MIG /apps/paradigm/PG99/seisx_support/segy_v3.fmt

How can I place the Letter "P" in front of my EDM number and update the internal Dec 4, 2002

First make a list of the files you want to operate on, run the one line awk script that will place the letter "P" as a prefix, make it an executable and run it.
ls *sgy
97107.QRC-TER-94SN-001.u-str.031997.gox.USTR.0.sgy  9715.PCP-K-80034.f-str-mch.011994.ver.FSTRM.0.sgy
97114.QRC-TER-94ST-010.u-str.031997.gox.USTR.0.sgy

ls *sgy > junk
awk '{printf("mv %s P%s\n",$1, $1 )}' junk  > run
chmod +x run
run
ls *sgy
P97107.QRC-TER-94SN-001.u-str.031997.gox.USTR.0.sgy  P9715.PCP-K-80034.f-str-mch.011994.ver.FSTRM.0.sgy
P97114.QRC-TER-94ST-010.u-str.031997.gox.USTR.0.sgy

Second step is to update the header with the first dot separated field as the internal line name
ls P*sgy > junk
/home/ekeyser/perl/rename.pl
 External Reference number P97107
 New Internal Reference name P97107
P97107.QRC-TER-94SN-001.u-str.031997.gox.USTR.0.sgy 97107 to P97107
 External Reference number P97114
 New Internal Reference name P97114
P97114.QRC-TER-94ST-010.u-str.031997.gox.USTR.0.sgy 97114 to P97114
 External Reference number P9715
 New Internal Reference name P9715

Let's verify that it worked with the script
phase.pl

/home/ekeyser/perl/phase.pl
External_File_Name                                        Internal               Format Samples SI   Max_amp   RMS_amp End_Y End_X Phase
P97107.QRC-TER-94SN-001.u-str.031997.gox.USTR.0.sgy         P97107                    1     850  2   14573.0    2866.9   247     0   0.0
P97114.QRC-TER-94ST-010.u-str.031997.gox.USTR.0.sgy         P97114                    1     850  2   17877.0    2833.2   359     0   0.0
P9715.PCP-K-80034.f-str-mch.011994.ver.FSTRM.0.sgy          P9715                     1    1500  2   10393.8    1806.6   478     0   0.0
fini
Look's good to me! Here is how to remove the first character.

awk '{printf("mv %s %s\n",$1, substr($1,2) )}' junk  > run
chmod +x run
run

How can I generate a listing of line lengths in my Seisx project? Nov 29, 2002

First make a report containing the XY's for the first and last shot point using perl script spids.pl.
ls *sgy > junk
~ekeyser/perl/spids.pl > spids.lst
head spids.lst
External_File_Name                                           Trace   Spid    Cdp   Xcoord   Ycoord Trace   Spid    Cdp   Xcoord   Ycoord  Cdp's Num_Spid Ratio
43565.01KUG09.un.312-1268.apo01.fmgz.MIG.0.sgy                   1    312    624   558314  7653613  1913   1268   2536   538201  7673145   1913    956   2.00
43570.01KUG12.un.115-1801.apo01.fmgz.MIG.0.sgy                   1    115    230   560119  7678869  3374   1801   3603   523425  7645497   3374   1686   2.00
43573.01KUG15.28127.101-953.wg02.fmd.MIG.0.sgy                   1    101      1   547895  7636064  1705    953   1705   529139  7653400   1705    852   2.00
...
Now run this awk line_len.ak to give you two columns with line length
nawk -f ~ekeyser/ak/line_len.ak < spids.lst | sort > line_len.lst
more line_len.lst
   16.66 73613.02-SBL-02.ver00.mig.MIG.0.sgy
   21.50 41118.7106-105.cd.35-115.apo00.fmk.MIG.0.sgy
   22.42 43576.01KUG17.un.111-861.apo01.fmgz.MIG.0.sgy
   25.09 43581.01KUG23.un.115-953.apo01.fmgz.MIG.0.sgy
...

Howto use perl to change the Internal SeisX Line name - Nov 26, 2002

This howto will demonstrate how to efficiently change the internal line of SeisX based on the external line name. I'll show the following three ways:
  1. Use the first dot separated field of the external line name
  2. Use the second dot separated field of the external line name
  3. The last two fields of the second dot separated external line name
These routines enable the user to load SeisX without having to manually type the internal line name. Just run the perl script and in seconds you have corrected the internal line name.

I also like these routines to be able to use more meaningfull lines names in my SeisX projects. Now when I talk with partners, we all refer to the same seismic line name! Here is how to do it:

First make a file called junk containing a list of the lines.

ls *sgy > junk
head junk
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy
102396.SH-B-185-56.f-mig.122001.sgl.MIG.0.sgy
Let's see what our Internal names are using perl script phase.pl.
/home/ekeyser/perl/phase.pl
External_File_Name                                        Internal               Format Samples SI   Max_amp   RMS_amp End_Y End_X Phase
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy            101756                    1    1000  2   18730.0    1575.4  2721     0   0.0
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy          102394                    1    1024  2  1.72e+05  1.42e+04  3903     0   0.0
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy            102395                    1    1251  2  1.65e+05  1.25e+04  1908     0   0.0
102396.SH-B-185-56.f-mig.122001.sgl.MIG.0.sgy               102396                    1    1301  2  1.71e+05  1.29e+04  1761     0   0.0
Here's how to change to the first field:
/home/ekeyser/perl/rename.pl
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy 101756 to 101756
101757.GSI-GSI-TH88-1.f-mig.150102.ver.MIG.0.sgy 101757 to 101757
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy 102394 to 102394
102394.CH-LE-50AQ-A8Z57.u-mig.122001.sgl.UMG.0.sgy 102394 to 102394
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy 102395 to 102395

Now change to the second field using perl scripts rename2.pl and rename22.pl:
/home/ekeyser/perl/rename2.pl
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy GSI-GSI-TH88-8 to GSI-GSI-TH88-8
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy CH-LE-50AQ-A8Z57 to CH-LE-50AQ-A8Z57
/home/ekeyser/perl/phase.pl
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy            GSI-GSI-TH88-8            1    1000  2   18730.0    1575.4  2721     0   0.0
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy          CH-LE-50AQ-A8Z57          1    1024  2  1.72e+05  1.42e+04  3903     0   0.0
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy            SH-UNK-162-688            1    1251  2  1.65e+05  1.25e+04  1908     0   0.0
102396.SH-B-185-56.f-mig.122001.sgl.MIG.0.sgy               SH-B-185-56               1    1301  2  1.71e+05  1.29e+04  1761     0   0.0
102396.SH-B-185-56.f-mig.122001.sgl.MIG.0.sgy SH-B-185-56 to SH-B-185-56
How about the last two sub fields of the second field:
/home/ekeyser/perl/rename22.pl
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy GSI-GSI-TH88-8 to TH88-8
10239e.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy CH-LE-50AQ-A8Z57 to 50AQ-A8Z57
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy SH-UNK-162-688 to 162-688
/home/ekeyser/perl/phase.pl
101756.GSI-GSI-TH88-8.f-mig.150102.ver.MIG.0.sgy            TH88-8                    1    1000  2   18730.0    1575.4  2721     0   0.0
102394.CH-LE-50AQ-A8Z57.f-mig.122001.sgl.MIG.0.sgy          50AQ-A8Z57                1    1024  2  1.72e+05  1.42e+04  3903     0   0.0
102395.SH-UNK-162-688.f-mig.122001.sgl.MIG.0.sgy            162-688                   1    1251  2  1.65e+05  1.25e+04  1908     0   0.0
102395.SH-UNK-162-688.u-mig.122001.sgl.UMG.0.sgy            162-688                   1    1251  2  1.77e+05  1.26e+04  1908     0   0.0

102396.SH-B-185-56.f-mig.122001.sgl.MIG.0.sgy SH-B-185-56 to 185-56

A slick way to data manage a large number of SeisX segy files

Managing more than a couple of hundred different seismic lines can be a tedious effort. I have found that the following procedure is quite scalable and can handle thousands of lines. Here is how it works. Create a data structure somewhere on the NFS file system.

We will work with two lists of our data, stacks.list contains the full path name to our file and spids.lst contains the first and last shotpoint XY values. Here's what they look like:

cd /auto/fs63/alaska8segy
head -10 *.l*
==> spids.lst <==
  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b A41755.AS-71-04.41755_AS-71-04.mig.011971.ana.MIG.0.sgy          0      4      1   329763  5513799     0    532   1057   293279  5344682   1057    528   2.00
b A41874.AS-82-04.41874_AS-82-04.mig.011982.ana.MIG.0.sgy          0     86      1   836754  5754829     0    433    694   839312  5678554    694    347   2.00
b A41892.AS-82-30.41892_AS-82-30.mig.041982.ana.MIG.0.sgy          0     99      1   738120  5603372     0    693   1189   857736  5655453   1189    594   2.00
b A43720.PRK-85-18.43720_PRK-85-18.mig.unknown.wus.MIG.0.sgy       0   1801      1   545412  5820994     0   3612   3623   357686  5887195   3623   1811   2.00
b A43811.PRK84-13.43811_PRK-13.mig.unknown.wus.MIG.0.sgy           0    105      1   669851  5637115     0   1142   2075   569789  5691561   2075   1037   2.00
b A43814.PRK-84-16.43814_PRK-84-16.mig.unknown.wus.MIG.0.sgy       0    105      1   695264  5859307     0   1996   3783   496156  5916179   3783   1891   2.00
b A43815.PRK-85-001.43815_PRK-1-85.mig.unknown.wus.MIG.0.sgy       0    101      1   440151  5916763     0   2098   3995   306634  5742411   3995   1997   2.00
b A43817.PRK-85-24.43817_PRK-85-24.mig.unknown.wus.MIG.0.sgy       0    102      1   286894  5810181     0   2035   3864   451612  5675752   3864   1933   2.00
b A42711.WG-89-21.42711_WG-89-21.mig.011989.wus.MIG.0.sgy          0    103      1   555253  5544211     0   1139   2072   571873  5374139   2072   1036   2.00

==> stacks.list <==
/auto/fs63/alaska8segy/good/ana/A41755.AS-71-04.41755_AS-71-04.mig.011971.ana.MIG.0.sgy
/auto/fs63/alaska8segy/good/ana/A41874.AS-82-04.41874_AS-82-04.mig.011982.ana.MIG.0.sgy
/auto/fs63/alaska8segy/good/ana/A41892.AS-82-30.41892_AS-82-30.mig.041982.ana.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43720.PRK-85-18.43720_PRK-85-18.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43811.PRK84-13.43811_PRK-13.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43814.PRK-84-16.43814_PRK-84-16.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43815.PRK-85-001.43815_PRK-1-85.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43817.PRK-85-24.43817_PRK-85-24.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A42711.WG-89-21.42711_WG-89-21.mig.011989.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A42718.WG-89-43.42718_WG-89-43.mig.011989.wus.MIG.0.sgy

bash-2.03$ pwd

/auto/fs63/alaska8segy

bash-2.03$ ls -al
total 792
drwxrwsr-x   4 ekeyser  expl        4096 Nov 14 09:44 .
drwxrwsr-x  31 ekeyser  expl        8192 Nov 13 16:53 ..
drwxrwsr-x   8 ekeyser  expl       94208 Nov 13 09:03 good
-rw-rw-r--   1 ekeyser  expl      169793 Nov 13 17:00 spids.lst
-rw-rw-r--   1 ekeyser  expl       91089 Nov 13 16:35 stacks.list
drwxrwsr-x   3 ekeyser  expl       20480 Nov 13 15:19 unknown
Notice that I have created two directories for my data, the directory good and the other unknown. The unknown directory contains data that has yet to receive the unique EnCana reference number. The good directory contains data that can be identified in our EDM inventory system. I have created a further series of directories under good for each company that I have data from. I found that data cleanup was easier to manage this way. It really does not matter how you want to organize yourself!
/auto/fs63/alaska8segy/good
bash-2.03$ ls -al
total 648
drwxrwsr-x   8 ekeyser  expl       94208 Nov 14 10:02 .
drwxrwsr-x   4 ekeyser  expl        4096 Nov 14 09:44 ..
drwxrwsr-x   2 ekeyser  expl        4096 Nov 12 15:33 ana
drwxrwsr-x   2 ekeyser  expl       12288 Nov 12 15:28 bp
drwxrwsr-x   2 ekeyser  expl        4096 Nov 12 15:22 tex
drwxrwsr-x   2 ekeyser  expl        4096 Nov 13 14:03 unknown
drwxrwsr-x   2 ekeyser  expl      106496 Nov 12 15:27 usgs
drwxrwsr-x   2 ekeyser  expl       90112 Nov 13 14:02 wus
The unknown directory at this level means I don't know the company at this snap shot in time. I've done the same organization with my 32 bit data, only I have added another deeper layer with a directory name of extra. This is where I store all my extra versions for my seismic lines
bash-2.03$ pwd
/auto/fs63/alaska32segy
bash-2.03$ ls -al
total 832
drwxrwxrwx   5 ekeyser  expl      241664 Nov 13 15:25 .
drwxrwsr-x  31 ekeyser  expl        8192 Nov 13 16:53 ..
drwxrwxr-x   3 mmcbryan expl        8192 Nov 13 10:42 ana
drwxrwxrwx   2 ekeyser  expl      147456 Nov 12 07:55 good
-rw-rw-r--   1 ekeyser  expl        2917 Nov 13 15:23 spids.lst
-rw-rw-r--   1 ekeyser  expl        1368 Nov 13 15:22 stacks.list

bash-2.03$ cd ana
bash-2.03$ ls -al
total 329288
drwxrwxr-x   3 mmcbryan expl        8192 Nov 14 10:21 .
drwxrwxrwx   5 ekeyser  expl      241664 Nov 13 15:25 ..
drwxrwxr-x   2 ekeyser  expl        8192 Nov 13 10:42 extra
-rw-rw-r--   1 mmcbryan expl     15249220 Oct 29 10:37 F108080.AD-US-301-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     7918060 Oct 29 10:37 F108081.AD-US-302-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     4148100 Oct 29 10:37 F108082.AD-US-303-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     7328620 Oct 29 15:34 F108083.AD-US-304-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     22052340 Oct 29 10:37 F108084.AD_US-305-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     11724860 Oct 29 10:37 F108085.AD-US-306-03.enhance-mig.012003.pgs.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     16501780 Oct 29 10:37 F108086.AD-US-307-03.enhance-mig.012003.pgs.MIG.0.sgy
bash-2.03$ cd extra
bash-2.03$ ls -al
total 618864
drwxrwxr-x   2 ekeyser  expl        8192 Nov 13 10:42 .
drwxrwxr-x   3 mmcbryan expl        8192 Nov 14 10:21 ..
-rw-rw-r--   1 ekeyser  expl     15497520 Oct 28 09:54 F108080.AD-US-301-03.APC03-301_ftmig.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     15249220 Oct 29 10:37 F108080.AD-US-301-03.prestmtk-mig.012003.pgs.MIG.1.sgy
-rw-rw-r--   1 ekeyser  expl     8034480 Oct 28 09:54 F108081.AD-US-302-03.APC03-302_ftmig.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     7918060 Oct 29 10:37 F108081.AD-US-302-03.prestm-mig.012003.pgs.MIG.1.sgy
-rw-rw-r--   1 ekeyser  expl     4215600 Oct 28 09:54 F108082.AD-US-303-03.APC03-303_ftmig.MIG.0.sgy
-rw-rw-r--   1 mmcbryan expl     4148100 Oct 29 10:37 F108082.AD-US-303-03.prestm-mig.012003.pgs.MIG.1.sgy
Above we can see the additional versions in the directory called extra. When we build the project, these will normally be excluded.

That's been an overview of the data management sturcture, now we get to build the indexes. The find command will take a couple of seconds but the spids.pl has to read every single trace. It takes two or three minutes to collect the statistics for the thousand seismic lines in our data structure.

cd /auto/fs63/alaska8segy
find /auto/fs63/alaska8segy -name "*.sgy" > junk
grep -v extra junk > stacks.list
cp stacks.list junk
~ekeyser/perl/spids.pl > spids.lst
We are now ready to copy the seismic lines (8 bit format) that fall within the XY window we have specified in our 2dselectlist_mid.ak awk script. You will need to edit a copy of this script and change the window. This program will pass only those seismic lines who have a mid point that is inside the XY range into a file called 2d.lst.
cd /auto/fs63/ekeyser/seisx/test/2d/8bit
awk -f ~ekeyser/Ak/2dselectlist_mid.ak < /auto/fs63/alaska8segy/spids.lst > 2d.lst
awk '{printf("grep %s /auto/fs63/alaska8segy/stacks.list >> new.all\n",$2)}' 2d.lst > run
chmod +x run
run
After this script is run, we will have a list of the lines with the complete path in the file new.all. Here is what the files look like:
bash-2.03$ head 2d.lst
PRK-85-18 A43720.PRK-85-18.43720_PRK-85-18.mig.unknown.wus.MIG.0.sgy
PRK84-13 A43811.PRK84-13.43811_PRK-13.mig.unknown.wus.MIG.0.sgy
PRK-84-16 A43814.PRK-84-16.43814_PRK-84-16.mig.unknown.wus.MIG.0.sgy
PRK-85-001 A43815.PRK-85-001.43815_PRK-1-85.mig.unknown.wus.MIG.0.sgy
PRK-85-24 A43817.PRK-85-24.43817_PRK-85-24.mig.unknown.wus.MIG.0.sgy
WG-90-18 A42721.WG-90-18.42721_WG-90-18.mig.011990.wus.MIG.0.sgy
WG-91-57 A43714.WG-91-57.43714_WG-91-57.mig.unknown.wus.MIG.0.sgy
WG-82-26 A43800.WG-82-26.43800_WG-82-26.mig.unknown.wus.MIG.0.sgy
WG-82-41 A43801.WG-82-41.43801_WG-82-41.mig.unknown.wus.MIG.0.sgy
WG-83-42 A43804.WG-83-42.43804_WG-83-42.mig.unknown.wus.MIG.0.sgy

head new.all
/auto/fs63/alaska8segy/good/wus/A43720.PRK-85-18.43720_PRK-85-18.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43811.PRK84-13.43811_PRK-13.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43814.PRK-84-16.43814_PRK-84-16.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43815.PRK-85-001.43815_PRK-1-85.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43817.PRK-85-24.43817_PRK-85-24.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A42721.WG-90-18.42721_WG-90-18.mig.011990.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43714.WG-91-57.43714_WG-91-57.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43800.WG-82-26.43800_WG-82-26.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43801.WG-82-41.43801_WG-82-41.mig.unknown.wus.MIG.0.sgy
/auto/fs63/alaska8segy/good/wus/A43804.WG-83-42.43804_WG-83-42.mig.unknown.wus.MIG.0.sgy
The final step is to copy the files over. (Disk is cheap)
awk '{printf("cp %s .\n", $1)}' new.all > run
chmod +x run
run
The next step is a bit more complicated. We will access the 32 bit data, build links to that data and set up a batch processing job to create our own filtered, resampled and scaled data in 16bit format in our 2d data directory. The first part is a repeat of what we had before.
cd /auto/fs63/alaska32segy
find /auto/fs63/alaska32segy -name "*.sgy" > junk
grep -v extra junk > stacks.list
cp stacks.list junk
~ekeyser/perl/spids.pl > spids.lst
cd /auto/fs63/ekeyser/seisx/test/2d
awk -f ~ekeyser/Ak/2dselectlist_mid.ak < /auto/fs63/alaska32segy/spids.lst > 2d.lst
awk '{printf("grep .%s. /auto/fs63/alaska32segy/stacks.list >> new.all\n",$1)}' 2d.lst > run
chmod +x run
run
We will set up some links now, we just need to access the 32bit data in a temporary fashion.
awk -f ~ekeyser/Ak/firstlast.ak < new.all > junk
awk '{printf("ln -s /%s %s\n", $1,$2)}' junk > run
chmod +x run
run
Now collect the files, make a directory to place the data and use the following batch script batchit_npr.ak to process the data.
ls *sgy > junk
mkdir Process
awk -f ~ekeyser/ak/batchit_npr.ak < junk > run
/apps/paradigm/seisx3.6.SunOS/bin/spt_process run
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    30 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    40 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    50 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    60 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    70 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    80 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace    90 of   793
MESS: Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace   100 of   793
Processing File A41875.AS-82-05.41875_AS-82-05.mig.031982.wus.MIG.0.sgy Trace   100 of   793
...
Click here to see what the file run looks like. We can now safely erase our links and attach all the seismic lines in the subdirectory Process.
rm *sgy
The final step is to copy the horizons and faults over to this new project make a list of internal line names with the phase.pl script
cd /auto/fs63/kroot/seisx/alaska2/2d/8bit
ls *sgy > junk
~ekeyser/perl/phase.pl > ../../phase.lst
cd /auto/fs63/kroot/seisx/alaska2
awk '{printf("cp /auto/fs63/jfong/seisx/alaska2/%s.pick .\n",$2)}' phase.lst > run
awk '{printf("cp /auto/fs63/jfong/seisx/alaska2/%s.pick .\n",$2)}' phase.lst > run
chmod +x run
./run
cp  /auto/fs63/jfong/seisx/alaska2/picks.index .
cp  /auto/fs63/jfong/seisx/alaska2/faults.index .
We are done!

Howto set up a new user for SeisX at EnCana (3.5)

Fire up SeisX for the first time and set up these paths:
#system support
/apps/paradigm/PG00/PG99/seisx_support
#user support
/home17/p007042/user_support35
#help application
/apps/paradigm/PG99/bin/acroread
#help documents
/apps/paradigm/PG99/online_help/SeisX
#top help
start.pdf
#PS hardcopy
/home/ekeyser
#cgm files zeh's new way of doing this
/xlation/ekeyser
#hpgl
/home/ekeyser
#text printer name
seisx.prn
Screen selection
Basemap screen2
Base map attributes screen1
Color Dialog default
Color legend default
Fault cube screen1
horizon default
synth default
value default
seismic display screen1
seismic attributes screen1
culture screen1
grid screen1
grid contour screen 1
I like setting the background colour to Grey65 and the wiggle trace background to light grey. You might want to copy a couple of my templates for your use. One of them is a brown blue seismic display, the cyan has a very pale cyan around the zero crossing, the pastel is a lighter pastel colour bar that I like for hard copy maps and the last is the sonic gamma synthetic template that I like to use.
118 sw1041p:/home/ekeyser/user_support35 % cd gek
119 sw1041p:/home/ekeyser/user_support35/gek % ls
gek_brown.spl         gek_pastel.spl
gek_cyan.spl          sonic-gamma.template

cd
cd user_support35
cp -R /home/ekeyser/user_support35/gek .
I've placed a copy of these files here

Howto convert an Arcview (ESRI) Shape file to a SeisX Photon Ascii file

Here's a perl script that takes the Arcview shape file .shp that contains lines and polygons and creates a Photon Ascii file. This script shape2sx.pl will work for one kind of shape for each file. The user will need to use vi or sed to correct the name, colour and line or polygon type. Here's how to run it:
ls *shp > junk
~ekeyser/perl/shape2sx.pl
Here's what the file looks like
 head -20 adminboundaries_a4.asc
# Photon Systems ASCII Format v1.0

struct CultureLayer { Name }

struct Polyline {
    ColorName LineWidth FillPattern Smooth Closed
    Points[ N ] { X Y }
}
CultureLayer "shape_file"
Polyline "Black" 1 None False False
9
     1474255      5861662
     1474245      5861612
     1474170      5861528
     1474091      5861524
     1474074      5861575
     1474134      5861694
     1474203      5861736
     1474249      5861709
     1474255      5861662
You will probably want to change the CultureLayer name, the LineWidth, FillPattern and whether the polgons are closed or not. Here's how I do a nmae change, convert lines to polygons and make the pattern cross hatched with the vi command tool.
:%s/shape_file/admmin_bdr/g
:%s/1 None/2 CrossHatch/g
:%s/False False/False True/g
:%s/Black/Red/g
When we are done, read the culture into to SeisX. Here is a list of the valid Polygon types in SeisX. Valid SeisX colours are: Red, Yellow, Green, Cyan, Blue, Magenta, Navy Blue, Deep Sky Blue, Light Blue, Purple, Violet, Pink, Hot Pink, Maroon, Indian Red, Salmon, Orange, Dark Orange, Peru, Tan, Rosy Brown, Brown, Gold, LightYellow, Spring Green, Yellow Green, Olive Drab, Dark Green, White, Light Grey, Grey65, Dim Grey, Black

If your file is too large, or you have a couple of changes you want to make every time, I'd recommend using the unix sed command to make your changes. Here's how: Place all your commands in a file say called change.sed. Just put all your editing commands together and execute it like:

sed -f ~ekeyser/sed/coast.sed < blue_water.asc > Blue_water.asc
sed -f ~ekeyser/sed/islands.sed < islands.asc > Islands.asc
sed -f ~ekeyser/sed/lakes.sed < small_lakes.asc > Small_lakes.asc
Fast and simple, eh!

Howto use ULA to snitch data from a Landmark Project into SeisX

First step is to set up the new SeisX project. You will have to attach a single line so the options appear. Here are a few problems: If you still want to try it, Select (General), (ULA Link) and point to the following directory and executable.
/apps/paradigmgeo/PG2.0/p3.0/ula/ULA_LM2003_seisx
ULA2.4_LMr2003_Server_alasmacs.csh

Howto read and grid contour a XYZ file in SeisX

Your data must be space limited and XY's specified (not Lat Long). First count the number of lines.
{35} sun801:/dat/photon/p007042/Mac3/asc % wc -l < taglu_pat
  318593
Here is what need to be added to your card deck:
#Photon Systems ASCII Format v1.0

struct DATA_SET[N]{
        X
        Y
        Z
}
DATA_SET 3 
569330.125 1042500.250  582.213
569340.125 1042500.250  582.464
569350.125 1042500.250  583.338
...
Add the first few cards above to your xyz file and change the number of samples (change 3 to 318593)

Select Horizon, Grid&Contour, ASCII and grid the file like any other. I use this function to take a digitized time horizon map to generate and convert a grid to a horizon.

Howto manage your space on the system

Here are some of the unix commands I use to reduce the total amount of disk that I am using:
#usage of current disk stripe
df -k .
#size of directory
du -sk * |  sort -nr | more
#list file largest to smallest
ls -l | sort -nr +4 -5 | more

Howto build a sub project based on a XY window of the data

We will use the awk 2dselect.ak to create a series of unix move commands to select out the list of lines we want. We will then run the phase.pl to extract the internal seisx line names that we can use to build to copy the appropriate horizon and fault. Here are the various steps:

Check validate and correct your line statistics for duplicate shots and XY's

Don't have to attach your data to get a reporting of statistics of your 2d data. Use spids.pl to validate your data. These routines will handle multiple files for the same line.

Dec 12, 2003 I've created a new version, this one will do a few more checks on your data and give a report. It will even suggest what perl scripts you can run to correct your data! You can grep the report output to copy the files to some place to work on the data. The routine will now check for duplicate shot points, XY's, CDP's and gives a warning if shot point trace differences are suspect. Here's how it works

 ls *sgy > junk
~ekeyser/perl/spids.pl
  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b 106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy         0    101      1   393615  5896091     0    380    559   393615  5896091    559    279   2.00
  106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy     ***  ERROR  ***   102.00 Has duplicate XY values
b 10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy                       0    470      1   342327  5902445     0     11    919   364304  5901825    919    459   2.00
  10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy                   ***  ERROR  ***   469.00 Has duplicate shot points
  10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy                   ***  ERROR  ***   469.00 Has duplicate XY values
b 42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy                     0    102      1   333123  5875347     0    478    753   321876  5875757    753    376   2.00
  42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy                 ***  ERROR  ***   102.50 Has duplicate shot points
  42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy                 ***  ERROR  ***   102.50 Has duplicate XY values
b A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy     1      0      1   555395  7699770  1319   1867   1319   563853  7682003   1319   1867   0.71
  A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy ***  ERROR  ***  1209.00 Has duplicate shot points
  A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy ***  ERROR  ***  1246.00 Has duplicate XY values
  A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy *** WARNING ***  1208.00 Shot point difference >  4.0
  A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy ***  ERROR  ***  1418.00 Has duplicate CDP 421 - use fixcdps.pl to correct
b A36348.GULF-CA-316-75.scan.1998.kp-pul.STK.0.sgy                 1      2      1   554011  7654645   353    178    353   556411  7651152    353    176   2.01
  A36348.GULF-CA-316-75.scan.1998.kp-pul.STK.0.sgy             ***  ERROR  ***   125.50 Has duplicate XY values
b A363589.405-B.scan.1999.kp-pul.STK.0.sgy                         1      1      1   580233  7701691   824    241    824   557050  7685054    824    240   3.43
  A363589.405-B.scan.1999.kp-pul.STK.0.sgy                     ***  ERROR  ***    23.50 Has duplicate XY values
  A363589.405-B.scan.1999.kp-pul.STK.0.sgy                     *** WARNING ***    23.50 Shot point difference >  4.0
b A6393.86116.un.100-480.apo99.STK.1.sgy                           1    100    400   481386  7727918  1521    480   1920   499762  7732751   1521    380   4.00
Notice how spids.pl flags potential problems. The assumption is that you cannot have more than one trace with the same XY and different traces have the same shot point number. SeisX scans the first number of traces to determine map scale. If they are off, you get wonky results. The current release of SeisX 4.0 will actually crash if you have duplicate data! I have added a warning where ever the shot point difference is greater than the number 4 between each trace. The report above flags the first shot point that has the problem.

X Coordinate -- Zero's
Ok, we have found a few problems, how do we fix them? We do this in two steps, the first step is to flag each trace that has a duplicate shot or XY. The perl program zero_dups.pl preserves the last shot point or XY and zero's the duplicates.

To the right, we see an example of the first 100 traces of line A363589.405-B.scan.1999.kp-pul.STK.0.sgy. Traces 1 to 4 have zero, 5 to 11 have valid data, 12 to 17, zero , 18 a valid number ...

In another example, if you have the shot point number 101 for the first 50 traces, the script will change shot points 1-49 to zero and preserve the number 50. Use the SeisX segy editor to check the numbers and make any required corrections. SeisX can be used to interpolate the shots, X's and Y's. If you have a number of lines to correct I have written the script zero_interpolate.pl that will quickly interpolate these fields. Here is how these programs work:

bash-2.03$ ls *sgy > junk
bash-2.03$  ~ekeyser/perl/zero_dups.pl
b 106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy - NO duplicate shots  duplicate XY's have been zeroed
b 10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy duplicate shots have been zeroed duplicate XY's have been zeroed
b 42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy duplicate shots have been zeroed duplicate XY's have been zeroed
b A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy duplicate shots have been zeroed duplicate XY's have been zeroed
b A36348.GULF-CA-316-75.scan.1998.kp-pul.STK.0.sgy - NO duplicate shots  duplicate XY's have been zeroed
b A363589.405-B.scan.1999.kp-pul.STK.0.sgy - NO duplicate shots  duplicate XY's have been zeroed
b A6393.86116.un.100-480.apo99.STK.1.sgy - NO duplicate shots  - NO duplicate XY's 
fini -- 
The program reports if there are any duplicates, you will see NO if the data are ok. Note that the last line is ok. Here's the script to do the interpolation followed by spids.pl.
bash-2.03$  ~ekeyser/perl/zero_interpolate.pl 
b106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy - interpolated shots, interpolated XY's
b10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy - interpolated shots, interpolated XY's
b42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy - interpolated shots, interpolated XY's
bA13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy - interpolated shots, interpolated XY's
bA36348.GULF-CA-316-75.scan.1998.kp-pul.STK.0.sgy - interpolated shots, interpolated XY's
bA363589.405-B.scan.1999.kp-pul.STK.0.sgy - interpolated shots, interpolated XY's
bA6393.86116.un.100-480.apo99.STK.1.sgy - interpolated shots, interpolated XY's
fini -- 
Let's check the data:
bash-2.03$  ~ekeyser/perl/spids.pl
  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b 106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy         0    101      1        0        0     0    380    559        0        0    559    279   2.00
  106559.RRL-DTK-T48-4.25.f-mig-sb-fx.032002.gox.MIG.1.sgy     ***  ERROR  ***   102.00 Has duplicate XY values
b 10711.KARY-GR-G-2.str.lynx.stack.STR.1.sgy                       0    469      1   342352  5902446     0     10    919   364273  5901825    919    459   2.00
b 42815.PCP-CAP-960167.mig1.0596.cgg.MIG.1.sgy                     0    102      1   333138  5875347     0    478    753   321891  5875756    753    376   2.00
b A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy     1   1207      1   555394  7699770  1319   1867   1319   563853  7682003   1319    659   2.00
  A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy ***  ERROR  ***  1418.50 Has duplicate CDP 421 - use fixcdps.pl to correct
b A36348.GULF-CA-316-75.scan.1998.kp-pul.STK.0.sgy                 1      2      1   554011  7654645   353    178    353   557444  7649641    353    176   2.01
b A363589.405-B.scan.1999.kp-pul.STK.0.sgy                         1      1      1   580380  7701786   824    241    824   557049  7685053    824    240   3.43
  A363589.405-B.scan.1999.kp-pul.STK.0.sgy                     *** WARNING ***    23.50 Shot point difference >  4.0
b A6393.86116.un.100-480.apo99.STK.1.sgy                           1    100    400   481386  7727917  1521    480   1920   499762  7732751   1521    380   4.00
fini -- Total Traces = 6248
We still have some errors. The first line now has zero's for the XY's and we will have to merge some navigation into the file. The last line has a couple of strange shot point increments. We will have to go back to the original data to solve this problem and we have to "fix" our cdp's. We use f="../perl/fixcdps.pl">fixcdps.pl. This script will reindex our CDP_NUMBER's and Trace Numbers.
ls A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy > junk
~ekeyser/perl/fixcdps.pl
A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy

~ekeyser/perl/spids.pl
  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b A13326.ESSO-CA-87841-92.6557s.1208-1867.apoter99.fnm.STK.1.sgy     1   1207      1   555394  7699770  1319   1867   1319   563853  7682003   1319    659   2.00
fini -- Total Traces = 1319
Our CDP's have now been corrected and pass our check script!

Sept 6, 2003 I have written two perl scripts to extract information from the SeisX header. The first one called spids.pl will extract the first and last trace, cdp and shotpoint. It reports on the ratio of Cdp's to Shotpoints. This number should be a simple multiple, usually the number 2. If it isn't, the data may not be loaded correctly. Put a list of the lines that you want reported into a file called junk and then run the perl script.

Updated - I've fixed spids.pl. It will now handle data from Little Endian (PC's) as well as Big Endian (SUN's). I have added a column at the start, it's either a b for big endian or a l for little endian. It works the same as before:

~ekeyser/perl/spids.pl
  External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
b A31026.3.geox95.fxf.MIG.0.sgy                                    1   2064   4128   532183  6384519   691   2409   4818   522420  6378845    691    345   2.00
b A31114.SK90-10.kel93.psuf.MIG.0.sgy                              1    102    246   510359  6341243   947    575   1192   502003  6337152    947    473   2.00
l A31173.TL-3B.geox91.MIG.0.sgy                                    1   1462    395   547686  6395328  1135   2029   1529   532561  6384979   1135    567   2.00
b A31406.TL-3C.kel96.fxdc.MIG.0.sgy                                1   2061      1   532270  6384567   681   2400    681   522640  6378974    681    339   2.01
b A32798.TL-6C.geox91.fxf.MIG.0.sgy                                1   1796    301   521055  6415916   742   2166   1042   510533  6410754    742    370   2.00
b A34280.TC-2.geox94.f.MIG.0.sgy                                   1    901   1601   571285  6345638  1461   1631   3061   556695  6335325   1461    730   2.00
b A34281.TC-3.geox94.f.MIG.0.sgy                                   1    701   1181   577668  6345897  2384   1893   3564   555016  6327348   2384   1192   2.00
b A34282.TC-4.geox94.MIG.0.sgy                                     1    701   1201   581523  6343980  3401   2401   4601   548158  6319169   3401   1700   2.00
b A34283.TC-5.geox94.f.MIG.0.sgy                                   1    521    841   576635  6332287   590    815   1430   571027  6327565    590    294   2.00
b A34284.TC-9.geox94.f.MIG.0.sgy                                   1    201      1   544869  6362665  4590   2495   4590   580439  6319156   4590   2294   2.00
b A41348.SP-516.geco94.MIG.0.sgy                                   1    101    202   558086  6343526  3527   1864   3728   517275  6356249   3527   1763   2.00
b A41349.SP-504.geco94.MIG.0.sgy                                   1     97    194   552092  6362289  4927   2560   5120   500887  6331409   4927   2463   2.00
b A41377.PN-8.kel00.PMIG.0.sgy                                     1    102      1   502967  6371022  2335   1280   2335   480464  6365740   2335   1177   1.98
b A41377.PN-8.kel01.PRMIG.0.sgy                                    1    102      1   502967  6371022  2350   1285   2350   480364  6365733   2350   1182   1.99
...
New - I've updated spids.pl and it will now properly handle 3D data sets as well. Here is what the new program outputs.
bash-2.03$ ~ekeyser/perl/spids.pl
External_File_Name                                           Trace Spid/li Cdp/tr  Xcoord   Ycoord Trace Spid/li Cdp/tr  Xcoord   Ycoord  Cdp's Num_Spid Ratio
P107094.AMAX-W-913D-81.f-fx-na-mig.011992.ess.MIG.0.sgy         3D    132      1   550647  5803761          165     37   549832  5802853
P107095.ALT-W-913D-80.f-mig.111991.w.MIG.0.sgy                  3D      1      1   531001  5775341           93    104   528439  5773025
P1314.SH-EE-25-12.f-str.111988.ess.STR.0.sgy                     1    401      1        0        0   528    664    528        0        0    528    263   2.00
P1687.PCP-EG-850937.f-str.111988.ess.STR.0.sgy                   1    102      1        0        0   275    239    275        0        0    275    137   2.01
...
Notice how the XY's above for the 2D lines have zero's for the XY's, our navigation needs to be loaded!

Here is an example of some recently acquired lines from the old version.

 ls *sgy > junk
 /home/ekeyser/perl/spids.pl
External_File_Name                                           Trace   Spid    Cdp   Xcoord   Ycoord Trace   Spid    Cdp   Xcoord   Ycoord  Cdp's Num_Spid Ratio
100232.D-NOR-00007.f-fx-nrmig.102000.gox.stack.MIG.0.sgy       319    260    319   385997  5556895   480    340    480   384388  5556931    162     80   2.01
100251.TEX-EG-6K390.f-mig-pr-sb-fx.102001.es.MIG.0.sgy           1    101      1   602815  5813554   721    461    721   594212  5805495    721    360   2.00
100252.TEX-EG-6K392.f-mig-pr-sb-fx.102001.es.MIG.0.sgy           1    101      1   603590  5812074   681    441    681   596846  5803291    681    340   2.00
100253.TEX-EG-6K393.f-mig-pr-sb-fx.102001.es.MIG.0.sgy           1    101      1   607866  5809102   701    451    701   599235  5801574    701    350   2.00
100443.CRR-C-MIN-94-01.f-str.112001.psp.STR.0.sgy                1    101      1   672532  5851338   395    298    395   669707  5852729    395    197   2.01
When we run this script on some earlier data, reference numbers in the 180's we see some problems. This first line has zero for all cdp's not a good idea!. Line 184 has a shot point to cdp ratio of .2 again this is probably bad data or at lease should be checked! It is usually corrupt data that causes SeisX to blow up.
 ls *sgy > junk
 /home/ekeyser/perl/spids.pl
External_File_Name                                           Trace   Spid    Cdp   Xcoord   Ycoord Trace   Spid    Cdp   Xcoord   Ycoord  Cdp's Num_Spid Ratio
00181.PE-N-35.str.999999.ukn.MIG.0.sgy                        1381    110      0   311727  6179119  2760    799      0   284264  6180352      1    689   0.00
00182.CCS-CJ-8304.f-mig.091987.dsl.MIG.0.sgy                     1    102    204   326203  6183601   749    476    952   313898  6184112    749    374   2.00
00183.CCS-CJ-8302.f-mig.091987.dsl.MIG.0.sgy                     1     96    192   326344  6183646   621    406    812   317363  6188540    621    310   2.00
00184.TEX-W-W797705.f-mig.101989.dsl.MIG.0.sgy                   1     20    204   320591  6169613   273   1380    476   311432  6170105    273   1360   0.20
00185.TEX-W-W79773.f-mig.101989.dsl.MIG.0.sgy                    1      7     15   328693  6174822   631    322    645   308247  6175559    631    315   2.00
00186.TEX-W-W79AN.f-mig.091987.dsl.MIG.0.sgy                     1     19     39   321232  6177840   279    158    317   311889  6177246    279    139   2.00
00187.SIG-SE-MR3B.f-mig.091987.dsl.MIG.0.sgy                     1    213    427   329100  6170138   811    618   1237   314143  6163172    811    405   2.00
00188.SIG-SE-MR3A.f-mig.091987.dsl.MIG.0.sgy                     1    101    203   327716  6174870   215    208    417   329209  6169761    215    107   2.00
fini
The second routine is for Taiwen, it's called phase.pl and it will report the Internal line name, format of the data , number of samples and the total phase correction applied to the data. (format 1, 32bit IEEE, format 3, 16bit integer and format 5 8bit integer). Here is data from one of my projects. Note that I have some Internal line names with more than the reference numbers. These names will correspond with the pick files in my project!
 ls *sgy > junk
 //home/ekeyser/perl/phase.pl
External_File_Name                                        Internal               Format Samples Phase
13377.PCP_85-191.GEK.1.sgy                                  13377                     5   1000  133.3 
13455.PCP_85-249C.GEK.1.sgy                                 13455                     5   1000  -32.5 
13457.PCP_85-241B.GEK.1.sgy                                 13457                     5   1000   45.7 
13685.PCP_85-833.GEK.1.sgy                                  13685                     5   1000 -162.3 
13690.PCP_85-194.GEK.1.sgy                                  13690                     5   1000 -155.2 
13691.PCP_85-193.GEK.1.sgy                                  13691                     5   1000  -62.8 
13694.PCP_85-232C.GEK.1.sgy                                 13694                     5   1000  158.2 
13696.PCP_85-231C.GEK.1.sgy                                 13696                     5   1000  177.4 
13697.PCP-ECO-850214.GEK.1.sgy                              13697_PCP-ECO-850214      5   1000   -9.9 
13698.PCP_85-782B.GEK.1.sgy                                 13698                     5   1000  179.3 
13700.PCP-ECO-850215B.GEK.1.sgy                             13700_PCP-ECO-850215      5   1000  -22.3 
13701.PCP-ECO-850835.GEK.1.sgy                              13701_PCP-ECO-850835      5   1000  -11.1 
If anyone would like a reporting of any other fields, it is simple to use perl to extract the data! Direct the output to a file and use awk or excel to manipulate these fields.

How To handle Farmout support with sun291

Pan Canadian Standards -- Howto access the 32bit clean SeisX segy

Organize projects by userid, ie, my projects are all under /dat/photon6/p007042

We have the following directories to store our data:

/dat/photon
/dat/photon2
/dat/photon3
/dat/photon4
/dat/photon5
/dat/photon6
/dat/photon7
/dat/photon8
/dat/photon9
/dat/photon10
The up to date list of 32 bit, cleaned up SeisX Segy (IEEE numbers) are co located with the processor's segy data:

following location on spinning disk: As of April 9 2002, 450 3d's and 13,054 2d seismic lines (16,971 files) have been cleaned up into SeisX segy standard. These data cover most of the former Selkirk and Paliser business units (all of Alberta and British Columbia). Use Netscape's Edit, Find in a Page command to locate a reference number (or name)

It is recommended that you set up a unix link to the original 3d data and process the data to your own specifications. Here is one way:

Make your own current list of lines, this takes about 30 seconds:

find /data/encanastack13/sx2d/ -follow -name "*sgy" | sort -u > 2dstack.list
wc -l  2dstack.list

33818 2dstack.list
here we have more than 33,000 lines. Next step is to create a list of reference numbers in the file called 2d, EDM can give you your line list:
bash-2.03$ head 2d
a43558
p173353
p99257
Select the full list of line names using the following awk statement:
awk '{printf("grep \"/%s\.\" 2dstack.list >> new.all\n",$1)}'  2d > run
head run

grep "/a43558\." 2dstack.list >> new.all
grep "/p173353\." 2dstack.list >> new.all
grep "/p99257\." 2dstack.list >> new.all

chmod +x run
./run
Now edit the file new.all to refine your list of lines
head new.all
/data/encanastack13/sx2d/p173000/p173353/p173353.IGC-CQSS-GL-01-21.f-na-mig.022002.ver.MIG.0.sgy
/data/encanastack13/sx2d/p099000/p99257/p99257.MTP-VER-2001110.f-mig.092001.gox.MIG.0.sgy
/data/encanastack13/sx2d/p099000/p99257/p99257.MTP-VER-2001110.f-mig.092501.gox.MIG.0.sgy
/data/encanastack13/sx2d/p099000/p99257/p99257.MTP-VER-2001110.f-mig.092601.gox.MIG.0.sgy
Now set up the links using the firstnlast.ak awk script
awk -f ~ekeyser/ak/firstnlast.ak < new.all > junk
awk '{printf("ln -s %s %s\n", $2,$1)}' junk > run
chmod +x run
./run

bash-2.03$ ls
2d                                                       p99257.MTP-VER-2001110.f-mig.092001.gox.MIG.0.sgy
2dstack.list                                             p99257.MTP-VER-2001110.f-mig.092501.gox.MIG.0.sgy
junk                                                     p99257.MTP-VER-2001110.f-mig.092601.gox.MIG.0.sgy
new.all                                                  run
p173353.IGC-CQSS-GL-01-21.f-na-mig.022002.ver.MIG.0.sgy
Make a directory for the processing, built the processing card deck and run it. You might want to edit my batchit.ak This deck will pad the section out to 2.5 seconds (A new SeisX 3.6 feature to let the user have all data the same length), apply a filter, agc and convert to 16bit. Note a a big advantage of doing it this way is the ability to update a description that is unique for each line!
mkdir Process
ls *sgy > junk
nawk -f ~ekeyser/ak/batchit.ak < junk > batchit.job
~ekeyser/ak/spt_process batchit.job

MESS: Processing File p173353.IGC-CQSS-GL-01-21.f-na-mig.022002.ver.MIG.0.sgy Trace     1 of   419
MESS: Processing File p173353.IGC-CQSS-GL-01-21.f-na-mig.022002.ver.MIG.0.sgy Trace     2 of   419
MESS: Processing File p173353.IGC-CQSS-GL-01-21.f-na-mig.022002.ver.MIG.0.sgy Trace     3 of   419
...
We are done, all you need to do is attach the recently processed lines (above) into your project directory. You might want to run the spids.pl again to verify the data are ok.

Recommendations on how to organize each project:

These steps will reduce the number of files in each base project directory and make it easier for our tech's to help us.

Posted Tops bug

Make sure there is not a blank space before a top specification in Well Posting Attributes with map posting

Reset World Coordinates

Select Project, Modify Project and set the "Use User Extents". Position your mouse over the map area and decide what the min max areas you would like to use as the mazimum zoom size {press the big Zed button (or is it Zeeee)}. Sometimes you get a zero for a minimum and you see a quarter of the globe on the map. I find I have to rebuild the project or I will just madify the project to where I am working.

My horizons Disappear

SeisX stops Working

HOWTO Rebuild your project

HOWTO build a project

My Seismic disappeared

Seismic Pick options don't work

I agree, some of the options I can't get to work either. I only use: Useful hot keys are:

I need to add a Curve Alias

Double click on a well location with log curves, you have to be quick to get it to come up. Make sure you do not have the culture editor window or the Well information display windows open. They will take over first.

Select "File", "Log Defaults" click on an entry that you know works like DT and press the "Add" button and type in your additional curve alias eg "DT4P"

ERROR - Can't Get project file

Work around, change projects or exit SeisX.

Plot cgm files at PanCanadian

Select "Seisx", "Configuration" and set the Pathname to /xlation/your_user_id. Seisx will then place cgm files in this directory. Select Printing and Imaging from the Posse menu, "Zeh", "Applications", "Job Submittal", pick your plotter and or cgm file. Note that in addition to the physical plotters, there are also convertors from cgm to jpeg and giff that can be used for Intranet documentation.

Make Mulitple Base Maps

Click on the Second Last icon on the base map display to the left, it's called multi frame base map. You can create other windows that contain any number of maps loaded into memory and can be displayed very quicky. The down side of these maps is the fact you do not have cursor control, ie you can't use the mouse to identify your position. This button will open up the "Create Multi Frame Basemap", my example can be shown here. this file can be saved in the Parameters directory of your project with a name ending in ".mfb". This file called "bhl.mfb" can easily be edited to create additional frames if you find clicking the mouse a pain.

Psssst - Where are all the Perl and Awk scripts located?


Last Updated: Nov 6, 2003