[Scipy-svn] r2499 - in trunk/Lib: linsolve/umfpack sparse

scipy-svn at scipy.org scipy-svn at scipy.org
Sat Jan 6 01:56:27 CST 2007


Author: wnbell
Date: 2007-01-06 01:56:20 -0600 (Sat, 06 Jan 2007)
New Revision: 2499

Modified:
   trunk/Lib/linsolve/umfpack/umfpack.py
   trunk/Lib/sparse/sparse.py
Log:
added ensure_sorted_indices() to csr_matrix and csc_matrix
updated umfpack to sort indices



Modified: trunk/Lib/linsolve/umfpack/umfpack.py
===================================================================
--- trunk/Lib/linsolve/umfpack/umfpack.py	2007-01-06 07:39:53 UTC (rev 2498)
+++ trunk/Lib/linsolve/umfpack/umfpack.py	2007-01-06 07:56:20 UTC (rev 2499)
@@ -337,6 +337,9 @@
         sparsity pattern."""
         self.free_symbolic()
 
+        #row/column indices cannot be assumed to be sorted
+        mtx.ensure_sorted_indices(inplace=True)
+
         indx = self._getIndx( mtx )
         if self.isReal:
             status, self._symbolic\
@@ -370,6 +373,9 @@
 
         self.free_numeric()
 
+        #row/column indices cannot be assumed to be sorted
+        mtx.ensure_sorted_indices(inplace=True)
+
         if self._symbolic is None:
             self.symbolic( mtx )
 

Modified: trunk/Lib/sparse/sparse.py
===================================================================
--- trunk/Lib/sparse/sparse.py	2007-01-06 07:39:53 UTC (rev 2498)
+++ trunk/Lib/sparse/sparse.py	2007-01-06 07:56:20 UTC (rev 2499)
@@ -971,6 +971,17 @@
         self.nzmax = nnz
         self._check()
 
+    def ensure_sorted_indices(self,inplace=False):
+        """Return a copy of this matrix where the row indices are sorted
+        """
+        if inplace:
+            temp = self.tocsr().tocsc()
+            self.rowind = temp.rowind
+            self.indptr = temp.indptr
+            self.data   = temp.data
+        else:
+            return self.tocsr().tocsc()
+
     def copy(self):
         new = csc_matrix(self.shape, nzmax=self.nzmax, dtype=self.dtype)
         new.data = self.data.copy()
@@ -1463,6 +1474,18 @@
         self.nzmax = nnz
         self._check()
 
+    def ensure_sorted_indices(self,inplace=False):
+        """Return a copy of this matrix where the column indices are sorted
+        """
+        if inplace:
+            temp = self.tocsc().tocsr()
+            self.colind = temp.colind
+            self.indptr = temp.indptr
+            self.data   = temp.data
+        else:
+            return self.tocsc().tocsr()
+
+
     def copy(self):
         new = csr_matrix(self.shape, nzmax=self.nzmax, dtype=self.dtype)
         new.data = self.data.copy()



More information about the Scipy-svn mailing list