up [pdf]
from rsf.proj import *
import math

Flow('time',None,
     'math n1=200 d1=1 o1=1 output="(x1-1)*0.4" ')
Flow('head','time',"window n1=41 | math output='exp(0.25*input)+11'")
Flow('ideal','time',"math output='sin(input)*0.5'")
Flow('alias','head',"math output='sin(input)*0.5' | put head=$SOURCE")

doty = '''
dots dots=0 connect=0 gaineach=0 constsep=1 strings=0 clip=1.2 label1=Sample
'''

Flow('data','alias','bin1 nx=200 dx=0.4 x0=0')
Plot('data',doty + ' strings=1 d1=1 o1=1')
Plot('ideal',doty + ' connect=1')
Plot('both','data ideal','Overlay')
Result('data','both data','SideBySideAniso')

doty2 = doty + ' label1=" " '

Result('data2','data',doty2 + ' strings=1 d1=1 o1=1')
Plot('data2','data',doty2 + ' strings=1 d1=1 o1=1')
Plot('ideal2','ideal',doty2 + ' connect=1')
Result('both2','data2 ideal2','Overlay')

doty = doty + ' yreverse=y connect=1 d1=1 o1=1'

name = 'ifsz'
title = ['Regularization','Preconditioning','Shaping 1','Shaping 2']
for prec in range(4):
    iters = []
    res = name[prec] + 'm'
    labels = ''
    for niter in [1,3,5,7,300]:
        iter = res + str(niter)
        iters.append(iter)
        if prec > 1:
            Flow(iter,'alias',
                 '''
                 shapebin1 nx=200 dx=0.4 x0=0 filter=5 pef=%d gauss=1 niter=%d pad=400
                 ''' % (prec-2,niter))
        else:
            Flow(iter,'alias',
                 'invbin1 nx=200 dx=0.4 x0=0 filter=1 prec=%d niter=%d' % (prec,niter))
        labels = labels + 'iter=%d:' % niter
    Plot(res,iters,
         '''
         cat axis=2 ${SOURCES[1:%d]} | %s connect=1 overlap=2
         title="%s" labels=%s labelsz=10 label1='Sample' 
         ''' % (len(iters),doty,title[prec],labels))
Result('if',['im','fm'],'SideBySideAniso')
Result('sz',['sm','zm'],'SideBySideAniso')

Flow('sm','sm300','put d1=1')
Flow('spec','sm','spectra')
Flow('spec1','spec','math output="exp(-%g*x1*x1)" ' % (8*math.pi*math.pi))
Flow('spec2','spec','monof ma=/dev/null | scale axis=1')


for case in (1,2):
    spec = 'spec%d' % case
    Plot(spec,['spec',spec],
       '''
       cat axis=2 ${SOURCES[1]} |
       graph title="Spectrum Shaping %d"
       label1="Frequency (cycle)" max1=0.3 dash=0,1
       label2="Relative Magnitude"
       ''' % case)
Result('spec','spec2','Overlay')
Result('spec1','sm spec1','SideBySideAniso')
Result('spec2','zm spec2','SideBySideAniso')

Flow('ss','alias',
     'shapebin1 nx=200 dx=0.4 x0=0 filter=5 pef=1 gauss=1 niter=20 pad=400')
Plot('ss',doty)
Result('ss',['data','ss'],'Overlay')

###########################################################################

End()

sfmath
sfwindow
sfput
sfbin1
sfdots
sfinvbin1
sfcat
sfshapebin1
sfspectra
sfmonof
sfscale
sfgraph