DESCRIPTION:
Before setting geometry, applying signal enhancement, and further processing, it is necessary to edit the incorrect traces and to kill bad traces. If any, the content of incorrect polarity and bad traces can be obtained from observer log or done manually from trace display observation.
The objective of trace editing is to correct bad traces to be good traces. In this stage, we will eliminate the “misfire” records, delete auxiliary traces, reverse incorrect trace polarity (if any), and kill dead traces (if any) from previously processed data. Thus, we may obtain decent data to be used for the next processing stage.
Author : Henry Mulana Nainggolan
Date : May 4th, 2014
Before setting geometry, applying signal enhancement, and further processing, it is necessary to edit the incorrect traces and to kill bad traces. If any, the content of incorrect polarity and bad traces can be obtained from observer log or done manually from trace display observation.
The objective of trace editing is to correct bad traces to be good traces. In this stage, we will eliminate the “misfire” records, delete auxiliary traces, reverse incorrect trace polarity (if any), and kill dead traces (if any) from previously processed data. Thus, we may obtain decent data to be used for the next processing stage.
Author : Henry Mulana Nainggolan
Date : May 4th, 2014
BASIC THEORY:
Seismic trace represents the signal as the response of the elastic wavefield to velocity and density contrasts across interfaces of sediments as energy (seismic wave), travels from a source (air gun) through subsurface to receiver.
Figure-1.Simple schematic of seismic acquisition. A seimic trace generated by convolving a source wavelet from the airguns (towed by the ship) with observed seismic time series (reflectivity) recorded by a towed hydrophone array.
The reflection signals are impulses with amplitudes equal to reflection coefficients of the horizons and to their two-way reflection times. Ideally, the convolutional model states that all seismic traces are the result of convolving (summing) the source wavelet with the reflection coefficient series. Vice versa, the seismic processing procedure designed to compress the source wavelet to the desired wavelet is deconvolution. More details could be done on Gadallah and Fisher (2009), “Exploration Geophysics” or Steven Henry (1997), “Catch the (Seismic) Wavelet”.
Let the input pulse or source wavelet be denoted by w(t) and the impulse response of the earth denoted by r(t); the convolutional model is adopted to describe the response at the hydrophone s(t) with the expression: s(t) = w(t) * r(t).
Seismic trace represents the signal as the response of the elastic wavefield to velocity and density contrasts across interfaces of sediments as energy (seismic wave), travels from a source (air gun) through subsurface to receiver.
Figure-1.Simple schematic of seismic acquisition. A seimic trace generated by convolving a source wavelet from the airguns (towed by the ship) with observed seismic time series (reflectivity) recorded by a towed hydrophone array.
The reflection signals are impulses with amplitudes equal to reflection coefficients of the horizons and to their two-way reflection times. Ideally, the convolutional model states that all seismic traces are the result of convolving (summing) the source wavelet with the reflection coefficient series. Vice versa, the seismic processing procedure designed to compress the source wavelet to the desired wavelet is deconvolution. More details could be done on Gadallah and Fisher (2009), “Exploration Geophysics” or Steven Henry (1997), “Catch the (Seismic) Wavelet”.
Let the input pulse or source wavelet be denoted by w(t) and the impulse response of the earth denoted by r(t); the convolutional model is adopted to describe the response at the hydrophone s(t) with the expression: s(t) = w(t) * r(t).
Figure-2.Convolutional model between input signature (source wavelet) with reflectivity to describe a seismic trace.
However, a seismic trace as the convolution of the input signature with the reflectivity function of the earth impulse response, including source signature, recording filter, surface reflections, and hydrophone response has primary reflections (signals), multiples, and all types of noise. Signals are flowers, while noises are weeds.
Seismic trace can be described equally well as time series (amplitude vs. time), amplitude spectrum (amplitude vs. frequency), and phase spectrum (phase vs. frequency). A wavelet is a term used to describe a short time series which can be used to represent the source function in the time domain or in the frequency domain as an amplitude or phase spectrum.
Seismic trace can be described equally well as time series (amplitude vs. time), amplitude spectrum (amplitude vs. frequency), and phase spectrum (phase vs. frequency). A wavelet is a term used to describe a short time series which can be used to represent the source function in the time domain or in the frequency domain as an amplitude or phase spectrum.
Figure-3.Time and frequency domain of seismic trace, a. time domain wavelet, b. amplitude spectrum, and c.phase spectrum. Courtesy Gadallah and Fisher (2009), “Exploration Geophysics”.
The dominant period (τc)
of the response corresponds to the time from one peak to the next or from one
trough to the next. The reciprocal of this dominant period is a measure of the
dominant frequency (fc) of the signal or wavelet spectrum (fc=1/τc).
The reciprocal of the half-width of the response-envelop (τB)
provides an estimate of the bandwidth (fB) of the signal spectrum (fB=1/τB).
Figure-4.Dominant bandwidth and frequency dominant of frequency spectra. Courtesy Hilterman, 1985.
Phase is a description of the
motion of, or means of comparison of, periodic waves such as seismic waves,
described by the angular difference between them, such as, “180 degrees out of
phase” (R.E. Sheriff, Encyclopedic
Dictionary of Exploration Geophysics).
Minimum-phase wavelet has the
maximum amount of energy in first peak or trough and wavelet starts at the
boundary. While zero-phase is symmetric wavelet and has maximum energy at boundary.
Commonly practised in seismic exploration, non-zero-phase wavelets are
converted to zero-phase wavelets to achieve the best resolution on the seismic
data. That is why we go for minimum phase wavelet and during processing it can
be converted into zero phase.
Figure-5.Minimum phase wavelet with frequency spectrum and phase spectrum (Top), Zero phase wavelet with frequency spectrum and phase spectrum (Bottom).
Polarity is the way in which seismic trace data is recorded and displayed. There are two types of wavelet polarity, they are normal polarity and reverse polarity. Reverse polarity can also be described as shifted of 180 degrees from normal polarity. A polarity standard, enunciated by the SEG is normal polarity. Polarity standards are not specified for wavelets other than minimum-phase or zero-phase wavelet.
Figure-7.SEG
standard wavelet polarity (Sheriff, 2001)
Polarity of reflected wave depends on sign of reflection coefficient. Polarity can be checked by observing the nature of the reflection from an reflection coefficient (RC).
The seabed reflector can be a good polarity indicator. SEG normal polarity has compressional waves from positive reflection coefficient (+RC boundaries) recorded as negative number on tape (storage) and displayed as central peak for
zero phase wavelet.
Adopted by the SEG, polarity reversal (dim spot) or phase change is a local amplitude seismic attribute anomaly that can indicate the presence of hydrocarbons and is therefore known as a direct hydrocarbon indicator (DHI). This changes the acoustic impedance contrast from an increase to a decrease, resulting in the polarity of the seismic response being reversed.
INPUT & OUTPUT DATA:
INDATA : raw data in SU format (data_raw.su )
OUTDATA : edited data in SU format (data_edit.su)
COMMANDS & PARAMETERS:
The trace editing steps are:
* Put the data input (e.g., data_raw.su) and source code 02.edit.sh into project directory.
* Open the source code 02.edit.sh by using text editor in Red Hat Linux or Ubuntu.
* Set DATADIR for project directory (line-7), in where the seismic datasets are located.
INDATA : raw data in SU format (data_raw.su )
OUTDATA : edited data in SU format (data_edit.su)
COMMANDS & PARAMETERS:
The trace editing steps are:
* Put the data input (e.g., data_raw.su) and source code 02.edit.sh into project directory.
* Open the source code 02.edit.sh by using text editor in Red Hat Linux or Ubuntu.
* Set DATADIR for project directory (line-7), in where the seismic datasets are located.
* Define INDATA and OUTDATA (line-10 & 11).
* Run the command in terminal: sh 02.edit.
* The terminal will have two choices: 1. Do killing bad records and 2. Don't kill bad records. Type 1 to kill bad records (fldr).
* Insert the first and last good record (fldr) numbers to be used. Apart of this range will be deleted.
* The process will automatically deleted auxiliary traces by setting minimum trid=1.
* Then the terminal will have two choices: 1. Do editing the reversed trace polarity and 2. Don’t edit the reversed trace polarity. Type 1 if we want to edit reversed trace polarity.
* Insert a trace numbers (tracf) to edit the reversed trace polarity.
* The final step, the terminal will have two choices: 1.Kill bad trace and 2. Don’t kill bad trace. Type 1 if we want to kill bad records.
* Insert a trace number (tracf) that are going to be killed, then insert number (amount) of trace.
* Run the command in terminal: sh 02.edit.
* The terminal will have two choices: 1. Do killing bad records and 2. Don't kill bad records. Type 1 to kill bad records (fldr).
* Insert the first and last good record (fldr) numbers to be used. Apart of this range will be deleted.
* The process will automatically deleted auxiliary traces by setting minimum trid=1.
* Then the terminal will have two choices: 1. Do editing the reversed trace polarity and 2. Don’t edit the reversed trace polarity. Type 1 if we want to edit reversed trace polarity.
* Insert a trace numbers (tracf) to edit the reversed trace polarity.
* The final step, the terminal will have two choices: 1.Kill bad trace and 2. Don’t kill bad trace. Type 1 if we want to kill bad records.
* Insert a trace number (tracf) that are going to be killed, then insert number (amount) of trace.
The mandatory SU commands with
required parameters in source code 02.edit.sh are as follow.
suwind < $INDATA key=fldr
min=$fldr_start max=$fldr_end > junk1.su
SU command to select minimum and maximum field record
with a keyword “fldr” from an input data (INDATA). This command is used to
rejected the bad records in outside of parameters minimum
fldr ($fldr_start) – maximum
fldr ($fldr_end). The ouput of this command is junk1.su,
then will be used into next process.
suwind < junk1.su key=trid min=1
> junk2.su
SU command to select minimum trace identification code
with a keyword “trid” from input data junk1.su.
This command is used to deleted the auxiliary traces by setting minimum trid=1
to the output data junk2.su.
suwind < junk2.su key=tracf max=0
accept=$revtrace > junk3.su
SU command to select trace number with a keyword “tracf”from
data junk2.su. The parameter “accept=$revtrace” means
that only reversed trace polarity or $revtrace from
tracf will be taken as output data junk3.su.
suop < junk3.su op=neg >
junk4.su
SU command to change the reversed trace with a arithmetic
operation “op=neg” from reversed trace polarity (junk3.su) . The parameter “op=neg” multiplies -1 to the reversed trace data,
thus the polarity will be changed to the output data junk4.su.
suwind < junk2.su key=tracf
reject=$revtrace > junk5.su
SU command to select trace number with a keyword “tracf”from
data junk2.su. The parameter “reject=$revtrace” means
that apart of the reversed trace polarity or $revtrace
from tracf will be taken as good traces for the output data junk5.su.
cat junk5.su junk4.su > junk6.su
A command to combine good
traces junk5.su with edited trace junk4.su into junk6.su.
susort < junk6.su fldr tracf >
junk7.su
SU command to sort trace with first keyword “fldr” and
second keyword “tracf”. This command is used to sort field record (fldr) of
data junk6.su into ascending order to the ouput data junk7.su.
suwind < junk7.su key=tracf max=0
accept=$killtrace > junk8.su
SU command to select trace number with a keyword
“tracf”from data junk8.su. The parameter “accept=$killtrace”
means that only bad trace(s) or $killtrace from
tracf will be taken as output data junk8.su.
sukill < junk8.su min=1
count=$ntrace > junk9.su
SU command to kill selected bad trace(s) from data junk8.su.
Parameter “count=$ntrace” means the number of trace(s)
or how many trace(s) that are going to be killed.
suwind < junk7.su key=tracf
reject=$killtrace > junk10.su
SU command to select trace number with a keyword
“tracf”from data junk7.su. The parameter “reject=$killtrace”
means that apart of the bad trace(s) or $killtrace
from tracf will be take as good traces for output data junk10.su.
cat junk10.su junk9.su > junk11.su
A command to combine good
traces junk10.su with edited trace junk9.su into junk11.su.
susort < junk11.su fldr tracf >
$OUTDATA
SU command to sort trace with first keyword “fldr” and
second keyword “tracf”. This command is used to sort field record (fldr) from
data junk11.su into ascending order with ouput data OUTDATA.
Below are additional SU
commands with required parameters in source code 02.edit.sh.
fldr_start=`sugethw < $INDATA output=geom
key=fldr | sort -n | head -1 | awk '{print $1}'`
SU command to get original field record numbers defined
by key word “fldr” in geom or ASCII output (not binary), all values are normal sorted
(min-max), then a first value is selected and written as a first field record
number.
fldr_end=`sugethw < $INDATA output=geom
key=fldr | sort -n | tail -1 | awk '{print $1}'`
SU command to get original field record numbers defined
by key word “fldr” in geom or ASCII output (not binary), all values are normal
sorted (min-max), then a last value is selected and written as a last field
record number.
mintracf=`sugethw < $INDATA
output=geom key=tracf | sort -n | head -1 | awk '{print $1}'`
SU command to get trace numbers defined by key word “tracf”
in geom or ASCII output (not binary), all values are normal sorted (min-max),
then a first value is selected and written as a first trace number.
maxtracf=`sugethw < $INDATA
output=geom key=tracf | sort -n | tail -1 | awk '{print $1}'`
SU command to get trace numbers defined by key word “tracfr”
in geom or ASCII output (not binary), all values are normal sorted (min-max),
then a last value is selected and written as a last trace number.
surange < $OUTDATA
SU command to get minimum and maximum range for trace
header values of output data (OUTDATA). This SU command is very necessary to
view QC output data and to compare or to view changes from input data with
output data. Therefore, this will be used for every processing stage in Seismic
Unix.
Note: ` is different type with
'.
PRINT OUT:
Figure-8.FFID 98-101 showing raw data from near field records which consist of 3 “misfire” records (FFID 98-100) and 2 auxiliary traces per record.
Figure-9.FFID 101-104 showing edited data from near field records after editing (deleted “misfire” FFID 98-100 and 2 auxiliary traces per record).
Figure-10.FFID 2189-2192 showing raw data from far field records which consist of 3 “misfire” records (FFID 2190-2192) and 2 auxiliary traces per record.
Figure-11.FFID 2186-2189 showing edited data from far field records after editing (deleted “misfire” FFID 2190-2192 and 2 auxiliary traces per record).
200544 traces:
tracl 297 205016 (297 - 205016)
tracr 297 205016 (297 - 205016)
fldr 101 2189 (101 - 2189)
tracf 1 96 (1 - 96)
ep 101 2189 (101 - 2189)
cdpt 3 98 (3 - 98)
trid 1
nhs 1
ns 3201
dt 1000
gain 3
afilf 400
afils 370
lcf 5
hcf 400
lcs 12
hcs 370
year 2013
tracl 297 205016 (297 - 205016)
tracr 297 205016 (297 - 205016)
fldr 101 2189 (101 - 2189)
tracf 1 96 (1 - 96)
ep 101 2189 (101 - 2189)
cdpt 3 98 (3 - 98)
trid 1
nhs 1
ns 3201
dt 1000
gain 3
afilf 400
afils 370
lcf 5
hcf 400
lcs 12
hcs 370
year 2013
Number of trace per record has been changed to be 96 traces (tracf=1 to 96), without the auxiliary traces. Number of record has also been changed to be 2089 (fldr=101 to 2189), that without “misfire” records (fldr=98,99,100,2189,2191, and 2192). No reversed trace(s) polarity and bad trace(s) within this data. Therefore, total number of Trace Data within this data is 200544, equals with number of record (2089) x number of trace per record (96). These are suitable with parameter of survey design.
Source coordinates (sx & sy), group coordinates (gx & gy), scalar coordinate (scalco), coordinate unit (counit), and cdp will be computed in next processing stage (Part3: Geometry Setting, *will be continued soon*).
Source coordinates (sx & sy), group coordinates (gx & gy), scalar coordinate (scalco), coordinate unit (counit), and cdp will be computed in next processing stage (Part3: Geometry Setting, *will be continued soon*).
SOURCE CODE:
#!/bin/sh
# filename: 02.edit.sh
# filename: 02.edit.sh
# KILL AUXILIARY (SOURCE SIGNATURE),
EDIT REVERSE POLARITY & KILL BAD TRACE (IF ANY)
# Created by geophenry124
# Set directory
DATADIR=/media/Data/data/marine
# Define input-output data
INDATA=$DATADIR/data_raw.su
OUTDATA=$DATADIR/data_edit.su
# PROCESS 2: TRACE EDIT
echo "PROCESS 2: TRACE
EDIT"
echo ""
printf "Job started
`todays_date` at `time_now` \n"
echo ""
#===============================================================================
# View range of header values
echo "Range of header values for
$INDATA:"
surange < $INDATA
echo ""
# Get header info
echo "Check the first field
record..."
fldr_start=`sugethw < $INDATA
output=geom key=fldr | sort -n | head -1 | awk '{print $1}'`
echo "First field file id (FFID)
= $fldr_start"
echo "Check the last field
record..."
fldr_end=`sugethw < $INDATA
output=geom key=fldr | sort -n | tail -1 | awk '{print $1}'`
echo "Last field file id (FFID)
= $fldr_end"
nshot=`bc -l <<END
$fldr_end - $fldr_start + 1
END`
echo "Number of FFID =
$nshot"
echo ""
# Set field record number (min-max)
to view QC of the first & last FFID
min1=$fldr_start
max1=`bc -l <<END
$min1 + 3
END`
min2=`bc -l <<END
$fldr_end - 3
END`
max2=$fldr_end
# Checking near and far trace
echo "Checking near and far
trace..."
mintracf=`sugethw < $INDATA
output=geom key=tracf | sort -n | head -1 | awk '{print $1}'`
echo "Near trace =
$mintracf"
maxtracf=`sugethw < $INDATA
output=geom key=tracf | sort -n | tail -1 | awk '{print $1}'`
echo "Far trace =
$maxtracf"
echo ""
# Display QC field record before
editing
suwind < $INDATA key=fldr
min=$min1 max=$max1 | suxwigb perc=95 label1="Time (s)"
\
label2="Trace No." windowtitle="QC FFID
$min1-$max1-Before Editing" \
title="QC FFID $min1-$max1-Before
Editing" &
suwind < $INDATA key=fldr min=$min2
max=$max2 | suxwigb perc=95 label1="Time (s)" \
label2="Trace
No." windowtitle="QC FFID
$min2-$max2-Before Editing" \
title="QC FFID $min2-$max2-Before
Editing" &
# Print out QC field record before
editing
suwind < $INDATA key=fldr
min=$min1 max=$max1 | supswigb perc=95 label1="Time (s)"
\
label2="Trace No." title="Raw Data-FFID
$min1-$max1" wbox=20 hbox=15 \
verbose=0 >
02.Editing-QC_First_Shot_Before_Editing.eps &
suwind < $INDATA key=fldr
min=$min2 max=$max2 | supswigb perc=95 label1="Time (s)" \
label2="Trace
No." title="Raw Data-FFID
$min2-$max2" wbox=20 hbox=15 \
verbose=0 >
02.Editing-QC_Last_Shot_Before_Editing.eps &
#===============================================================================
# STEP 1: KILL BAD RECORDS &
AUXILIARY TRACES (SOURCE SIGNATURES)
echo "STEP 1: KILL AUXILIARY
TRACES (SOURCE SIGNATURES) & BAD RECORDS"
echo ""
echo "Please select: Do or Don't
kill bad records"
option=
echo "Choose option:"
echo "1. Do killing bad
records"
echo "2. Don't kill bad
records"
echo "*press Enter to
exit*"
echo -n "Insert the option (1 or
2):"
read option
case $option in
"1")
echo "Your option is: Do killing bad records"
echo ""
echo "Please select the first and
last FFID (good records) to be used"
fldr_start=
echo "Insert first FFID:"
echo -n "First FFID:"
read fldr_start
fldr_end=
echo "Insert last FFID:"
echo -n "Last FFID:"
read fldr_end
echo ""
echo "Kill the bad field file id
(FFID)...."
# Kill the bad field file id (FFID)
suwind < $INDATA key=fldr
min=$fldr_start max=$fldr_end > junk1.su
;;
"2")
echo "Your option is: Don't kill bad records"
mv $INDATA junk1.su ;;
*) exit 1 ;;
esac
echo ""
echo "Checking source signature
(auxiliary trace)...."
# Kill source signature (auxiliary
trace)
echo "Process to kill source
signature (auxiliary trace), please wait..."
suwind < junk1.su key=trid min=1
> junk2.su
echo "Source signatures
(auxiliary traces) have been deleted..."
echo ""
# View a new range of header values
echo "Range of new header
values:"
surange < junk2.su
echo ""
# Get new header info
echo "Check the new first field
record..."
fldr_start=`sugethw < junk2.su
output=geom key=fldr | sort -n | head -1 | awk '{print $1}'`
echo "New first field file id
(FFID) = $fldr_start"
echo "Check the new last field
record..."
fldr_end=`sugethw < junk2.su
output=geom key=fldr | sort -n | tail -1 | awk '{print $1}'`
echo "New last field file id
(FFID) = $fldr_end"
nshot=`bc -l <<END
$fldr_end - $fldr_start + 1
END`
echo "New number of FFID =
$nshot"
echo ""
# Set the new field record number
(min-max) to view QC of the first & last FFID
min1=$fldr_start
max1=`bc -l <<END
$min1 + 3
END`
min2=`bc -l <<END
$fldr_end - 3
END`
max2=$fldr_end
# Display QC field record after
killing bad records & source signatures (auxiliary trace)
echo "Display QC field record
after killing bad records & source signatures (auxiliary trace)..."
suwind < junk2.su key=fldr
min=$min1 max=$max1 | suxwigb perc=95 label1="Time (s)"
\
label2="Trace No." windowtitle="QC FFID
$min1-$max1" \
title="QC FFID $min1-$max1-After Killing Bad Records
& Source Signatures" &
suwind < junk2.su key=fldr
min=$min2 max=$max2 | suxwigb perc=95 label1="Time (s)"
\
label2="Trace No." windowtitle="QC FFID
$min2-$max2" \
title="QC FFID $min2-$max2-After Killing Bad Records
& Source Signatures" &
echo ""
echo "Finish..."
#===============================================================================
# STEP 2: EDIT THE REVERSE POLARITY
TRACE
echo ""
echo "STEP 2: EDIT THE REVERSE
POLARITY TRACE"
echo ""
echo "Please select: Do or Don't
edit the reversed polarity trace"
option=
echo "Choose option:"
echo "1. Do editing the reversed
polarity trace"
echo "2. Don't edit the reversed
polarity trace"
echo "*press Enter to
exit*"
echo -n "Insert the option (1 or
2):"
read option
case $option in
"1")
echo "Your option is: Do editing the reversed polarity trace"
echo ""
echo "*Define trace number(tracf)
that are going to be reversed*"
revtrace=
echo "Please insert trace
number(tracf) that are going to be reversed"
echo -n "Trace number(tracf):"
read revtrace
echo "Trace number(tracf):$revtrace
is going to be reversed"
#
Select traces that are going to be reversed
echo
"Correcting the reversed polarity trace $revtrace, please wait..."
suwind
< junk2.su key=tracf max=0 accept=$revtrace > junk3.su
#
Correct reversed traces
suop
< junk3.su op=neg > junk4.su
#
Select traces that are NOT going to be reversed
suwind
< junk2.su key=tracf reject=$revtrace > junk5.su
#
Combine and sort good and corrected traces
cat
junk5.su junk4.su > junk6.su
susort
< junk6.su fldr tracf > junk7.su
#
Display QC shot gathers after editing the reversed polarity trace
echo
"Display QC shot before & after editing the reversed polarity
trace.."
suwind
< junk7.su key=fldr min=$min1 max=$max1 | suxwigb perc=95 \
label1="Time
(s)" label2="Trace No."\
windowtitle="Corrected
Reverse Polarity Trace $revtrace" \
title="FFID $min1-$max1" &
# Housekeeping
rm junk1.su junk2.su junk3.su
junk4.su junk5.su junk6.su ;;
"2")
echo "Your option is: Don't edit the reversed polarity trace"
mv junk2.su junk7.su ;;
*) exit 1 ;;
esac
# View a new range of header values
echo "Range of new header
values:"
surange < junk7.su
echo "Finish..."
#===============================================================================
# STEP 3: KILL BAD TRACE
echo ""
echo "STEP 3: KILL BAD
TRACE"
echo ""
echo "Please select: Do or Don't
kill bad trace"
option=
echo "Choose option:"
echo "1. Kill bad trace"
echo "2. Don't kill bad
trace"
echo "*press Enter to
exit*"
echo -n "Insert the option (1 or
2):"
read option
case $option in
"1")
echo "Your option is: Kill bad trace"
echo ""
echo "*Define trace number(tracf)
that are going to be killed*"
killtrace=
echo "Please insert trace
number(tracf) that are going to be killed"
echo -n "Trace number(tracf):"
read killtrace
echo "Please insert amount of trace
(1-$nshot) that are going to be killed"
ntrace=
echo -n "Amount of trace
(1-$nshot):"
read ntrace
echo "$ntrace of trace
number(tracf):$killtrace is/are going to be killed"
#
Select traces that are going to be killed
echo
"Killing bad trace $killtrace, please wait..."
suwind
< junk7.su key=tracf max=0 accept=$killtrace > junk8.su
#
Kill bad traces
sukill
< junk8.su min=1 count=$ntrace > junk9.su
#
Select traces that are NOT going to be killed
suwind
< junk7.su key=tracf reject=$killtrace > junk10.su
#
Combine and sort good and killed traces
cat
junk10.su junk9.su > junk11.su
susort
< junk11.su fldr tracf > $OUTDATA
#
Display QC shot gathers after killing bad trace
echo
"Display QC shot gathers before & after killing bad trace.."
suwind
< $OUTDATA key=fldr min=$min1 max=$max1 | suxwigb perc=95 \
label1="Time
(s)" label2="Trace No." \
windowtitle="Killed
$ntrace of Bad Trace $killtrace" \
title="FFID $min1-$max1" &
# Housekeeping
rm junk7.su junk8.su junk9.su
junk10.su junk11.su ;;
"2")
echo "Your option is: Don't Don't kill bad trace"
mv junk7.su $OUTDATA ;;
*) exit 1 ;;
esac
echo ""
# View a new range of header values
echo "Range of header values for
$OUTDATA :"
surange < $OUTDATA
echo ""
# Print out QC field record before
editing
suwind < $OUTDATA key=fldr
min=$min1 max=$max1 | supswigb perc=95 label1="Time (s)"
\
label2="Trace No." title="Raw Data-FFID
$min1-$max1" wbox=20 hbox=15 \
verbose=0 >
02.Editing-QC_First_Shot_After_Editing.eps &
suwind < $OUTDATA key=fldr
min=$min2 max=$max2 | supswigb perc=95 label1="Time (s)"
\
label2="Trace No." title="Raw Data-FFID
$min2-$max2" wbox=20 hbox=15 \
verbose=0 >
02.Editing-QC_Last_Shot_After_Editing.eps &
printf "Job finished
`todays_date` at `time_now` \n"
echo "Finish..."
#===============================================================================
echo ""
echo "NEXT PROCESS: GEOMETRY
SETTING"
exit
0 comments:
Use these emoticons on your comment. :)) :)] ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} ~x( :-t b-( :-L x( =))
Post a Comment