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