"""Unconverted data, unconverted output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10.), num.zeros((10,), type=Float64))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
Converted data, unconverted output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10), num.zeros((10,), type=Long))
array([ 0, 4, 8, 12, 16, 20, 24, 28, 32, 9])
Unconverted data, converted output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10.), num.zeros((10,), type=Long))
array([ 0, 4, 8, 12, 16, 20, 24, 28, 32, 9])
Converted data, converted output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10.), num.zeros((10,), type=Long))
array([ 0, 4, 8, 12, 16, 20, 24, 28, 32, 9])
Unonverted data, no output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10.))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
Converted data, no output.
>>> conv1(num.array([1.,2.,1.]), num.arange(10))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
List data, no output.
>>> conv1([1.,2.,1.], num.arange(10))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
Byteswapped data, no output.
>>> a = num.array([1.,2.,1.])
>>> a.byteswap()
>>> a.togglebyteorder()
>>> conv1(a, range(10))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
Misaligned data, no output.
>>> a = num.array([1.,2.,1.])
>>> a._aligned = 1
>>> conv1(a, range(10))
array([ 0., 4., 8., 12., 16., 20., 24., 28., 32., 9.])
2d convolve 10x10 by 5,5.
>>> x = num.zeros((10,10), num.Float64) + 1
>>> k = num.zeros((5,5), num.Float64) + 0.25
>>> k[1:4,1:4] = 0.5
>>> k[2,2] = 1
>>> z = num.zeros((10,10), num.Float64)
>>> conv2(k, x, z)
array([[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 9., 9., 9., 9., 9., 9., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
"""
VARIANTS = ["numarray.examples.convolve.high_level",
"numarray.examples.convolve.one_dimensional",
"numarray.examples.convolve.element_wise",
"numarray.examples.convolve.numpy_compat"]
import numarray as num
import sys
array = num.array
Float64 = num.Float64
Int32 = num.Int32
Long = num.Long
# some helper functions used in the tests
def dotest(f, k, x, z=None):
kref = sys.getrefcount(k)
xref = sys.getrefcount(x)
zref = sys.getrefcount(z)
if z is None:
c = f(k, x)
else:
c = f(k, x, z)
assert(sys.getrefcount(k) == kref)
assert(sys.getrefcount(x) == xref)
if z is None:
assert(sys.getrefcount(c) == 2)
else:
assert(sys.getrefcount(z) == zref)
if c is not None:
return c
else:
return z
def conv1(k, x, z=None):
return dotest(convolve.Convolve1d, k, x, z)
def conv2(k, x, z=None):
return dotest(convolve.Convolve2d, k, x, z)
def test():
import numarray.numtest as nt
import dtest
results = []
for v in VARIANTS:
exec("import " + v + " as convolve\n", globals())
t = nt.Tester(globs=globals())
t.rundoc(dtest, v)
results.append(t.summarize())
return tuple(results)
syntax highlighted by Code2HTML, v. 0.9.1