def test_multiply(self): # check scalar multiplication block = self.block_m m = self.basic_m * 5.0 scipy_mat = bmat([[block, block], [None, block]], format='coo') mulscipy_mat = scipy_mat * 5.0 dinopy_mat = m.tocoo() drow = np.sort(dinopy_mat.row) dcol = np.sort(dinopy_mat.col) ddata = np.sort(dinopy_mat.data) srow = np.sort(mulscipy_mat.row) scol = np.sort(mulscipy_mat.col) sdata = np.sort(mulscipy_mat.data) self.assertListEqual(drow.tolist(), srow.tolist()) self.assertListEqual(dcol.tolist(), scol.tolist()) self.assertListEqual(ddata.tolist(), sdata.tolist()) m = 5.0 * self.basic_m dinopy_mat = m.tocoo() drow = np.sort(dinopy_mat.row) dcol = np.sort(dinopy_mat.col) ddata = np.sort(dinopy_mat.data) self.assertListEqual(drow.tolist(), srow.tolist()) self.assertListEqual(dcol.tolist(), scol.tolist()) self.assertListEqual(ddata.tolist(), sdata.tolist()) # check dot product with block vector block = self.block_m m = self.basic_m scipy_mat = bmat([[block, block], [None, block]], format='coo') x = BlockVector(2) x.set_block(0, np.ones(block.shape[1], dtype=np.float64)) x.set_block(1, np.ones(block.shape[1], dtype=np.float64)) res_scipy = scipy_mat.dot(x.flatten()) res_dinopy = m * x res_dinopy_flat = m * x.flatten() self.assertListEqual(res_dinopy.tolist(), res_scipy.tolist()) self.assertListEqual(res_dinopy_flat.tolist(), res_scipy.tolist()) dense_mat = dinopy_mat.toarray() self.basic_m *= 5.0 self.assertTrue(np.allclose(dense_mat, self.basic_m.toarray()))
def test_tocsc(self): block = self.block_m m = self.basic_m scipy_mat = bmat([[block, block], [None, block]], format='csc') dinopy_mat = m.tocsc() dindices = np.sort(dinopy_mat.indices) dindptr = np.sort(dinopy_mat.indptr) ddata = np.sort(dinopy_mat.data) sindices = np.sort(scipy_mat.indices) sindptr = np.sort(scipy_mat.indptr) sdata = np.sort(scipy_mat.data) self.assertListEqual(dindices.tolist(), sindices.tolist()) self.assertListEqual(dindptr.tolist(), sindptr.tolist()) self.assertListEqual(ddata.tolist(), sdata.tolist())
def test_tocoo(self): block = self.block_m m = self.basic_m scipy_mat = bmat([[block, block], [None, block]], format='coo') dinopy_mat = m.tocoo() drow = np.sort(dinopy_mat.row) dcol = np.sort(dinopy_mat.col) ddata = np.sort(dinopy_mat.data) srow = np.sort(scipy_mat.row) scol = np.sort(scipy_mat.col) sdata = np.sort(scipy_mat.data) self.assertListEqual(drow.tolist(), srow.tolist()) self.assertListEqual(dcol.tolist(), scol.tolist()) self.assertListEqual(ddata.tolist(), sdata.tolist())