up [pdf]
from rsf.proj import *

Flow('imp1',None,'spike n1=10  mag=%g' % (2550 * 2650))
Flow('imp2',None,'spike n1=5   mag=%g' % (2700 * 2750))
Flow('imp3',None,'spike n1=12  mag=%g' % (2400 * 2450))
Flow('imp4',None,'spike n1=8   mag=%g' % (2800 * 3000))
Flow('imp5',None,'spike n1=16  mag=%g' % (2550 * 2650))
Flow('imp','imp1 imp2 imp3 imp4 imp5','cat axis=1 ${SOURCES[1:5]}')
Result('imp','graph title=Impedance')

Flow('ref','imp','ai2refl')
Result('ref','dots title=Reflectivity')

Flow('wavelet',None,
     '''
     spike n1=51 k1=26 | 
     ricker1 freq=0.2 | 
     window f1=15 n1=21 
     ''')
Result('wavelet','dots title=Wavelet dots=0 connect=1 label1=')

Flow('data','ref','ricker1 freq=0.2')
Result('data','graph title=Data')

Plot('ref',
     'scale dscale=0.25 | bargraph wanttitle=n min2=-0.03 max2=0.05 plotcol=2')
Plot('data','graph title=Data min2=-0.03 max2=0.05')
Result('dataref','ref data','Overlay')

Flow('dot.test','data','dottest ricker1 freq=0.2 mod=$SOURCE dat=$SOURCE')

iters = []
for niter in range(1,11):
    model = 'model%d' % niter
    Flow(model,'data',
         'conjgrad ricker1 mod=$SOURCE freq=0.2 niter=%d' % niter)
    iters.append(model)

Result('iters',iters[:5],
       '''
       cat axis=2 ${SOURCES[1:5]} | 
       dots yreverse=y labels="iter 1:iter 2:iter 3:iter 4:iter 5"
       ''')

Plot('model10','graph title="Model Recovery" min2=-0.06 max2=0.09 plotcol=5 plotfat=5')
Plot('ref2','ref',
     'bargraph wanttitle=n min2=-0.06 max2=0.09 plotcol=2')
Plot('data2','data','graph wanttitle=n min2=-0.06 max2=0.09 plotcol=4 plotfat=5')
Result('dataref2','ref2 data2 model10','Overlay')

Flow('data10','model10','ricker1 freq=0.2')
Result('data10','data data10',
       '''
       cat axis=2 ${SOURCES[1]} |
       graph plotcol=4,5 dash=1,0 title="Data Fit"
       ''')

End()

sfspike
sfcat
sfgraph
sfai2refl
sfdots
sfricker1
sfwindow
sfscale
sfbargraph
sfdottest
sfconjgrad