[ Home | Help | Examples ]

Basic help

Basic demos

SU SEGY structure

Reading a SU file

Basic help

SeismicLab contains the following directories:

 >> help SeismicLab 

  ./codes/bp_filter: freq. domain filtering
  ./codes/decon: time domain deconvolution and wavelet estimation
  ./codes/dephasing: Dephasing algorithm 
  ./codes/fx: FX decon for SNR enhancement
  ./codes/iterpolation: Spitz FX interpolation
  ./codes/kl_transform: Karhunen-Loeve filter for SNR enhancement
  ./codes/radon_transforms: Radon transforms (linear and parabolic)
  ./codes/scaling_tapering: Scaling, envelope, gaining functions
  ./codes/segy: Basic functions to manipulate SU-SEGY files
  ./codes/seismic_plots: Functions to display data
  ./codes/spectra: FK panels
  ./codes/synthetics: Simple synthetics to test algorithms
  ./codes/velan_nmo: Velocity analysis, NMO, inverse NMO, etc
  ./SeismicLab_demos: Demos
  ./SeismicLab_data: Data used to run demos
  Use, for instance,  help decon  to see the contents of ./codes/decon
  to see available demos try: help SeismicLab_demos

If you want, for instance, to investigate the contents of ./codes/decon, try the following

 >> help decon  
 KOLMOG: Kolmogoroff spectral factorization.
 LS_INV_FILTER: Least-squares inverse filter of a wavelet.
 POLAR_PLOT: Plot the roots of a wavelet in polar coordinates.
 PREDICTIVE: Predictive deconvolution filter.
 SMOOTH_SPECTRUM: Power spectrum estimate by smoothing the periodogram.
 SPARSE_DECON: Sparse-spike deconvolution using a l1 norm regularization.
 SPIKING: Spiking deconvolution using Levinson's recursion.
 ZEROS_WAV: computes the zeros of a wavelet.

to see how to use spiking.m

 >> help spiking
  SPIKING: Spiking deconvolution using Levinson's recursion.
    [f,o] = spiking(d,NF,mu)
    IN   d:  data (trace are columns)
        NF: lenght of the spiking operator
        mu: prewhitening in percentage  
    OUT  f:  the filter
         o:  the ouput or convolution of the data with 
              the filter (adjusted to the length of the
              input data)  and normalized to 1.
    Note: We assume a minimum phase wavelet, we also assume
          that the reflectivity is a white process. The latter
          allows us to estimate the autocorrelation of
          the wavelet from the autocorrelation of the trace.
    Reference: Robinson and Treitel, 1980, Geophysical Signal Analysis, 
               Prentice Hall
    Note: some clarity was lost in order to use Matlab function "levinson" 
    Copyright (C) 2008, Signal Analysis and Imaging Group
    For more information: http://www-geo.phys.ualberta.ca/saig/SeismicLab
    Author: M.D.Sacchi
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU General Public License for more details: http://www.gnu.org/licenses/

to see the actual program use

 >> more on
 >> type spiking

Basic demos

We have included demos to test things one can do with SeismicLab, try

 >> help SeismicLab_demos
 FX_DECON_DEMO: Demo for FX decon.
 MOVEOUT_DEMO: NMO and Inverse NMO demo.
 PARABOLIC_MOVEOUT_DEMO: Analysis of residual moveout after NMO.
 RADON_DEMO_1: Multiple removal with the Parabolic Radon Transform.
 RADON_DEMO_2: Multiple removal with the Parabolic Radon Transform.
 SPARSE_DECON_DEMO: l1 sparse-spike deconvolution.
 SPIKING_DECON_DEMO: Apply spiking deconvolution to seismic traces.
 SPITZ_DEMO: Example showing Spitz fx interpolation
 VA_DEMO: Test velocity analysis program.

The following script will compute and display the velocity spectrum of a cmp gather

 >> va_demo

The demos read data from ./SeismicLab_data. The data are in "little endian format"

 >> help SeismicLab_data
  Data used by demos 
     109K  data_with_noise.su
     650K  gom_cdp_nmo.su
     380B  min_phase_wavelet.su
     20K   small_stack.su
     86K   syn_cmp.su
     203K  syn_cmp_mult.su
     420B  wavelet_for_small_stack.su
   -  Data are in little endian  
   -  fopen statements in ./codes/SEGY/*.m assume 
      data in little endian format  

SU SEGY structure

SeismicLab reads data in SU format (please, see The SEGY and the SU format). Header words are manipulated by the following structure

 >> [segy] = segy_struct;
 >> more on
 >> segy

 segy = 
      tracl: 'int'
      tracr: 'int'
       fldr: 'int'
      tracf: 'int'
         ep: 'int'
        cdp: 'int'
       cdpt: 'int'
       trid: 'short'
        nva: 'short'
        nhs: 'short'
       duse: 'short'
     offset: 'int'
      gelev: 'int'
      selev: 'int'
     sdepth: 'int'
       gdel: 'int'
       sdel: 'int'
      swdep: 'int'
      gwdep: 'int'
     scalel: 'short'
     scalco: 'short'
         sx: 'int'
         sy: 'int'
         gx: 'int'
         gy: 'int'
     counit: 'short'
      wevel: 'short'
     swevel: 'short'
        sut: 'short'
        gut: 'short'
      sstat: 'short'
      gstat: 'short'
      tstat: 'short'
       laga: 'short'
       lagb: 'short'
      delrt: 'short'
       muts: 'short'
       mute: 'short'
         ns: 'unsigned short'
         dt: 'unsigned short'
       gain: 'short'
        igc: 'short'
        igi: 'short'
       corr: 'short'
        sfs: 'short'
        sfe: 'short'
       slen: 'short'
       styp: 'short'
       stas: 'short'
       stae: 'short'
      tatyp: 'short'
      afilf: 'short'
      afils: 'short'
     nofilf: 'short'
     nofils: 'short'
        lcf: 'short'
        hcf: 'short'
        lcs: 'short'
        hcs: 'short'
       year: 'short'
        day: 'short'
       hour: 'short'
     minute: 'short'
        sec: 'short'
     timbas: 'short'
       trwf: 'short'
     grnors: 'short'
     grnofr: 'short'
     grnlof: 'short'
       gaps: 'short'
      otrav: 'short'
         d1: 'float'
         f1: 'float'
         d2: 'float'
         f2: 'float'
     ungpow: 'float'
    unscale: 'float'
        ntr: 'int'
       mark: 'short'
      unass: 'short'
      trace: 'float'

Reading a SU file

The file "gom_cdp_nmo.su" is given in SU format. We first read the file. Then from the header structure we extract "cdp" number and "offset". The sampling interval "dt" is extracted from the first trace and converted first to msec and then to seconds "dtsec".

 >> [D,H] = readsegy('gom_cdp_nmo.su');
 >> cdp = [H.cdp];
 >> offset = [H.offset];
 >> dt = H(1).dt/1000;
 >> dtsec = dt/1000;

you can now display the data, but first we create a time axis

 >> [nt,nh] = size(D);
 >> taxis = [0:1:nt-1]*dtsec;
 >> imagesc(offset,taxis,d); title('GOM CMP gather');
 >> colormap(gray);

Try also the following:

 >> [D,H] = readsegy('small_stack.su'); imagesc(D); wigb(D);

Signal Analysis and Imaging Group
Department of Physics, University of Alberta
Edmonton, AB, T6G 2G7, Canada
Phone: (780) 492-5034 Fax: (780) 492-0714
Valid HTML 4.01 Transitional Valid HTML 4.01 Transitional