Practical SeisX Segy - other Utilities
- SEGY
- How to rename a group of segy files using a name in the segy header.
![]()
- How to edit a range of SeisWare (SeisX) data samples. (Script will convert PC SeisWare file to SUN SeisX)
- How to convert SeisX segy data to CSEG segy data (trace headers integers)
- How to load IEEE data into SeisX 4.0
- How to load a honking big 3D segy into SeisX 4.0
- How to extract Line Trace XY out of very large 3D datasets
- How to load a Landmark 8bit segy file to SeisX 8bit
- How to renumber my CDP's and Traces
- How to add comments to the EBCDIC header
- Colour code my 2D seismic lines
- Howto create 3D segy data (with dummy data values)
- Howto automatically assign MIG or STK and Version numbers to SeisX files
- Check validate and correct your line statistics for duplicate shots and XY's
Dec 16
- Howto Convert EnCana Workstation SEGY files to SeisX (pssst howto eliminate data loading) Sept 2003
- Second Step - Howto Build a SeisX index file for 3D
- Third step - Howto batch Post stack process our data
- Howto extract Elevations, Fold and Total Statics from EnCana workstation segy format files
- Howto use Perl to change the Internal EnCana (SeisX) Line name - April 17, 2003
- How do I convert a ASCII header to EBCDIC and format code of 6 to 1
- How do collect shotpoint statistics from some unknown segy files?
![]()
- How do I create a navigation file with the first and last spid and every 10?
- How do I easily dump the contents of the EBCDIC header into a text file?
- How do I convert the XY's in SeisX files from one zone to another?
- How do I run the EnCana segy check program?
- How can I Create a segp file with elevations from the trace header? March 18, 2003
- How can I rename my seismic lines so there are four fields separated by three dots - March 4, 2003
- How can I place the Letter "P" in front of my EDM number and update the internal Dec 4, 2002
- How can I generate a listing of line lengths in my Seisx project? Nov 29, 2002
- Howto use perl to change the Internal SeisX Line name - Nov 26, 2002, the old way
- Project
- Tricks to correct /dataload/dump Line ID's and Line Names so the data will archive
- How to validate segy data (does EDM have a proper match)
- How to add (over write) a lineName from a unique LineID
- How to add (over write) a unique LineID given a Line Name (non unique)
- How to add (over write) a lineName from a unique LineID using all of EDM
- How to move the CD- prefix to the third field
- How to quickly uppercase the LineID and LineName data fields
- How to retrieve all the online /stacks and /field data
- How I grab and load EnCana workstation data from a ftp server
- How to convert a Mapit file to SeisX lineaments
- A slick way to data manage a large number of SeisX segy files
- Howto set up a new user for SeisX at EnCana (3.5)
- Howto convert an Arcview (ESRI) Shape file to a SeisX Photon Ascii file
- Howto use ULA to snitch data from a Landmark Project into SeisX
- Howto read and grid contour a XYZ file in SeisX
- Howto manage your space on the system
- Howto build a sub project based on a XY window of the data
- How To handle Farmout support with sun291
- Pan Canadian Standards -- Howto access the 32bit clean SeisX segy
- Recommendations on how to organize each project:
- Posted Tops bug
- Reset World Coordinates
- My horizons Disappear
- SeisX stops Working
- HOWTO Rebuild your project
- HOWTO build a project
- My Seismic disappeared
- Seismic Pick options don't work
- I need to add a Curve Alias
- ERROR - Can't Get project file
- Plot cgm files at PanCanadian
- Make Mulitple Base Maps
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.SGYAll 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#3Here 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 subfieldsAll that is left is to run the scriptbash-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.sgyHow 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 -finiNote 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 runHere 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.plls *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 changeHow 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 listcd /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 ./runHow 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,2003We 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.LSTWow, 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 levells *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 ./runHow 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 fieldls 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 executechmod +x run ./runHow 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:First step is to use ftp to get the data. Here are the details:
- Sign on to the ftp server, specify bin and grab the data with mget
- Place the extra copies in a folder called extra
- Run the EnCana check.pl program and the spids.pl program to check the data
- Extract all the EBCDIC headers into one file and make sure it is right
- 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
- For our landmark parterns, I convert the ascii header to EBCDIC and the format code of 6 to a 1 with a2e.pl
- 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.
- Correct the internal line names to what I like with fixname.pl . (Last two sub fields of the second field)
- Check the data format with the script phase.pl
- Run my favorite batch processing sequence batchit_mac.ak on my data
- Finally, I get to attach my new data!
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 = 9460These 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 finiThe 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 finiWe 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.akNow lets run the processing job. We will check the output with phase.plbatchit.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 ... /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 finiWe 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.plHow 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
- As your processing contractor to put the data on disk not tape. A DLT take holds ~40 gig and costs $110. A 120gig disk costs ~$130. Go figure, get the data on disk. This saves at least 4 hours reading the tape and you do not have to worry about bad data (or tape)
- The next step is to figure out what you have and what order the files should be in. I have written a very fast perl script that will pull off the corner points from a series of 3D segy files. It takes less than a minute to get the statistics for each piece of data. Examine the output to determine the Inline Crossline range and XY values. It's easy to see what order you need to put the data in or to determine missing data. You can even map the file oulines as a culture layer with SeisX.
- Place all the files in order into a file called junk and run the perl script combine.pl to create one segy file will all the data. This step takes the time to copy all your files, I'm about two hours for 40gig on our network. The last step is to load your new data set with SeisX 4.0:
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:
- First Line, first trace
- First Line, last trace
- Second Line, first trace
- Last Line, last trace
- Second Last Line, last Trace
- Last Line, first trace
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%)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.
What's on my 3D stack tape files 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 2The 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.394678The 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 7617092Here'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.plTry 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
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:
Colour coded seismic
- Separate the SeisX seismic lines into different directories by processor
- Extract a navigation.segp file for all SeisX lines in the directory using sx2segp.pl
- 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.ascYou 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=17913The 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.ascIn 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 PatchWe extracted a right angle triangle with the XY'sPatch 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.05757The 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.plThis 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.plPerl 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.plHere's what the output looks likebash-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 ./runHere is the outputOpening 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 runHere's what the output looks likeProcessing 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.
- Elevation
- Total Applied static
- Fold
- Shot location
ls *.0.sgy > junk /home/ekeyser/perl/header2hor.plThis 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.000In 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.0How 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 ./runAnother 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 EnCanals *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 typeThe 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.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 Here is how I normally create a file with the error messages.
~ekeyser/perl/segy/check.pl > report.lstNote: 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 ./runHere 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.historyHere 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.fmtHow 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.sgySecond step is to update the header with the first dot separated field as the internal line namels 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 P9715Let'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 finiLook'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 runHow 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 lengthnawk -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: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.
- Use the first dot separated field of the external line name
- Use the second dot separated field of the external line name
- The last two fields of the second dot separated external 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.sgyLet'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.0Here'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 102395Now 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-56How 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-56A 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 unknownNotice 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 wusThe 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 linesbash-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.sgyAbove 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.lstWe 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 runAfter 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.sgyThe final step is to copy the files over. (Disk is cheap)awk '{printf("cp %s .\n", $1)}' new.all > run chmod +x run runThe 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 runWe 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 runNow 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 *sgyThe 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 scriptcd /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.prnScreen selectionBasemap 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 1I 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 hereHowto 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.plHere's what the file looks likehead -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 5861662You 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/gWhen 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
- None
- Solid
- DiagDown
- Diag Up
- Vertical
- Horizontal
- Boxes
- CrossHatch
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.ascFast 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.
- Well symbol does not come across - Every well has a symbol of 13 (a circle)
- Seismic stack files have to be perfect, the program blows up on my data
- All tops come across, I have tooooo many, they all get placed in the same SeisX location. It's recommended that each interpreter's set be export and re formatted for SeisX. Otherwise you have a big overpost issue to deal with
/apps/paradigmgeo/PG2.0/p3.0/ula/ULA_LM2003_seisx ULA2.4_LMr2003_Server_alasmacs.cshHowto 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 318593Here 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 | moreHowto 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:
- Prepare a list of SeisX files:
ls *sgy > junk head junk 01kug-03.timemig.0.sgy 01kug-03.timemig.1.sgy 01kug02mig.mig.0.sgy 01kug03mig.mig.0.sgy- Collect the statistics for the first and last shot points using spids.pl
/home/ekeyser/perl/spids.pl > spids.lst External_File_Name Trace Spid Cdp Xcoord Ycoord Trace Spid Cdp Xcoord Ycoord Cdp's Num_Spid Ratio 01kug-03.timemig.0.sgy 0 181 162 534898 7695196 0 709 1218 522550 7705094 1057 528 2.00 01kug-03.timemig.1.sgy 0 181 162 534898 7695196 0 709 1218 522550 7705094 1057 528 2.00 ...- Edit your own copy of 2dselect.ak for the Min and Max XY's and run the script. Notice that the script will pass all lines that the average of the first and last shot point are within the limits set at the beginning of the script.
awk -f ~ekeyser/ak/2dselect.ak < spids.lst > run.job head run.job mv ../01kug35mig.mig.0.sgy . mv ../237pul98.MIG.0.sgy . mv ../249pul98.MIG.0.sgy . mv ../249pul98.MIG.1.sgy . ...Here we see the move commands above, go down a directory, move the file run.job, and execute it.cd kamik mv ../run.job . chmod +x run.job ./run.job- Attach the seismic lines in our new project and you should see our newly windowed seismic data.
- The final step is to get the horizon and fault picks for these segy files. We first need a list of the internal SeisX line names. We will use the script phase.pl to generate the report. Notice that perl is able to read the SeisX segy file with just a few lines of code:
ls *sgy > junk head junk 01kug35mig.mig.0.sgy 237pul98.MIG.0.sgy 249pul98.MIG.0.sgy 249pul98.MIG.1.sgy 249pul98.MIG.2.sgy ... ~ekeyser/perl/phase.pl > phase.lst head phase.lst External_File_Name Internal Format Samples SI Max_amp RMS_amp End_Y End_X Phase 01kug35mig.mig.0.sgy 01KUG-35 3 750 4 3.28e+04 9.52e+03 925 0 0.0 237pul98.MIG.0.sgy 237 3 1500 4 22992.4 6220.5 653 0 0.0 249pul98.MIG.0.sgy 249 3 1500 4 21355.7 6082.6 481 0 0.0 ...- Final step is to copy the faults and picks
cd /dat/photon/p007042/Mac cp /dat/photon/p007042/Mac/2d/Process/kamik/phase.lst . cp /dat/photon/p007042/Mackdelta/faults.index . awk '{printf("cp -f /dat/photon/p007042/Mackdelta/%s*fault .\n",$2)}' < phase.lst > run.job chmod +x run.job ./run.job cp /dat/photon/p007042/Mackdelta/picks.index . awk '{printf("cp -f /dat/photon/p007042/Mackdelta/%s*pick .\n",$2)}' < phase.lst > run.job chmod +x run.job ./run.jobCheck 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.00Notice 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.
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.
X Coordinate -- Zero's 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 = 6248We 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 = 1319Our 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.01When 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 finiThe 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.1If 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
- Log into sun291 with the local userid guest_sx and password ********
- Open an xterm by typing
% xterm &in the console window- Go to the user_support35 directory
{27} sun291:/local/guest_sx/user_support35 % pwd /local/guest_sx/user_support35 {28} sun291:/local/guest_sx/user_support35 % ls -al .p* -rw-rw-r-- 1 guest_sx expl 257 Dec 20 08:55 .proj.lst_v3.00 -rw-rw-r-- 1 guest_sx expl 332 Dec 20 08:50 .proj.lst_v3.00.alan -rw-rw-r-- 1 guest_sx expl 257 Sep 20 11:19 .proj.lst_v3.00.norm {29} sun291:/local/guest_sx/user_support35 %- Copy the appropriate .proj file to .proj.lst_v3.00. This will ensure that alan cannot see norm and the reverse is true.
- Start seisx using the very limited posse menu by right clicking the mouse button.
Pan Canadian Standards -- Howto access the 32bit clean SeisX segy
Organize projects by userid, ie, my projects are all under /dat/photon6/p007042We 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/photon10The 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.listhere 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 p99257Select 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 ./runNow edit the file new.all to refine your list of lineshead 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.sgyNow set up the links using the firstnlast.ak awk scriptawk -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.sgyMake 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.
- Create the following directories new directories under the project directory
- 2d - store all 2d seisx segy
- 3d - store all 3d seisx segy
- asc - store culture, well asc
- Wells/las - to store the las files
- 2DSegy names - Use reference number for internal name. The external name should use the full PCP name ie:
36700.PCP-GH-910345.mig1.1096.cgg.MIG.0.sgy 39820.PCP-NOR-940339.19130148.f05.MIG.0.sgy 36701.PCP-GH-910340.UNFMIG.SP480D1.stack.MIG.0.sgy 39856.PCP-CAP-940237.mig1.0499.sgl.MIG.0.sgy 36702.PCP-GH-910339.UNFMIG.SP480D1.stack.MIG.0.sgy 39866.PCP-NOR-D2.FILTSTR.0937.STR.0.sgy32 bit SeisX segy is store under /dat/photon8/2d. The SeisX history line contains the external name./dat/photon8/2d/90/96954.PS-GECO-JP-13.MIG.0.sgy /dat/photon8/2d/90/96955.CH-CH-49.f-mig.072001.gox.MIG.0.sgy /dat/photon8/2d/90/96956.CH-VER-51YB.f-mig.072001.gox.MIG.0.sgy /dat/photon8/2d/90/96957.CH-CH-54Y.f-mig.072001.gox.MIG.0.sgy- 3D The external name uses the full PCP name and the Area Name
/dat/photon5/3d/90/93520.BERRY_01.EQE-DX-013D-99.f-ma-mig.012001.ksp.MIG.0.indx /dat/photon5/3d/90/93520.BERRY_01.EQE-DX-013D-99.f-ma-mig.012001.ksp.MIG.0.sgy 39795.WAYNE_94.PCP-CAP-943D-42.f-zd-mig.121994.gox.MIG.0.indx 39795.WAYNE_94.PCP-CAP-943D-42.f-zd-mig.121994.gox.MIG.0.sgy 39796.BASHAW_EAST_94.PCP-SS-943D-27.f-zd-mig.031995.ver.MIG.0.indx 39796.BASHAW_EAST_94.PCP-SS-943D-27.f-zd-mig.031995.ver.MIG.0.sgyThe 32 bit SeisX segy is store at /dat/photon5/3dThe 16bit SeisX segy is store under /dat/photon7/3d16
/dat/photon7/3d16/20/29159.HALKIRK_88.PCP-NOR-883D-04.f-mig.041988.gox.MIG.0.sgy /dat/photon7/3d16/20/29163.ALDERSON_87.PCP-EG-873D-05.f-mig.021988.ver.MIG.0.indx /dat/photon7/3d16/20/29163.ALDERSON_87.PCP-EG-873D-05.f-mig.021988.ver.MIG.0.sgy /dat/photon7/3d16/20/29165.PARFLESH_87.PCP-VER-873D-06.f-mch-str.071992.ver.STK.0.cube_1- Use unix links to access these data to save space. You can shorten the name if you prefer, the SeisX help desk is happier with this! ln -s /dat/photon7/3d16/20/29204.ROCKYFORD_88.PCP-PR-883D-09.fm1.0697.egs.MIG.0.indx 29204.ROCKYFORD_88.PCP-PR-883D-09.fm1.06 97.egs.MIG.0.indx
ln -s /dat/photon7/3d16/20/29204.ROCKYFORD_88.PCP-PR-883D-09.fm1.0697.egs.MIG.0.sgy 29204.ROCKYFORD_88.PCP-PR-883D-09.fm1.069 7.egs.MIG.0.sgy
Posted Tops bug
Make sure there is not a blank space before a top specification in Well Posting Attributes with map postingReset 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
- Check Seismic Display Attributes the "Horizon Display Mode" and see if it has been set to off. You will probably want to set it to "thick". If you just looked at time slices, the horizons are automatically turned off to speed up the display.
- Check "Horizon" "Set Displayed Horizon" to see if your horizons are in the Visible Dialog box.
SeisX stops Working
- Switch projects and come back in and see if that fixes the problem
- Exit the program and come back in
- Exit, logoff
- Exit, re boot
- Rebuild the project, salvaging your interpretation
HOWTO Rebuild your project
- First create a new project, create the following directories:
{40} sbM01:/local/scratch/sx200 % mkdir 2d {41} sbM01:/local/scratch/sx200 % mkdir 3d {42} sbM01:/local/scratch/sx200 % mkdir asc- Copy the *.sgy files to the 2d and 3d directories, copy the well locations files to asc and the log files to a directory called asc/las
- Copy the static shift files, the picks.index and the *.pick. You may also want to copy over your pointfiles (arbitrary lines)
- Edit the culture.dat to point SeisX to the correct culture file. Here is the unix command to change the directory path of the culture.dat, project.history and map.pha files
:%s#/home17/e006452/Seisx/pek/#/dat/photon6/p007042/project_name/#g head -15 culture.dat # Photon Systems ASCII Format v1.0 struct CultureEntry { Name File Visibility IsLocked Scale } CultureEntry "3Doutline_utm12" "/home17/e006452/Seisx/pek/3Doutline_utm12.cult" On No 513000.00 CultureEntry "poly" "/home17/e006452/Seisx/pek/poly.cult" On No 513000.00 CultureEntry "Section" "/home17/e006452/Seisx/pek/Section.cult" On No 513000.00 CultureEntry "River" "/home17/e006452/Seisx/pek/River.cult" On No 513000.00 CultureEntry "TWP" "/home17/e006452/Seisx/pek/TWP.cult" On No 513000.00 CultureEntry "Lakes" "/home17/e006452/Seisx/pek/Lakes.cult" On No 513000.00- Blow away the project.history and map.pha and re attach the seismic (or edit and correct the paths in these files)
head project.history /dat/photon4/gek/pek/3d/29204.ROCKYFORD_88.PCP-PR-883D-09.fm1.0697.egs.MIG /apps/paradigm/PG00/PG99/seisx_support/segy_v3.fmt /dat/photon4/gek/pek/3d/35401.HAMMERHILL_90.PCP-CGG-903D-03.f-mig.041996.gox.MIG /apps/paradigm/PG00/PG99/seisx_support/segy_v3.fmt /dat/photon4/gek/pek/3d/35469.ROCKYFORD_90.PCP-CGG-903D-04.f-mch-mig.011993.ver.MIG /apps/paradigm/PG00/PG99/seisx_support/segy_v3.fmt more map.pha FILE_REC "87092" "/auto/fs63/ekeyser/seisx/mac_all/2d/A10118.ESSO-CA-87092-89.27927.1157-1460.esso89.mig.MIG.0.sgy"HOWTO build a project
- "Project", "Attach / Create Project", define project name, the directory where the data are going to be located and Project Description, press the "Create New Project" button.
My Seismic disappeared
- Check "Horizon", "Horizon Flattening" to see if you are trying to flatten an horizon that does not exist on your display.
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:
- Guide
- Auto
- H -- Select a horizon
- Arrows scroll the window
- Ctrl G -- Guide
- Ctrl A -- Auto
- / -- Toggle erase mode
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