def test_intersection(self): self.message("Sparsity intersection") nza = set([ (0,0), (0,1), (2,0), (3,1), (2,3)]) nzb = set([ (0,2), (0,0), (2,2), (2,3)]) a = Sparsity(4,5) for i in nza: a.addNZ(i[0],i[1]) b = Sparsity(4,5) for i in nzb: b.addNZ(i[0],i[1]) c,_=a.patternIntersection(b) for k in range(c.nnz()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza and ind in nzb) c = a * b self.assertEquals(c.nnz(),len(nza.intersection(nzb))) for k in range(c.nnz()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza and ind in nzb)
def test_union(self): self.message("Sparsity union") nza = set([ (0,0), (0,1), (2,0), (3,1)]) nzb = set([ (0,2), (0,0), (2,2)]) a = Sparsity(4,5) for i in nza: a.addNZ(i[0],i[1]) b = Sparsity(4,5) for i in nzb: b.addNZ(i[0],i[1]) c,w =a.patternUnion(b) self.assertEquals(len(w),len(nza.union(nzb))) for k in range(len(w)): ind = (c.row(k),c.getCol()[k]) if (ind in nza and ind in nzb): self.assertEquals(w[k],1 | 2) elif (ind in nza): self.assertEquals(w[k],1) elif (ind in nzb): self.assertEquals(w[k],2) c = a + b self.assertEquals(c.nnz(),len(nza.union(nzb))) for k in range(c.nnz()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza or ind in nzb)
def test_intersection(self): self.message("Sparsity intersection") nza = set([ (0,0), (0,1), (2,0), (3,1), (2,3)]) nzb = set([ (0,2), (0,0), (2,2), (2,3)]) a = Sparsity.sparse(4,5) for i in nza: a.getNZ(i[0],i[1]) b = Sparsity.sparse(4,5) for i in nzb: b.getNZ(i[0],i[1]) c,_=a.patternIntersection(b) for k in range(c.size()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza and ind in nzb) c = a * b self.assertEquals(c.size(),len(nza.intersection(nzb))) for k in range(c.size()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza and ind in nzb)
def test_union(self): self.message("Sparsity union") nza = set([ (0,0), (0,1), (2,0), (3,1)]) nzb = set([ (0,2), (0,0), (2,2)]) a = Sparsity.sparse(4,5) for i in nza: a.getNZ(i[0],i[1]) b = Sparsity.sparse(4,5) for i in nzb: b.getNZ(i[0],i[1]) c,w =a.patternUnion(b) self.assertEquals(len(w),len(nza.union(nzb))) for k in range(len(w)): ind = (c.row(k),c.getCol()[k]) if (ind in nza and ind in nzb): self.assertEquals(w[k],1 | 2) elif (ind in nza): self.assertEquals(w[k],1) elif (ind in nzb): self.assertEquals(w[k],2) c = a + b self.assertEquals(c.size(),len(nza.union(nzb))) for k in range(c.size()): ind = (c.row(k),c.getCol()[k]) self.assertTrue(ind in nza or ind in nzb)
def test_union(self): self.message("Sparsity union") nza = set([(0, 0), (0, 1), (2, 0), (3, 1)]) nzb = set([(0, 2), (0, 0), (2, 2)]) a = Sparsity(4, 5) for i in nza: a.addNZ(i[0], i[1]) b = Sparsity(4, 5) for i in nzb: b.addNZ(i[0], i[1]) c = a.patternUnion(b) c = a + b self.assertEquals(c.nnz(), len(nza.union(nzb))) for k in range(c.nnz()): ind = (c.row(k), c.getCol()[k]) self.assertTrue(ind in nza or ind in nzb)