def check_format(self, full_check=True): """check whether the matrix format is valid *Parameters*: full_check: True - rigorous check, O(N) operations : default False - basic check, O(1) operations """ M, N = self.shape R, C = self.blocksize # index arrays should have integer data types if self.indptr.dtype.kind != 'i': warn("indptr array has non-integer dtype (%s)" \ % self.indptr.dtype.name ) if self.indices.dtype.kind != 'i': warn("indices array has non-integer dtype (%s)" \ % self.indices.dtype.name ) # only support 32-bit ints for now self.indptr = np.asarray(self.indptr, np.intc) self.indices = np.asarray(self.indices, np.intc) self.data = to_native(self.data) # check array shapes if np.rank(self.indices) != 1 or np.rank(self.indptr) != 1: raise ValueError, "indices, and indptr should be rank 1" if np.rank(self.data) != 3: raise ValueError, "data should be rank 3" # check index pointer if (len(self.indptr) != M / R + 1): raise ValueError, \ "index pointer size (%d) should be (%d)" % \ (len(self.indptr), M/R + 1) if (self.indptr[0] != 0): raise ValueError, "index pointer should start with 0" # check index and data arrays if (len(self.indices) != len(self.data)): raise ValueError, "indices and data should have the same size" if (self.indptr[-1] > len(self.indices)): raise ValueError, \ "Last value of index pointer should be less than "\ "the size of index and data arrays" self.prune() if full_check: #check format validity (more expensive) if self.nnz > 0: if self.indices.max() >= N / C: print "max index", self.indices.max() raise ValueError, "column index values must be < %d" % (N / C) if self.indices.min() < 0: raise ValueError, "column index values must be >= 0" if diff(self.indptr).min() < 0: raise ValueError, 'index pointer values must form a " \
def _check(self): """ Checks data structure for consistency """ nnz = self.nnz # index arrays should have integer data types if self.row.dtype.kind != 'i': warn("row index array has non-integer dtype (%s) " \ % self.row.dtype.name ) if self.col.dtype.kind != 'i': warn("col index array has non-integer dtype (%s) " \ % self.col.dtype.name ) # only support 32-bit ints for now self.row = np.asarray(self.row, dtype=np.intc) self.col = np.asarray(self.col, dtype=np.intc) self.data = to_native(self.data) if nnz > 0: if self.row.max() >= self.shape[0]: raise ValueError('row index exceedes matrix dimensions') if self.col.max() >= self.shape[1]: raise ValueError('column index exceedes matrix dimensions') if self.row.min() < 0: raise ValueError('negative row index found') if self.col.min() < 0: raise ValueError('negative column index found')
def check_format(self, full_check=True): """check whether the matrix format is valid Parameters ========== - full_check : {bool} - True - rigorous check, O(N) operations : default - False - basic check, O(1) operations """ #use _swap to determine proper bounds major_name,minor_name = self._swap(('row','column')) major_dim,minor_dim = self._swap(self.shape) # index arrays should have integer data types if self.indptr.dtype.kind != 'i': warn("indptr array has non-integer dtype (%s)" \ % self.indptr.dtype.name ) if self.indices.dtype.kind != 'i': warn("indices array has non-integer dtype (%s)" \ % self.indices.dtype.name ) # only support 32-bit ints for now self.indptr = np.asarray(self.indptr, dtype=np.intc) self.indices = np.asarray(self.indices, dtype=np.intc) self.data = to_native(self.data) # check array shapes if np.rank(self.data) != 1 or np.rank(self.indices) != 1 or np.rank(self.indptr) != 1: raise ValueError('data, indices, and indptr should be rank 1') # check index pointer if (len(self.indptr) != major_dim + 1 ): raise ValueError("index pointer size (%d) should be (%d)" % (len(self.indptr), major_dim + 1)) if (self.indptr[0] != 0): raise ValueError("index pointer should start with 0") # check index and data arrays if (len(self.indices) != len(self.data)): raise ValueError("indices and data should have the same size") if (self.indptr[-1] > len(self.indices)): raise ValueError("Last value of index pointer should be less than " "the size of index and data arrays") self.prune() if full_check: #check format validity (more expensive) if self.nnz > 0: if self.indices.max() >= minor_dim: raise ValueError("%s index values must be < %d" % (minor_name,minor_dim)) if self.indices.min() < 0: raise ValueError("%s index values must be >= 0" % minor_name) if np.diff(self.indptr).min() < 0: raise ValueError("index pointer values must form a " "non-decreasing sequence")
def check_format(self, full_check=True): """check whether the matrix format is valid *Parameters*: full_check: True - rigorous check, O(N) operations : default False - basic check, O(1) operations """ M,N = self.shape R,C = self.blocksize # index arrays should have integer data types if self.indptr.dtype.kind != 'i': warn("indptr array has non-integer dtype (%s)" \ % self.indptr.dtype.name ) if self.indices.dtype.kind != 'i': warn("indices array has non-integer dtype (%s)" \ % self.indices.dtype.name ) # only support 32-bit ints for now self.indptr = np.asarray(self.indptr, np.intc) self.indices = np.asarray(self.indices, np.intc) self.data = to_native(self.data) # check array shapes if np.rank(self.indices) != 1 or np.rank(self.indptr) != 1: raise ValueError,"indices, and indptr should be rank 1" if np.rank(self.data) != 3: raise ValueError,"data should be rank 3" # check index pointer if (len(self.indptr) != M/R + 1 ): raise ValueError, \ "index pointer size (%d) should be (%d)" % \ (len(self.indptr), M/R + 1) if (self.indptr[0] != 0): raise ValueError,"index pointer should start with 0" # check index and data arrays if (len(self.indices) != len(self.data)): raise ValueError,"indices and data should have the same size" if (self.indptr[-1] > len(self.indices)): raise ValueError, \ "Last value of index pointer should be less than "\ "the size of index and data arrays" self.prune() if full_check: #check format validity (more expensive) if self.nnz > 0: if self.indices.max() >= N/C: print "max index",self.indices.max() raise ValueError, "column index values must be < %d" % (N/C) if self.indices.min() < 0: raise ValueError, "column index values must be >= 0" if diff(self.indptr).min() < 0: raise ValueError,'index pointer values must form a " \