# 
# DE abc demo
#
from rsf.proj import *
import sys,geom,wplot
sys.path.append('../../PYUTIL')
from deabcLOP import *
from DPTEST import *

# ------------------------------------------------------------
do3D = 'y'
doINV = 'n'
# ------------------------------------------------------------

par = dict(
    nx=25, ox=0, dx=1.0, lx='x', ux='', bx=5,
    ny=11, oy=0, dy=1.0, ly='y', uy='', by=2,
    nz=15, oz=0, dz=1.0, lz='z', uz='', bz=3,
    dabc='y'
    )
wplot.param(par)
par['xmin'] = par['xmin'] - par['bx']*par['dx']
par['xmax'] = par['xmax'] + par['bx']*par['dx']
par['ymin'] = par['ymin'] - par['by']*par['dy']
par['ymax'] = par['ymax'] + par['by']*par['dy']
par['zmin'] = par['zmin'] - par['bz']*par['dz']
par['zmax'] = par['zmax'] + par['bz']*par['dz']

BOX3D = ' min1=%(zmin)g max1=%(zmax)g '%par

# ------------------------------------------------------------
Flow('spk2D',None,
    '''
    spike nsp=1 mag=1
    n1=%(nz)d o1=%(oz)g d1=%(dz)g
    n2=%(nx)d o2=%(ox)g d2=%(dx)g |
    noise 
    '''%par,stdin=0)

if(do3D=='y'):
    Flow('spk3D',None,
    '''
    spike nsp=1 mag=1
    n1=%(nz)d o1=%(oz)g d1=%(dz)g
    n2=%(nx)d o2=%(ox)g d2=%(dx)g
    n3=%(ny)d o3=%(oy)g d3=%(dy)g |
    noise 
    '''%par,stdin=0)

# ------------------------------------------------------------
L2D = deabc2d(par)
L2D.FORW('spk2D',   'spk2Dfor')
L2D.ADJT('spk2Dadj','spk2Dfor')

Result('spk2D',['spk2D','spk2Dfor','spk2Dadj'],
    'cat axis=3 space=n ${SOURCES[1:3]} |'
     + wplot.igrey2d('color=e',par))

D2D = DPTEST(L2D,['spk2Dadj'],['spk2Dfor'])
D2D.RUN()
    
if(do3D=='y'):
    L3D = deabc3d(par)            
    L3D.FORW('spk3D',   'spk3Dfor')
    L3D.ADJT('spk3Dadj','spk3Dfor')
    
    Result('spk3D',['spk3D','spk3Dfor','spk3Dadj'],
        'cat axis=4 space=n ${SOURCES[1:3]} |'
        + 'byte gainpanel=a pclip=100 |'
        + wplot.igrey4d('color=e',par))
    
    D3D = DPTEST(L3D,['spk3Dadj'],['spk3Dfor'])
    D3D.RUN()
    
End()
