from rsf.proj import *
from math import *
import os
wf = 2*pi
nt = 501
dt = 0.004
ot = 0
nx = 501
dx = 0.01
ox = 0
nw = 200
dw = 0.0005
ow = 0
for eve in (1,2,3,4):
spike='spike%d' % eve
tpara='tpara%d' % eve
para='para%d' % eve
Flow(spike,None,
'''
spike n1=%d d1=%g o1=%g n2=%d d2=%g o2=%g nsp=1 k1=%d mag=1 p2=0|
ricker1 frequency=15 | put unit2=km label2=Distance
''' % (nt,dt,ot,nx,dx,ox,eve*80-30))
Flow(tpara,spike,
'''
window n1=1 | math output="-sqrt(%g*%g+(x1-2.5)*(x1-2.5)/%g/%g)+%g"
''' % (0.004*(eve*80-30),0.004*(eve*80-30),2,2,0.004*(eve*80-30)))
Flow(para,[spike, tpara],
'datstretch datum=${SOURCES[1]} ')
Flow('para','para1 para2 para3 para4','add ${SOURCES[1]} ${SOURCES[2]} ${SOURCES[3]}')
Result('para','para','window j2=4 | wiggle label2=Distance unit2=km transp=y yreverse=y poly=y title="Signal" ')
Flow('npara','para','noise var=1e-2')
Flow('nft','npara','fft1 ')
Result('npara','npara','window j2=5 | wiggle label2=Distance unit2=km transp=y yreverse=y poly=y title="Noisy Signal" ')
nshifts = []
for s in range(1,5):
nshift = 'nshift-%d' % s
Flow(nshift,'nft','window f2=%d | pad end2=%d' % (s,s))
nshifts.append(nshift)
nshift = 'nshift+%d' % s
Flow(nshift,'nft','window n2=%d | pad beg2=%d ' % (nx-s,s))
nshifts.append(nshift)
Flow('nshifts',nshifts,'cat ${SOURCES[1:%d]} axis=3 | put o2=0 ' % len(nshifts))
Flow('nflt npref','nshifts nft',
'clpf match=${SOURCES[1]} pred=${TARGETS[1]} rect2=20 rect1=3 niter=10 verb=n')
Flow('npre','npref','fft1 inv=y ')
Result('npre','npre','window j2=5 | wiggle label2=Distance unit2=km transp=y yreverse=y poly=y title="FX RNA"')
Flow('ndiff','npara npre','math x=${SOURCES[1]} output="x-input"')
Result('ndiff','ndiff','grey pclip=98 color=j maxval=0.1 minval=-0.1 scalebar=y title="FX RNA" wherexlabel=b wheretitle=t ')
Result('npar','nflt','window n3=1 f3=0 | real | grey label2=Distance unit2=km color=j title="Coef" wherexlabel=b wheretitle=t ')
Flow('patch0','npara','patch w=501,20 p=1,50 | patch inv=y weight=y ')
Flow('patch','npara','patch w=501,20 p=1,50 ')
Flow('wpatch','patch','window')
fxds = []
mpas = []
for nw in range(0,50):
data = 'data%d' % nw
fxd = 'fx%d' % nw
Flow(data,'wpatch','window n3=1 f3=%d' % nw)
Flow(fxd,data,'fxdecon lenf=4 n2w=20')
fxds.append(fxd)
lom = 'lom%d' %nw
lag = 'lag%d' %nw
mpa = 'mpa%d' %nw
Flow([lom, lag],data,'hpef niter=200 a=4,5 lag=${TARGETS[1]}')
Flow(mpa,[data,lom],'helicon filt=${SOURCES[1]}')
mpas.append(mpa)
Flow('fxpatch',fxds,'cat ${SOURCES[1:%d]} axis=3 | transp plane=34 | patch inv=y weight=y' % len(fxds))
Flow('mpapatch',mpas,'cat ${SOURCES[1:%d]} axis=3 | transp plane=34 | patch inv=y weight=y' % len(mpas))
Result('fxpatch','fxpatch','window j2=5 | wiggle label2=Distance unit2=km transp=y yreverse=y poly=y title="FX Decon"')
Flow('fxdiff','npara fxpatch','math x=${SOURCES[1]} output="x-input"')
Result('fxdiff','fxdiff',
'''
grey color=j pclip=98 label2=Distance unit2=km maxval=0.07 minval=-0.07 scalebar=y title="FX Decon" wheretitle=t wherexlabel=b
''')
Result('mpapatch','mpapatch',
'''
grey pclip=98 label2=Distance unit2=km color=j
maxval=0.07 minval=-0.07 title="TX PEF" wherexlabel=b wheretitle=t scalebar=y
''' )
Result('tpefpatch','npara mpapatch',
'''
math x=${SOURCES[1]} output="input-x" |
window j2=5 |
wiggle label2=Distance unit2=km transp=y yreverse=y poly=y title="TX PEF"
''')
End() |