Seismic Unix
Seismic Unix is an open source seismic utilities package which was supported by the Center for Wave Phenomena (CWP) at the Colorado School of Mines (CSM). Currently it is supported by John Stockwell.
Velocity Analysis with SU | |
Developer(s) | CWP, John Stockwell |
---|---|
Stable release | SU 43R1
/ January 3, 2012 |
Operating system | Unix, Linux, Solaris, Mac OS X, Cygwin |
Type | Technical computing |
License | New BSD license[1] |
Website | Seismic Unix Home |
History
Einar Kjartansson began writing what is now called SU (the SY package) in the late 1970s while still a graduate student at Jon Claerbout's Stanford Exploration Project (SEP). He continued to expand the package while he was a professor at the University of Utah in the early eighties. In 1984, during an extended visit to SEP Einar introduced SY to Shuki Ronen, then a graduate student at Stanford. Ronen further developed SY from 1984 to 1986. Other students at SEP started to use it and contributed code and ideas. SY was inspired by much other software developed at SEP and benefited from the foundations laid by Claerbout and many of his students; Rob Clayton, Stew Levin, Dave Hale, Jeff Thorson, Chuck Sword, and others who pioneered seismic processing on Unix in the seventies and early eighties.
In 1986, Shuki Ronen brought this work to the CWP at Colorado School of Mines during his one-year postdoctoral appointment there, Ronen aided Cohen in turning SU into a supportable and exportable product.
Chris Liner (homepage), while a student at the center, contributed to many of the graphics codes used in the pre-workstation (i.e., graphics terminal) age of SU. Liner continues to promote the use of SU in his students' research at the University of Houston.
Craig Artley, now with the Landmark division of Halliburton, made major contributions to the graphics codes while still a student at CWP and continues to make significant contributions to the general package.
Dave Hale wrote several of the heavy lifting processing codes as well as most of the core scientific and graphics libraries.
John Stockwell's involvement with SU began in 1989. He was largely responsible for the Makefile in the package. He has been the main contact for the project since the first public release of SU in September 1992 (Release 17). After Jack Cohen's death in 1996, Stockwell assumed the role of principal investigator of the SU project and has since remained in that role. The number of lines of code have more than tripled in the 11 years.
There have been many contributors to SU over the past two decades.
Syntax
The Seismic Unix routines run under the Unix terminal, and can get maximum efficiency when using it with Bourne Shell (sh) or Bourne-again Shell (bash) scripting techniques.
Simple routines
Many of the programs run simply by a command on the terminal, for instance, to visualize a seismogram, as wiggle traces
$ suxwigb < seismogram.su
or as an image plot
$ suximage < seismogram.su
More elaborated routines
It is also possible, to use bash features to elaborate more complex processing structures:
$ for ((i=1;i<=100;i++)); do
> sufdmod2 < model.bin > output.mov nx=200 nz=300 tmax=5 xs=$i zs=0 hsfile=seismogram.$i.su
> done
In the example above Seismic Unix will create 100 seismograms in 100 different source positions
SU Data
Here will have an explanation of how SU data is, it's headers and how they are organized in a big SU file with more than one gather:
--header—data—header—data--...
SU Programs
Seismic Unix has many of the processes needed on the geophysical processing. It is possible to use it to manipulate and create your own seismograms, and also to convert them between the SU standard file and the industry standard, the SEG Y.
Here you can find a list of the programs that the SU package has, with a brief description and a link to its help page.[2]
Data Compression
- Discrete Cosine Transform
- dctcomp Compression by Discrete Cosine Transform
- dctuncomp Discrete Cosine Transform Uncompression
- Packing
- supack1 Pack segy trace data into chars
- suunpack1 Unpack segy trace data from chars to floats
- supack2 Pack segy trace data into 2 byte shorts
- suunpack2 Unpack segy trace data from shorts to floats
- Wavelet Transforms
- wpc1comp2 Compress a 2D seismic section trace-by-trace using Wavelet Packets
- wpc1uncomp2 Uncompress a 2D seismic section, which has been compressed using Wavelet Packets
- wpccompress Compress a 2D section using Wavelet Packets
- wpcuncompress Uncompress a 2D section
- wptcomp Compression by Wavelet Packet Compression
- wptuncomp Uncompress WPT compressed data
- wtcomp Compression by Wavelet Transform
- wtuncomp Uncompression of WT compressed data
Editing, Sorting and Manipulation
- Edit + Tools
- suabshw Replace header key word by its absolute value
- suazimuth Compute trace AZIMUTH given the sx,sy,gx,gy header fields and set a user-specified header field to this value
- subset Select a SUBSET of the samples from a 3-dimensional file
- suchw Change Header Word using one or two header word fields
- sucountkey Count the number of unique values for a given keyword
- suedit Examine segy diskfiles and edit headers
- sugethw Sugethw writes the values of the selected key words
- sukill Zero out traces
- sunan remove NaNs & Infs from the input stream
- suquantile display some quantiles or ranks of a data set
- surange get max and min values for non-zero header entries
- sushw Set one or more Header Words using trace number, mod and integer divide to compute the header word values or input the header word values from a file
- sutab print non zero header values and data for non-graphic terminals
- suwind window traces by key word
- suxedit examine segy diskfiles and edit headers
- Sort
- susort sort on any segy header keywords
- susorty make a small 2-D common shot off-end data set in which the data show geometry values to help visualize data sorting
- Manipulate
- fcat fast cat with 1 read per file
- maxdiff find absolute maximum difference in two segy data sets
- segyhdrmod replace the text header on a SEGY file
- suaddnoise add noise to traces
- sucmp CoMPare two seismic data sets, returns 0 to the shell if the same and 1 if different
- sudiff,susum,suprod,suquo difference, sum, product, quotient of two SU data sets via suop2
- suflip flip a data set in various ways
- suhtmath do unary arithmetic operation on segy traces with headers values
- suinterp interpolate traces using automatic event picking
- sumixgathers mix two gathers
- sunull create null (all zeroes) traces
- suop do unary arithmetic operation on segys
- suop2 do a binary operation on two data sets
- supermute permute or transpose a 3d datacube
- suramp Linearly taper the start and/or end of traces to zero
- surecip sum opposing offsets in prepared data
- recip sum opposing (reciprocal) offsets in cdp sorted data
- suresamp Resample in time
- resamp Resample the 1st dimension of a 2-dimensional function f(x1,x2)
- suswapbytes Swap the bytes in SU data to convert data from big endian to little endian byte order, and vice versa
- sutaper Taper the edge traces of a data panel to zero
- sutxtaper Taper in (X,T) the edges of a data panel to zero
- suvcat append one data set to another, with or without an overlapping region. Data in the overlap may be determined by one of several methods
- suzero zero-out data within a time window
- swapbytes Swap the bytes of various data type
- transp Transpose an n1 by n2 element matrix
Filtering, Transforms and Attributes
- One-Dimensional Filtering
- suband Trapezoid-like Sin squared tapered Bandpass filter via SUFILTER
- subfilt apply Butterworth bandpass filter
- suconv convolution with user-supplied filter
- sueipofi Eigenimage (SVD) based POlarization FIlter for three-component data
- sufilter applies a zero-phase, sine-squared tapered filter
- sufrac take general (fractional) time derivative or integral of data, plus a phase shift. Input is TIME DOMAIN data
- supef Wiener predictive error filtering
- supofilt POlarization FILTer for three-component data
- sushape Wiener shaping filter
- sutvband time-variant bandpass filter (sine-squared taper)
- suxcor correlation with user-supplied filter
- Two-Dimensional filtering
- sudipfilt DIP--or better--SLOPE Filter in f-k domain
- sufxdecon random noise attenuation by FX-DECONvolution
- suk1k2filter symmetric box-like K-domain filter defined by the cartesian product of two sin^2-tapered polygonal filters defined in k1 and k2
- sumedian MEDIAN filter about a user-defined polygonal curve with the distance along the curve specified by key header word
- sukfilter radially symmetric K-domain, sin^2-tapered, polygonal filter
- sukfrac apply FRACtional powers of i|k| to data, with phase shift
- Transforms and Attributes
- entropy compute the ENTROPY of a signal
- mrafxzwt Multi-resolution analysis of a function F(X,Z) by Wavelet Transform
- suamp output amp, phase, real or imag trace from domain data
- suattributes trace attributes instantanteous amplitude, phase or frequency
- suenv Instantaneous amplitude, frequency, and phase via: suattributes
- suhilb Hilbert transform
- suhrot Horizontal ROTation of three-component data
- sufft fft real time traces to complex frequency traces
- suifft fft complex frequency traces to real time traces
- sugabor Outputs a time-frequency representation of seismic data via the Gabor transform-like multifilter analysis technique
- suharlan signal-noise separation by the invertible linear transformation method of Harlan
- sulog time axis log-stretch of seismic traces
- suilog time axis inverse log-stretch of seismic traces
- supolar POLarization analysis of three-component data
- suradon compute forward or reverse Radon transform or remove multiples by using the parabolic Radon transform to estimate multiples and subtract
- sutaup forward and inverse T-X and F-K global slant stacks
- sutsq time axis time-squared stretch of seismic traces
- sureduce convert traces to display in reduced time
- suspecfk F-K Fourier SPECtrum of data set
- suspecfx Fourier SPECtrum (T -> F) of traces
- suspeck1k2 2D (K1,K2) Fourier SPECtrum of (x1,x2) data set
Gain, NMO, Stack and Standard Processes
- Standard Processes
- suagc perform agc on SU data
- sudipdivcor Dip-dependent Divergence (spreading) correction
- sudivcor Divergence (spreading) correction
- sugain apply various types of gain to display traces
- grm Generalized Reciprocal refraction analysis for a single layer
- sumix compute weighted moving average (trace MIX) on a panel of seismic data
- sumute mute above (or below) a user-defined polygonal curve with the distance along the curve specified by key header word
- sunmo NMO for an arbitrary velocity function of time and CDP
- supgc Programmed Gain Control--apply agc like function but the same function to all traces preserving relative amplitudes spatially
- supws Phase stack or phase-weighted stack (PWS) of adjacent traces having the same key header word
- suresstat Surface consistent source and receiver statics calculation
- sustack stack adjacent traces having the same key header word
- sustatic Elevation static corrections, apply corrections from headers or from a source and receiver statics file
- sustaticrrs Elevation STATIC corrections, apply corrections from headers or from a source and receiver statics file, includes application of Residual Refraction Statics
- unglitch clip outliers in data
SU community
Seismic Unix has a very large community, with many laboratories and researchers throughout the world using it. There's a listserver group where you can get help and post your questions about SU. To subscribe to it, click here.
You can also see the old posts that the users have already discussed, to do it click here
A new Seismic Unix website by Dominique Rousset in 2019, click here here
Awards
2002 - Society of Exploration Geophysicists Special Commendation [3]
1994 - University to Industry award from the Colorado chapter of the Technology Transfer Society [4]
See also
- SUguide Seismic Unix Install Guide (hosted in Brazilian page)
- Seismic Unix wiki
- New Seismic Unix wiki 2019