DOCUMENTATION

SYNOPSIS

SUXIMAGE also inherits parameters from XIMAGE (See below)

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

USE$new_dt_s

NOTES

Examples

SEISMIC UNIX NOTES

 SUXIMAGE - X-windows IMAGE plot of a segy data set	                

 suximage infile= [optional parameters] | ...  (direct I/O)            
  or					                		
 suximage <stdin [optional parameters] | ...	(sequential I/O)        

 Optional parameters:						 	

 infile=NULL SU data to be ploted, default stdin with sequential access
             if 'infile' provided, su data read by (fast) direct access

	      with ftr,dtr and n2 suximage will pass a subset of data   
	      to the plotting program-ximage:                           
 ftr=1       First trace to be plotted                                 
 dtr=1       Trace increment to be plotted                             
 n2=tr.ntr   (Max) number of traces to be plotted (ntr is an alias for n2)
	      Priority: first try to read from parameter line;		
		        if not provided, check trace header tr.ntr;     
		        if still not provided, figure it out using ftello

 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 or was set to 0)		        

 key=			key for annotating d2 (slow dimension)		
 			If annotation is not at proper increment, try	
 			setting d2; only first trace's key value is read

 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)			

 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.									

 See the ximage selfdoc for the remaining parameters.		        


 Credits:

	CWP: Dave Hale and Zhiming Li (ximage, etc.)
	   Jack Cohen and John Stockwell (suximage, etc.)
	MTU: David Forel, June 2004, added key for annotating d2
      ConocoPhillips: Zhaobo Meng, Dec 2004, added direct I/O

 Notes:

      When provide ftr and dtr and infile, suximage can be used to plot 
      multi-dimensional volumes efficiently.  For example, for a Offset-CDP
      dataset with 32 offsets, the command line
      suximage infile=volume3d.su ftr=1 dtr=32 ... &
      will display the zero-offset common offset data with ranrom access.  
      It is highly recommend to use infile= to view large datasets, since
      using stdin only allows sequential access, which is very slow for 
      large datasets.

	When the number of traces isn't known, we need to count
	the traces for ximage.  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.
	

 The parameters of the following seismic unix programs
 also applies to the current package suximage

XIMAGE - X IMAGE plot of a uniformly-sampled function f(x1,x2)

 ximage 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 			
									
 ... change colormap interactively					
 r	     install next RGB - colormap				
 R	     install previous RGB - colormap				
 h	     install next HSV - colormap				
 H	     install previous HSV - colormap				
 H	     install previous HSV - colormap				
 (Move mouse cursor out and back into window for r,R,h,H to take effect)
 									
 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			
 mpicks=/dev/tty	 file to save mouse picks in			
 perc=100.0		 percentile used to determine clip		
 clip=(perc percentile) clip used to determine bclip and wclip		
 bperc=perc		 percentile for determining black clip value	
 wperc=100.0-perc	 percentile for determining white clip value	
 bclip=clip		 data values outside of [bclip,wclip] are clipped
 wclip=-clip		 data values outside of [bclip,wclip] are clipped
 balance=0		 bclip & wclip individually			
			 =1 set them to the same abs value		
			   if specified via perc (avoids colorbar skew)	
 cmap=hsv'n' or rgb'm'	'n' is a number from 0 to 13		
				'm' is a number from 0 to 11		
				cmap=rgb0 is equal to cmap=gray		
				cmap=hsv1 is equal to cmap=hue		
				(compatibility to older versions)	
 legend=0	        =1 display the color scale			
 units=		unit label for legend				
 legendfont=times_roman10    font name for title			
 verbose=1		=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			
 lwidth=16		colorscale (legend) width in pixels		
 lheight=hbox/3	colorscale (legend) height in pixels		
 lx=3			colorscale (legend) x-position in pixels	
 ly=(hbox-lheight)/3   colorscale (legend) y-position in pixels	
 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
 label1=		label on axis 1					
 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=ximage	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)	
 blank=0		This indicates what portion of the lower range  
			to blank out (make the background color).  The  
			value should range from 0 to 1.			
 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)                   
 blockinterp=0       whether to use block interpolation (0=no, 1=yes)
 curvewidth

 NOTES:								
 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 curv$e 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,... .
 
 JML:9-1-19                     curvefile=file1,file2,file3 fails
Perl wrapper automatically substitutes with: curve=file1,file2,file3

SUXIMAGE - X-windows IMAGE plot of a segy data set

 suximage infile= [optional parameters] | ...  (direct I/O)            
  or					                		
 suximage <stdin [optional parameters] | ...	(sequential I/O)        
									
 Optional parameters:						 	
									
 infile=NULL SU data to be ploted, default stdin with sequential access
             if 'infile' provided, su data read by (fast) direct access
									
	      with ftr,dtr and n2 suximage will pass a subset of data   
	      to the plotting program-ximage:                           
 ftr=1       First trace to be plotted                                 
 dtr=1       Trace increment to be plotted                             
 n2=tr.ntr   (Max) number of traces to be plotted (ntr is an alias for n2)
	      Priority: first try to read from parameter line;		
		        if not provided, check trace header tr.ntr;     
		        if still not provided, figure it out using ftello
									
 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 or was set to 0)		        
									
 key=			key for annotating d2 (slow dimension)		
 			If annotation is not at proper increment, try	
 			setting d2; only first trace's key value is read
 							        	
 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)			
 							        	
 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.									
									
 See the ximage selfdoc for the remaining parameters.

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

56 +2 items

sub dtr

sub ftr

sub infile

sub key

sub absclip

determine the absolute clip for data

sub balance

sub bclip

subs loclip bclip

sub blank

sub blockinterp

sub box_X0

sub box_Y0

sub box_height

sub box_width

sub bperc

sub clip

determine the absolute clip for data

sub cmap

sub curve

sub curvecolor

color of curves

sub curvefile

name of ascii file containing plotting points

sub curvewidth

name of ascii file containing plotting points

sub d1

subs d1 and dt and dz and dt_s

increment in fast dimension
usually time and equal to dt

sub d1num

subs d1num , y_tick_increment dy_major_divisions dt_major_divisions

numbered tick interval in fast dimension(t)

sub d2

	subs d2 and trace_in
	
     only the first trace is read in
     if an increment is not 1 between traces
     you should indicate here

sub dt_major_divisions

subs d1num , y_tick_increment dy_major_divisions dt_major_divisions

numbered tick interval in fast dimension(t)

sub dx

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

sub dy_major_divisions

subs d1num , y_tick_increment dy_major_divisions dt_major_divisions

numbered tick interval in fast dimension(t)

sub d2num

	subs d2num  dx_major_divisions and x_tick_increment
    numbered tick interval

sub dt

subs d1 and dt and dz and dt_s

increment in fast dimension
usually time and equal to dt

sub dt_s

subs d1 and dt and dz and dt_s

increment in fast dimension
usually time and equal to dt

sub dx_major_divisions

 	subs d2num  dx_major_divisions and x_tick_increment
	numbered tick interval

sub dy_minor_divisions

subs dy_minor_divisions 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)	

sub dz

subs d1 and dt and dz and dt_s

increment in fast dimension
usually time and equal to dt

sub f1

subs f1, first_time_sample_value and first_y

value of the first sample tihat is use

sub f1num

subs f1num first_time_tick_num

first tick number in the
fast dimension (e.g., time)
$f1num >=  0 && 

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)

sub f2num

subs f2num first_tick_number_x

first tick number in the
slow dimension (e.g., distance)

sub first_distance_sample_value

subs f2 and first_distance_sample_value first_x

value of the first sample tihat is used

first value in the second dimension (X)
$f2 >=0  && 

sub first_x

subs f2 and first_distance_sample_value first_x

value of the first sample tihat is used

first value in the second dimension (X)

$f2 >=0  && 

sub first_distance_tick_num

	subs f2num first_distance_tick_num

   first tick number in the
   slow dimension (distance)
   $f2num >=0  && 
   

sub first_tick_number_x

subs f2num first_tick_number_x

  first tick number in the
  slow dimension (e.g., distance)
$f2num >=0  && 

sub first_time_sample_value

subs f1, first_time_sample_value and first_y

value of the first sample tihat is use
$f1 >=0  && 

sub first_time_tick_num

subs f1num first_time_tick_num

  first tick number in the
  fast dimension (e.g., time)
  
$f1num >=0  && 

sub first_y

subs f1, first_time_sample_value and first_y

value of the first sample that is used
$f1 >=0  && 

sub grid1

sub grid2

sub gridcolor

sub hbox

sub hiclip

subs hiclip or wclip

sub label1

subs xlabel or label2 ylabel or labe1

sub label2

subs xlabel or label2 ylabel or labe1

sub labelcolor

sub labelfont

sub legend

sub legendfont

sub lheight

sub loclip

subs loclip bclip

sub lwidth

sub lx

sub ly

sub mpicks

sub mpicks picks
   automatically generates a pick file

sub n1

n1 number of samples in 1st (fast) dimension

sub n1tic

subs dy_minor_divisions 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)	

sub n2

sub n2tic

subs 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)	

sub npair

number of T-Vel pairs

sub num_minor_ticks_betw_distance_ticks

subs 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)	

sub num_minor_ticks_betw_time_ticks

subs dy_minor_divisions 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)	

sub orientation

subs style orientation

 whether the time axis is vertical (seismic stlye)
 or the time axis is horizontal (normal style)

sub perc

subs perc percent4clip percentile used to determine clip

sub percent4clip

subs perc percent4clip percentile used to determine clip

sub picks

sub mpicks picks
   automatically generates a pick file

sub plotfile

sub style

subs style orientation

 whether the time axis is vertical (seismic stlye)
 or the time axis is horizontal (normal style)

sub tend_s

subs x1end and tend_s

minimum value of yaxis (time usually) in seconds

sub title

sub title allows for a  graph title  at the top of the 
window 

sub titlecolor

sub titlefont

sub tmpdir

sub trace_inc

	subs d2 and trace_inc
	
     only the first trace is read in
     if an increment is not 1 between traces
     you should indicate here

sub tstart_s

subs x1beg and tstart_s

 minimum value of yaxis (time usually) in seconds
 
$x1beg >=0 && 

sub units

sub verbose

sub wbox

sub wclip

subs hiclip wclip

sub windowtitle

sub wperc

sub x1beg

subs x1beg and tstart_s

 minimum value of yaxis (time usually) in seconds
 
$x1beg >=0 && 

sub x1end

subs x1end and tend_s

minimum value of yaxis (time usually) in seconds

sub x2end

subs x2end and xend_m

 minimum value of yaxis (time usually) in seconds

sub xbox

sub x2beg

 subs x2beg and 

 minimum value of yaxis (time usually) in seconds
 
$x2beg >=0 && 

sub xend_m

subs x2end and xend_m

 minimum value of yaxis (time usually) in seconds

sub xlabel

subs xlabel or label2 ylabel or labe1

sub xstart_m

 subs x2beg and xstart_m

 minimum value of yaxis (time usually) in seconds
 
$x2beg >=0 && 

sub x_tick_increment

 	subs d2num  dx_major_divisions and x_tick_increment
	numbered tick interval

sub ybox

sub ylabel

subs xlabel or label2 ylabel or labe1

sub y_tick_increment

subs d1num , y_tick_increment dy_major_divisions dt_major_divisions

numbered tick interval in fast dimension(t)

sub get_max_index

max index = number of input variables -1