2012-02-11 15 views
6

Al probar scipy usando el paquete de nariz con scipy.test(), la prueba falla en Ubuntu 12.04 con todos los paquetes de vanilla instalados. ¿Debo preocuparme y, en caso afirmativo, cómo puedo solucionarlo?Error al probar SciPy

In [8]: scipy.test() 
Running unit tests for scipy 
NumPy version 1.5.1 
NumPy is installed in /usr/lib/python2.7/dist-packages/numpy 
SciPy version 0.9.0 
SciPy is installed in /usr/lib/python2.7/dist-packages/scipy 
Python version 2.7.2+ (default, Jan 21 2012, 23:31:34) [GCC 4.6.2] 
nose version 1.1.2 

[................] 

====================================================================== 
FAIL: test_io.test_imread 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest 
    self.test(*self.arg) 
    File "/usr/lib/python2.7/dist-packages/numpy/testing/decorators.py", line 146, in skipper_func 
    return f(*args, **kwargs) 
    File "/usr/lib/python2.7/dist-packages/scipy/ndimage/tests/test_io.py", line 16, in test_imread 
    assert_array_equal(img.shape, (300, 420, 3)) 
    File "/usr/lib/python2.7/dist-packages/numpy/testing/utils.py", line 686, in assert_array_equal 
    verbose=verbose, header='Arrays are not equal') 
    File "/usr/lib/python2.7/dist-packages/numpy/testing/utils.py", line 579, in assert_array_compare 
    raise AssertionError(msg) 
AssertionError: 
Arrays are not equal 

(shapes (2,), (3,) mismatch) 
x: array([300, 420]) 
y: array([300, 420, 3]) 

---------------------------------------------------------------------- 
Ran 3780 tests in 32.328s 

FAILED (KNOWNFAIL=11, SKIP=20, failures=1) 

Respuesta

11

Si se echa un vistazo en el interior /usr/lib/python2.7/dist-packages/scipy/ndimage/tests/test_io.py debería ver:

def test_imread(): 
    lp = os.path.join(os.path.dirname(__file__), 'dots.png') 
    img = ndi.imread(lp) 
    assert_array_equal(img.shape, (300, 420, 3)) 

    img = ndi.imread(lp, flatten=True) 
    assert_array_equal(img.shape, (300, 420)) 

Esta prueba parece estar poniendo a prueba si flatten=True convierte una imagen RGB en una imagen en escala de grises de 1 bit.

En mi sistema Ubuntu 11.10, sin embargo, dots.png ya es un archivo de imagen de 1 bit:

% file /usr/share/pyshared/scipy/ndimage/tests/dots.png 
/usr/share/pyshared/scipy/ndimage/tests/dots.png: PNG image data, 420 x 300, 1-bit colormap, non-interlaced 

Si realizo la prueba (manualmente) una imagen RGBA, entonces la prueba funciona:

In [18]: z = ndi.imread('image.png') 

In [20]: z.shape 
Out[20]: (250, 250, 4) 

In [24]: w = ndi.imread('image.png', flatten = True) 

In [25]: w.shape 
Out[25]: (250, 250) 

Así que no creo que hay algo seriamente mal aquí, sólo que tal vez el archivo dots.png que fue enviado debería haber sido una imagen RGB en lugar de una escala de grises.

+0

Excelente respuesta. ¿También recibes el mensaje de error? – Ingo

+1

Sí, me sale el mismo error en Ubuntu 11.10. – unutbu