[SciPy-User] Is this a bug in scipy.ndimage.interpolation.shift ???

Jerome Kieffer Jerome.Kieffer at esrf.fr
Tue Aug 23 10:25:13 EDT 2011


Hello,

I was using scipy.ndimage.interpolation.shift with order=0 and "wrap" mode because I did not want to swap the 4 blocs of memory myself ... but I got strange results.

for shifting by hand  one can do:
def shift(input, shift):
    """
    Shift an array like  scipy.ndimage.interpolation.shift(input, shift, mode="wrap", order=0) but faster
    @param in: 2d numpy array
    @param d: 2-tuple of integers 
    @return: shifted image
    """
    re = numpy.zeros_like(input)
    s0, s1 = input.shape
    d0 = shift[0] % s0
    d1 = shift[0] % s1
    r0 = (-d0) % s0
    r1 = (-d1) % s1
    re[d0:, d1:] = input[:r0, :r1]
    re[:d0, d1:] = input[r0:, :r1]
    re[d0:, :d1] = input[:r0, r1:]
    re[:d0, :d1] = input[r0:, r1:]
    return re

In [327]: a=np.random.random((5,5))

In [328]: scipy.ndimage.interpolation.shift(a,(2,3),order=0,mode="wrap")-shift(a,(2,3))
Out[328]: 
array([[-0.13484701,  0.43450823,  0.4920127 , -0.04826882, -0.40258904],
       [ 0.48403199,  0.02161651, -0.35774838,  0.73954376,  0.42218297],
       [-0.23808862,  0.4799521 , -0.39548832,  0.        ,  0.        ],
       [-0.04105354,  0.06934301, -0.18976602,  0.        ,  0.        ],
       [-0.38430434,  0.04591371, -0.33502248,  0.        ,  0.        ]])

SHOULD BE 0 everywhere and it is only in the lower right corner ... 

Do you agree this is an error (or did I misinterpret scipy.ndimage.interpolation.shift since the begining ?)

Shall I open a bug ? I am using an ubuntu 10.04 (LTS)

Cheers,
-- 
Jérôme Kieffer
On-Line Data analysis / Software Group 
ISDD / ESRF
tel +33 476 882 445



More information about the SciPy-User mailing list