DOCUMENTATION

SYNOPSIS

PERL PROGRAM NAME:  SUXWIGB - X-windows Bit-mapped WIGgle plot of a segy data set		
AUTHOR: Juan Lorenzo (Perl module only)
DATE:   
DESCRIPTION:
Version: 

USE

NOTES

Examples

SEISMIC UNIX NOTES

 This program also can use XWIGB parameters (see below)

 SUXWIGB - X-windows Bit-mapped WIGgle plot of a segy data set		
 This is a modified suxwigb that uses the depth or coordinate scaling	
 when such values are used as keys.					

 suxwigb <stdin [optional parameters] | ...				

 Optional parameters:							
 key=(keyword)		if set, the values of x2 are set from header field
			specified by keyword				
 n2=tr.ntr or number of traces in the data set (ntr is an alias for n2)
 d1=tr.d1 or tr.dt/10^6	sampling interval in the fast dimension 
   =.004 for seismic		(if not set)				
   =1.0 for nonseismic		(if not set)				
 d2=tr.d2			sampling interval in the slow dimension 
   =1.0			(if not set)				
 f1=tr.f1 or tr.delrt/10^3 or 0.0  first sample in the fast dimension	
 f2=tr.f2 or tr.tracr or tr.tracl  first sample in the slow dimension	
   =1.0 for seismic		    (if not set)			
   =d2 for nonseismic		    (if not set)			

 style=seismic		 normal (axis 1 horizontal, axis 2 vertical) or 
			 vsp (same as normal with axis 2 reversed)	
			 Note: vsp requires use of a keyword		
 verbose=0              =1 to print some useful 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()	

 Note that for seismic time domain data, the "fast dimension" is	
 time and the "slow dimension" is usually trace number or range.	
 Also note that "foreign" data tapes may have something unexpected	
 in the d2,f2 fields, use segyclean to clear these if you can afford	
 the processing time or use d2= f2= to override the header values if	
 not.									

 If key=keyword is set, then the values of x2 are taken from the header
 field represented by the keyword (for example key=offset, will show	
 traces in true offset). This permit unequally spaced traces to be plotted.
 Type	 sukeyword -o	to see the complete list of SU keywords.	

 This program is really just a wrapper for the plotting program: xwigb	
 See the xwigb selfdoc for the remaining parameters.			


 Credits:

	CWP: Dave Hale and Zhiming Li (xwigb, etc.)
	   Jack Cohen and John Stockwell (suxwigb, etc.)
	Delphi: Alexander Koek, added support for irregularly spaced traces

	Modified by Brian Zook, Southwest Research Institute, to honor
	 scale factors, added vsp style

 Notes:
	When the number of traces isn't known, we need to count
	the traces for xwigb.  You can make this value "known"
	either by getparring n2 or by having the ntr field set
	in the trace header.  A getparred value takes precedence
	over the value in the trace header.

	When we must compute ntr, we don't allocate a 2-d array,
	but just content ourselves with copying trace by trace from
	the data "file" to the pipe into the plotting program.
	Although we could use tr.data, we allocate a trace buffer
	for code clarity.
	

This program also can use XWIGB parameters XWIGB - X WIGgle-trace plot of f(x1,x2) via Bitmap

 xwigb n1= [optional parameters] <binaryfile   	   

 X Functionality:							
 Button 1	Zoom with rubberband box				
 Button 2	Show mouse (x1,x2) coordinates while pressed		
 q or Q key	Quit							
 s key		Save current mouse (x1,x2) location to file		
 p or P key	Plot current window with pswigb (only from disk files)	
 a or page up keys		enhance clipping by 10%			
 c or page down keys		reduce clipping by 10%			
 up,down,left,right keys	move zoom window by half width/height	
 i or +(keypad) 		zoom in by factor 2 			
 o or -(keypad) 		zoom out by factor 2 			
    l 				lock the zoom while moving the coursor	
    u 				unlock the zoom 			
 1,2,...,9	Zoom/Move factor of the window size			

 Notes:								
	Reaching the window limits while moving within changes the zoom	
	factor in this direction. The use of zoom locking(l) disables it

 Required Parameters:							
 n1			 number of samples in 1st (fast) dimension	

 Optional Parameters:							
 d1=1.0		 sampling interval in 1st dimension		
 f1=0.0		 first sample in 1st dimension			
 n2=all		 number of samples in 2nd (slow) dimension	
 d2=1.0		 sampling interval in 2nd dimension		
 f2=0.0		 first sample in 2nd dimension			
 x2=f2,f2+d2,...	 array of sampled values in 2nd dimension	
 mpicks=/dev/tty	 file to save mouse picks in			
 bias=0.0		 data value corresponding to location along axis 2
 perc=100.0		 percentile for determining clip		
 clip=(perc percentile) data values < bias+clip and > bias-clip are clipped
 xcur=1.0		 wiggle excursion in traces corresponding to clip
 wt=1			 =0 for no wiggle-trace; =1 for wiggle-trace	
 va=1			 =0 for no variable-area; =1 for variable-area fill
                        =2 for variable area, solid/grey fill          
                        SHADING: 2<=va<=5  va=2 light grey, va=5 black 
 verbose=0		 =1 for info printed on stderr (0 for no info)	
 xbox=50		 x in pixels of upper left corner of window	
 ybox=50		 y in pixels of upper left corner of window	
 wbox=550		 width in pixels of window			
 hbox=700		 height in pixels of window			
 x1beg=x1min		 value at which axis 1 begins			
 x1end=x1max		 value at which axis 1 ends			
 d1num=0.0		 numbered tic interval on axis 1 (0.0 for automatic)
 f1num=x1min		 first numbered tic on axis 1 (used if d1num not 0.0)
 n1tic=1		 number of tics per numbered tic on axis 1	
 grid1=none		 grid lines on axis 1 - none, dot, dash, or solid
 x2beg=x2min		 value at which axis 2 begins			
 x2end=x2max		 value at which axis 2 ends			
 d2num=0.0		 numbered tic interval on axis 2 (0.0 for automatic)
 f2num=x2min		 first numbered tic on axis 2 (used if d2num not 0.0)
 n2tic=1		 number of tics per numbered tic on axis 2	
 grid2=none		 grid lines on axis 2 - none, dot, dash, or solid
 label2=		 label on axis 2				
 labelfont=Erg14	 font name for axes labels			
 title=		 title of plot					
 titlefont=Rom22	 font name for title				
 windowtitle=xwigb	 title on window				
 labelcolor=blue	 color for axes labels				
 titlecolor=red	 color for title				
 gridcolor=blue	 color for grid lines				
 style=seismic		 normal (axis 1 horizontal, axis 2 vertical) or 
			 seismic (axis 1 vertical, axis 2 horizontal)	
 endian=		 =0 little endian =1 big endian			
 interp=0		 no interpolation in display			
			 =1 use 8 point sinc interpolation		
 wigclip=0		 If 0, the plot box is expanded to accommodate	
			 the larger wiggles created by xcur>1.	If this 
			 flag is non-zero, the extra-large wiggles are	
			 are clipped at the boundary of the plot box.	
 plotfile=plotfile.ps   filename for interactive ploting (P)  		
 curve=curve1,curve2,...  file(s) containing points to draw curve(s)   
 npair=n1,n2,n2,...            number(s) of pairs in each file         
 curvecolor=color1,color2,...  color(s) for curve(s)                   

 Notes:								
 Xwigb will try to detect the endian value of the X-display and will	
 set it to the right value. If it gets obviously wrong information the 
 endian value will be set to the endian value of the machine that is	
 given at compile time as the value of CWPENDIAN defined in cwp.h	
 and set via the compile time flag ENDIANFLAG in Makefile.config.	

 The only time that you might want to change the value of the endian	
 variable is if you are viewing traces on a machine with a different	
 byte order than the machine you are creating the traces on AND if for 
 some reason the automaic detection of the display byte order fails.	
 Set endian to that of the machine you are viewing the traces on.	

 The interp flag is useful for making better quality wiggle trace for	
 making plots from screen dumps. However, this flag assumes that the	
 data are purely oscillatory. This option may not be appropriate for all
 data sets.								

 The curve file is an ascii file with the points specified as x1 x2    
 pairs, separated by a space, one pair to a line.  A "vector" of curve
 files and curve colors may be specified as curvefile=file1,file2,etc. 
 and curvecolor=color1,color2,etc, and the number of pairs of values   
 in each file as npair=npair1,npair2,... .                             


 Author:  Dave Hale, Colorado School of Mines, 08/09/90

 Endian stuff by: 
    Morten Wendell Pedersen, Aarhus University (visiting CSM, June 1995)
  & John Stockwell, Colorado School of Mines, 5 June 1995

 Stewart A. Levin, Mobil - Added ps print option
 John Stockwell - Added optional sinc interpolation
 Stewart A. Levin, Mobil - protect title, labels in pswigb call

 Brian J. Zook, SwRI - Added style=normal and wigclip flag

 Brian K. Macy, Phillips Petroleum, 11/27/98, added curve plotting option
 Curve plotting notes:
 MODIFIED:  P. Michaels, Boise State Univeristy  29 December 2000
            Added solid/grey color scheme for peaks/troughs
 
 G.Klein, IFG Kiel University, 2002-09-29, added cursor scrolling and
            interactive change of zoom and clipping.
          IFM-GEOMAR Kiel, 2004-03-12, added zoom locking 
          IFM-GEOMAR Kiel, 2004-03-25, interactive plotting fixed 	

CHANGES and their DATES

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

50 + 43 personalized  params
clear global variables from the memory

sub absclip

define min and max plotting values
define min and max plotting values

sub bclip

sub bias

G. Bonot 091718 Only shows data to the right (along axis 2) of each sample data value. Data accounts for the right side of waveform amplitude and is adjusted on input

sub box_X0

sub box_Y0

sub box_height

sub box_width

sub clip

define min and max plotting values

sub cmap define min and max plotting values

sub curve

sub curvecolor

sub curvefile

sub d1

increment in fast dimension
usually time and equal to dt

subs d1 and dt

increment in fast dimension
usually time and equal to dt 

sub dt_major_divisions

subs d1num, y_tick_increment dy_major_divisions dt_major_divisions

numbered tick increments along x axis 
usually in m and only for display 

Kenny Lau
16 Sept 2018
Changes the interval between ticks

subs trace_inc trace_inc_m, dx and d2

increment in fast dimension
usually time and equal to dt

    only the first trace is read in
    if an increment is not 1 between traces
    you should indicate here
    
    distance increment between traces

sub dy_major_divisions

subs d1num, y_tick_increment dy_major_divisions dt_major_divisions

numbered tick increments along x axis 
usually in m and only for display 

Kenny Lau
16 Sept 2018
Changes the interval between ticks

sub d1num

subs d1num, y_tick_increment dy_major_divisions dt_major_divisions

numbered tick increments along x axis 
usually in m and only for display 

Kenny Lau
16 Sept 2018
Changes the interval between ticks

subs trace_inc trace_inc_m, dx and d2

increment in fast dimension
usually time and equal to dt

    only the first trace is read in
    if an increment is not 1 between traces
    you should indicate here
    
    distance increment between traces

subs d2num dx_major_divisions and x_tick_increment

numbered tick increments along x axis 
usually in m and only for display

sub endian

subs f1, first_time_sample_value and first_y

value of the first sample tihat is used

sub f1num

subs f1num and first_time_tick_num

first number at the first tick

 Kenny Lau
16 Sept 2018
Changes the first number at the first tick

sub f2

subs f2 and first_distance_sample_value first_x

value of the first sample tihat is used

first value in the second dimension (X)

G. Bonot 091718
Shifts first sample data to right by amount input
i.e., f2=5 makes data befin at 5 on the x axis.

sub f2num subs f2num and first_distance_tick_num

first number at the first tick

GTL18
First number of x axis. Not incremental; only represents the 
single first vale. X- axis increments ( d2num not equal to 0)
must be created to use this feature; strictly for visual representation

subs f2 and first_distance_sample_value first_x

value of the first sample tihat is used

first value in the second dimension (X)

sub first_distance_tick_num subs f2num and first_distance_tick_num

first number at the first tick

GTL18
First number of x axis. Not incremental; only represents the 
single first vale. X- axis increments ( d2num not equal to 0)
must be created to use this feature; strictly for visual representation

subs f1, first_time_sample_value and first_y

value of the first sample tihat is used

sub first_time_tick_num

subs f1num and first_time_tick_num

first number at the first tick

 Kenny Lau
16 Sept 2018
Changes the first number at the first tick

subs f2 and first_distance_sample_value first_x

value of the first sample tihat is used

first value in the second dimension (X)

subs f1, first_time_sample_value and first_y

value of the first sample tihat is used

sub ftr

sub grid1

Kenny Lau
16 Sept 2018
Changes the type of line on the first axis

sub grid2

A. Sivil 091718
Adds grid lines above x axis as either a dot, dash or a solid line

sub gridcolor

sub hbox

sub headerword

sub header_word

sub hiclip

sub hi_clip

sub interp

sub key

sub label1

sub label2

A. Sivil 091718
Adds label above x axis in top-right corner

sub labelcolor

sub labelfont

A. Sivil 091718
Changes font for label

sub lo_clip

sub loclip

sub mpicks

G. Bonot 091718 Input a file name to which your mouse clicks are to be saved. No visible change observed in xwigb

sub n1

sub n1tic

subs n1tic and num_minor_ticks_betw_time_ticks

n1tic=1 number of minor ticks shwon between each
  of the numbered ticks on axis 1 (usually time and pointing down)
  
 Kenny Lau
16 Sept 2018
Breaks down one tick into X number of minor ticks 

sub n2

ssubs n2tic and num_minor_ticks_betw_distance_ticks

n2tic=1 number of minor ticks shwon between each
  of the numbered ticks on axis 1 (usually time and pointing down)

  A. Sivil 091718
  Adds minor ticks between each numbered tick on axis 1   

sub npair

ssubs n2tic and num_minor_ticks_betw_distance_ticks

n2tic=1 number of minor ticks shwon between each
  of the numbered ticks on axis 1 (usually time and pointing down)

  A. Sivil 091718
  Adds minor ticks between each numbered tick on axis 1   

sub num_minor_ticks_betw_time_ticks

subs n1tic and num_minor_ticks_betw_time_ticks

n1tic=1 number of minor ticks shwon between each
  of the numbered ticks on axis 1 (usually time and pointing down)
  
 Kenny Lau
16 Sept 2018
Breaks down one tick into X number of minor ticks 

sub orientation

seismic style of plotting (time axis pointing down)
versus mathematical ( y axis up)

sub perc

sub percent

sub picks

automatically generates a pick file

sub plotfile

sub shading plot data using a variable area scheme also sub shading Rachel Gnieski 091718 Plot data using a variable area scheme: Should change the shading of the plot background by inputting a value between 2 and 5 but could not get it to function

sub style

seismic style of plotting (time axis pointing down)
versus mathematical ( y axis up)

sub title

allows for a default graph title ($on) or
a user-defined title

sub titlecolor

allows for a default graph title ($on) or
a user-defined title

sub titlefont

sub tmpdir

subs trace_inc trace_inc_m, dx and d2

increment in fast dimension
usually time and equal to dt

    only the first trace is read in
    if an increment is not 1 between traces
    you should indicate here
    
    distance increment between traces

subs trace_inc trace_inc_m, dx and d2

increment in fast dimension
usually time and equal to dt

    only the first trace is read in
    if an increment is not 1 between traces
    you should indicate here
    
    distance increment between traces

sub tend_s

minimum value of yaxis (time usually) in seconds

sub tstart_s

minimum value of yaxis (time usually) in seconds

sub va plot data using a variable area scheme also sub shading Rachel Gnieski 091718 Plot data using a variable area scheme: Should change the shading of the plot background by inputting a value between 2 and 5 but could not get it to function

sub verbose

sub wbox

sub wclip

sub wigclip

sub windowtitle

sub wt

sub x1beg

minimum value of yaxis (time usually) in seconds

sub x1end

minimum value of yaxis (time usually) in seconds

sub x2

G. Bonot 091718 Lists array of values in the second dimension; displays one isolated sample value in different of the input value

sub x2beg

minimum value of x axis (time usually) in seconds
First value shown on x axis GTL18

sub x2end

max value of xaxis (distance or traces, usually) in seconds
Last value for data shown on x axis GTL18

sub xbox

Rachel Gnieski 091718
x pixels fo the upper corner of the window: Changing this value determines where the 
graph will open up on the screen based on the horizontal row of pixels

sub xcur

how many adjacent wiggles can be overploted

sub xend_m

subs xlabel or label2 ylabel or label1

sub xstart_m

subs d2num dx_major_divisions and x_tick_increment

numbered tick increments along x axis 
usually in m and only for display

sub ybox

Rachel Gnieski 091718
y pixels for the upper left corner of the window. Changing this value determines
where the graph will open up on the screen based on the vertical column of pixes.

subs ylabel or label1

sub y_tick_increment

subs d1num, y_tick_increment dy_major_divisions dt_major_divisions

numbered tick increments along x axis 
usually in m and only for display 

Kenny Lau
16 Sept 2018
Changes the interval between ticks

sub get_max_index

max index = number of input variables -1