[Scipy-svn] r7169 - in trunk/scipy/sparse/linalg/eigen/arpack: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Sun Feb 20 18:34:22 EST 2011


Author: ptvirtan
Date: 2011-02-20 17:34:21 -0600 (Sun, 20 Feb 2011)
New Revision: 7169

Modified:
   trunk/scipy/sparse/linalg/eigen/arpack/arpack.py
   trunk/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py
Log:
BUG: sparse/arpack: raise correct exception if WHICH parameter wrong

Thanks to Fabian Pedregosa for the patch.

Modified: trunk/scipy/sparse/linalg/eigen/arpack/arpack.py
===================================================================
--- trunk/scipy/sparse/linalg/eigen/arpack/arpack.py	2011-02-20 17:02:32 UTC (rev 7168)
+++ trunk/scipy/sparse/linalg/eigen/arpack/arpack.py	2011-02-20 23:34:21 UTC (rev 7169)
@@ -136,6 +136,13 @@
           "DSEUPD.")
 }
 
+# accepted values of parameter WHICH in _SEUPD
+_SEUPD_WHICH = ['LM', 'SM', 'LA', 'SA', 'BE']
+
+# accepted values of parameter WHICH in _NAUPD
+_NEUPD_WHICH = ['LM', 'SM', 'LR', 'SR', 'LI', 'SI']
+
+
 class ArpackError(RuntimeError):
     """
     ARPACK error
@@ -231,8 +238,8 @@
 class _SymmetricArpackParams(_ArpackParams):
     def __init__(self, n, k, tp, matvec, sigma=None,
                  ncv=None, v0=None, maxiter=None, which="LM", tol=0):
-        if not which in ['LM', 'SM', 'LA', 'SA', 'BE']:
-            raise ValueError("which must be one of %s" % ' '.join(whiches))
+        if which not in _SEUPD_WHICH:
+            raise ValueError("which must be one of %s" % ' '.join(_SEUPD_WHICH))
         if k >= n:
             raise ValueError("k must be less than rank(A), k=%d" % k)
 
@@ -304,8 +311,8 @@
 class _UnsymmetricArpackParams(_ArpackParams):
     def __init__(self, n, k, tp, matvec, sigma=None,
                  ncv=None, v0=None, maxiter=None, which="LM", tol=0):
-        if not which in ["LM", "SM", "LR", "SR", "LI", "SI"]:
-            raise ValueError("Parameter which must be one of %s" % ' '.join(whiches))
+        if which not in _NEUPD_WHICH:
+            raise ValueError("Parameter which must be one of %s" % ' '.join(_NEUPD_WHICH))
         if k >= n-1:
             raise ValueError("k must be less than rank(A)-1, k=%d" % k)
 

Modified: trunk/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py
===================================================================
--- trunk/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py	2011-02-20 17:02:32 UTC (rev 7168)
+++ trunk/scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py	2011-02-20 23:34:21 UTC (rev 7169)
@@ -353,6 +353,13 @@
     A = csc_matrix(np.zeros((2,3)))
     assert_raises(ValueError, eigs, A)
 
+
+def test_eigen_bad_kwargs():
+    # Test eigen on wrong keyword argument
+    A = csc_matrix(np.zeros((2,2)))
+    assert_raises(ValueError, eigs, A, which='XX')
+
+
 def test_eigs_operator():
     # Check inferring LinearOperator dtype
     fft_op = LinearOperator((6, 6), np.fft.fft)




More information about the Scipy-svn mailing list