I was impressed by how Madagascar integrates available open sources, such as python, (including numpy, scipy), VTK, LATEX, etc. More importantly, a GUI out of the box ready to be used by a new user significant reduces the learning curve. Users of Seismic Unix have to install third party software to access a GUI. Examples are Botoseis, GeBR. From this perspective, the winner is Madagascar. See the attached screenshot for a quick taste.

# Monthly Archives: October 2011

# Seismic Unix vs Madagascar: Round 2

The self document of Seismic Unix is better than Madagascar, e.g.,

———————Seismic Unix——————————————

SUNMO – NMO for an arbitrary velocity function of time and CDP

sunmo <stdin >stdout [optional parameters]

Optional Parameters:

tnmo=0 NMO times corresponding to velocities in vnmo

vnmo=1500 NMO velocities corresponding to times in tnmo

anis1=0 two anisotropy coefficients making up quartic term

anis2=0 in traveltime curve, corresponding to times in tnmo

cdp= CDPs for which vnmo & tnmo are specified (see Notes)

smute=1.5 samples with NMO stretch exceeding smute are zeroed

lmute=25 length (in samples) of linear ramp for stretch mute

sscale=1 =1 to divide output samples by NMO stretch factor

invert=0 =1 to perform (approximate) inverse NMO

ixoffset=0 do not consider cross-line offset

=1 read cross-line offset from trace header

upward=0 =1 to scan upward to find first sample to kill

Notes:

For constant-velocity NMO, specify only one vnmo=constant and omit tnmo.

The anisotropy coefficients anis1, anis2 permit non-hyperbolicity due

to layering, mode conversion, or anisotropy. Default is isotropic NMO.

For NMO with a velocity function of time only, specify the arrays

vnmo=v1,v2,… tnmo=t1,t2,…

where v1 is the velocity at time t1, v2 is the velocity at time t2, …

The times specified in the tnmo array must be monotonically increasing.

Linear interpolation and constant extrapolation of the specified velocities

is used to compute the velocities at times not specified.

The same holds for the anisotropy coefficients as a function of time only.

For NMO with a velocity function of time and CDP, specify the array

cdp=cdp1,cdp2,…

and, for each CDP specified, specify the vnmo and tnmo arrays as described

above. The first (vnmo,tnmo) pair corresponds to the first cdp, and so on.

Linear interpolation and constant extrapolation of 1/velocity^2 is used

to compute velocities at CDPs not specified.

The same holds for the anisotropy coefficients as a function of time and

CDP.

Moveout is defined by

1 anis1

— x^2 + ————- x^4.

v^2 1 + anis2 x^2

Note: In general, the user should set the cdp parameter. The default is

to use tr.cdp from the first trace and assume only one cdp.

Caveat:

Nmo cannot handle negative moveout as in triplication caused by

anisotropy. But negative moveout happens necessarily for negative anis1 at

sufficiently large offsets. Then the error-negative moveout- is printed.

Check anis1. An error (anis2 too small) is also printed if the

denominator of the quartic term becomes negative. Check anis2. These errors

are prompted even if they occur in traces which would not survive the

NMO-stretch threshold. Chop off enough far-offset traces (e.g. with suwind)

if anis1, anis2 are fine for near-offset traces.

NMO interpolation error is less than 1% for frequencies less than 60% of

the Nyquist frequency.

Exact inverse NMO is impossible, particularly for early times at large

offsets and for frequencies near Nyquist with large interpolation errors.

———————Madagascar——————————————

NAME

sfnmo

DESCRIPTION

Normal moveout.

SYNOPSIS

sfnmo < cmp.rsf velocity=velocity.rsf > nmod.rsf s=het.rsf offset=offset.rsf mask=msk.rsf half=y str=0.5 mute=12 CDPtype= slowness=n squared=n h0=0. extend=4 a=

COMMENTS

Compatible with sfvscan.

PARAMETERS

_______ CDPtype=

_______ a=

_______ extend=4 trace extension

_______ h0=0. reference offset

_______ half=y [y/n] if y, the second axis is half-offset instead of full offset

_______ mask= auxiliary input file name

_______ mute=12 mute zone

_______ offset= auxiliary input file name

_______ s= auxiliary input file name

_______ slowness=n [y/n] if y, use slowness instead of velocity

_______ squared=n [y/n] if y, the slowness or velocity is squared

_______ str=0.5 maximum stretch allowed

_______ velocity= auxiliary input file name

USED IN

bei/dpmv/krchdmo

bei/vela/strat

bei/vela/vscan

bei/wvs/vscan

data/alaska/bash

data/nankai/shots

geo384w/hw2/cmp

geo384w/hw4/dome

geo384w/hw6/blake

jsg/avo/avo

jsg/avo/avo2

jsg/diffr/fault

jsg/nmo3/azimuthtest

jsg/oc3/bei

jsg/oc3/fault

jsg/reversible/nscnmo

jsg/seislet/gath

jsg/simistack/bei

jsg/simistack/flat4

SOURCE

system/seismic/Mnmo.c

VERSION

1.3-svn Mnmo.c 7114 2011-04-12 00:15:58Z ivlad

One more trick since you are here: su directs self-doc to stderr, while magascar directs to stdout.