DOCUMENTATION
SYNOPSIS
PERL PROGRAM NAME: SUINTERP - interpolate traces using automatic event picking
AUTHOR: Juan Lorenzo (Perl module only)
DATE: Dec 10 2013,
DESCRIPTION:
Version:
USE
NOTES
suinterp->su.h();
suinterp->segy.h();
suinterp->signal.h();
Examples
SEISMIC UNIX NOTES
SUINTERP - interpolate traces using automatic event picking
suinterp < stdin > stdout
ninterp=1 number of traces to output between each pair of input traces
nxmax=500 maximum number of input traces
freq1=4. starting corner frequency of unaliased range
freq2=20. ending corner frequency of unaliased range
deriv=0 =1 means take vertical derivative on pick section
(useful if interpolating velocities instead of seismic)
linear=0 =0 means use 8 point sinc temporal interpolation
=1 means use linear temporal interpolation
(useful if interpolating velocities instead of seismic)
lent=5 number of time samples to smooth for dip estimate
lenx=1 number of traces to smooth for dip estimate
lagc=400 number of ms agc for dip estimate
xopt=0 0 compute spatial derivative via FFT
(assumes input traces regularly spaced and relatively
noise-free)
1 compute spatial derivative via differences
(will work on irregulary spaced data)
iopt=0 0 = interpolate
1 = output low-pass model: useful for QC if interpolator failing
2 = output dip picks in units of samples/trace
verbose=0 verbose = 1 echoes information
tmpdir= if non-empty, use the value as a directory path
prefix for storing temporary files; else if the
the CWP_TMPDIR environment variable is set use
its value for the path; else use tmpfile()
Notes:
This program outputs 'ninterp' interpolated traces between each pair of
input traces. The values for lagc, freq1, and freq2 are only used for
event tracking. The output data will be full bandwidth with no agc. The
default parameters typically will do a satisfactory job of interpolation
for dips up to about 12 ms/trace. Using a larger value for freq2 causes
the algorithm to do a better job on the shallow dips, but to fail on the
steep dips. Only one dip is assumed at each time sample between each pair
of input traces.
The key assumption used here is that the low frequency data are unaliased
and can be used for event tracking. Those dip picks are used to interpolate
the original full-bandwidth data, giving some measure of interpolation
at higher frequencies which otherwise would be aliased. Using iopt equal
to 1 allows you to visually check whether the low-pass picking model is
aliased.
Trace headers for interpolated traces are not updated correctly.
The output header for an interpolated traces equals that for the preceding
trace in the original input data. The original input traces are passed
through this module without modification.
The place this code is most likely to fail is on the first breaks.
Example run: suplane | suinterp | suxwigb &
Credit: John Anderson (visiting scholar from Mobil) July 1994
Trace header fields accessed: ns, dt
CHANGES and their DATES
Version: 0.1
Juan Lorenzo 0.2 June 3, 2016 Juan lorenzo
Juan Lorenzo 0.3 July 11 2016 start adding
remaining options
sub Step
collects switches and assembles bash instructions by adding the program name
sub note
collects switches and assembles bash instructions by adding the program name
sub clear
sub deriv
sub fmax
same as freq2
sub freq1
sub freq2
sub iopt
sub lagc
sub lent
sub lenx
number of traces to smooth
sub linear
sub ninterp
How many new traces to create between each existing pair
sub num_new_traces2interp
same as ninterp
number of new traces
to crate between existant pairs
sub smooth_ntr
same as lenx
number of traces to smooth
sub nxmax
sub smooth_ns_t
same as lent
number of samples to smooth in time
sub tmpdir
sub update_num_traces
calculate if we know the original trace separation
.e.g. 2 m or 2 feet
input the original trace separation
return the update trace separation
estimate the new trace separation after interpolation
confirm that interpolation parameters exist
sub update_trace_separation
calculate if we know the original trace separation
e.g., 2 m or 2 feet
input the original trace separation
return the update trace separation
estimate the new trace separation after interpolation
confirm that interpolation parameters exist
When ninterp=1
and interpolation factor=1
print ("interpolated trace separation is $suinterp->{_update_trace_separation}\n\n");
print ("interpolation factor is $suinterp->{_interpolation_factor}\n\n");
sub verbose
sub xopt
sub get_max_index
max index = number of input variables -1