Example #1
0
    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()))
Example #2
0
 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())
Example #3
0
 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())