When testing scipy using the nose package using scipy.test()
, the test fails under Ubuntu 12.04 with all the vanilla packages installed. Do I have to worry, and if yes how can I fix this?
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)
assertRaises(exception, callable, *args, **kwds) Test that an exception (first argument) is raised when a function is called with any positional or keyword arguments. The test passes if the expected exception is raised, is an error if another exception is raised, or fails if no exception is raised.
There are two ways you can use assertRaises: using keyword arguments. Just pass the exception, the callable function and the parameters of the callable function as keyword arguments that will elicit the exception. Make a function call that should raise the exception with a context.
In Python, exceptions can be handled using a try statement. The critical operation which can raise an exception is placed inside the try clause. The code that handles the exceptions is written in the except clause. We can thus choose what operations to perform once we have caught the exception.
Calculates the T-test for the means of TWO INDEPENDENT samples of scores. This is a two-sided test for the null hypothesis that 2 independent samples have identical average (expected) values. This test assumes that the populations have identical variances.
If you take a look inside /usr/lib/python2.7/dist-packages/scipy/ndimage/tests/test_io.py
you should see:
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))
This test seems to be testing if flatten=True
converts an RGB image into a 1-bit greyscale image.
On my Ubuntu 11.10 system, however, dots.png is already a 1-bit image file:
% 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
If I perform the test (manually) on a RGBA image, then the test works:
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)
So I don't think there is anything seriously wrong here, just that perhaps the dots.png
file that was shipped should have been an RGB image instead of a greyscale one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With