def test_is_bipartite(self): biadjacency = star_wars(metadata=False) adjacency = bipartite2undirected(biadjacency) self.assertTrue(is_bipartite(adjacency)) bipartite, pred = is_bipartite(adjacency, return_biadjacency=True) self.assertEqual(bipartite, True) self.assertEqual(np.all(biadjacency.data == pred.data), True) adjacency = sparse.identity(2, format='csr') bipartite, biadjacency = is_bipartite(adjacency, return_biadjacency=True) self.assertEqual(bipartite, False) self.assertIsNone(biadjacency) adjacency = directed2undirected(cyclic_digraph(3)) bipartite, biadjacency = is_bipartite(adjacency, return_biadjacency=True) self.assertEqual(bipartite, False) self.assertIsNone(biadjacency) with self.assertRaises(ValueError): is_bipartite(cyclic_digraph(3)) self.assertTrue(~is_bipartite(sparse.eye(3)))
def test_largest_cc(self): adjacency = cyclic_digraph(3) adjacency += adjacency.T largest_cc, indices = largest_connected_component(adjacency, return_labels=True) self.assertAlmostEqual( np.linalg.norm(largest_cc.toarray() - np.array([[0, 1, 1], [1, 0, 1], [1, 1, 0]])), 0) self.assertEqual(np.linalg.norm(indices - np.array([0, 1, 2])), 0) biadjacency = star_wars(metadata=False) largest_cc, indices = largest_connected_component(biadjacency, return_labels=True) self.assertAlmostEqual( np.linalg.norm( largest_cc.toarray() - np.array([[1, 0, 1], [1, 0, 0], [1, 1, 1], [0, 1, 1]])), 0) self.assertEqual(np.linalg.norm(indices[0] - np.array([0, 1, 2, 3])), 0) self.assertEqual(np.linalg.norm(indices[1] - np.array([0, 1, 2])), 0) self.assertTrue( isinstance( largest_connected_component(adjacency, return_labels=False), sparse.csr_matrix))
def test_bilouvain(self): biadjacency = star_wars() adjacency = bipartite2undirected(biadjacency) louvain = Louvain(modularity='newman') labels1 = louvain.fit_transform(adjacency) louvain.fit(biadjacency) labels2 = np.concatenate((louvain.labels_row_, louvain.labels_col_)) self.assertTrue((labels1 == labels2).all())
def test_bimodularity(self): biadjacency = star_wars() labels_row = np.array([0, 0, 1, 1]) labels_col = np.array([0, 1, 0]) self.assertEqual(bimodularity(biadjacency, labels_row, labels_col), 0.1875) with self.assertRaises(ValueError): bimodularity(biadjacency, labels_row[:2], labels_col) with self.assertRaises(ValueError): bimodularity(biadjacency, labels_row, labels_col[:2])
def test_aggregate(self): adjacency = house() biadjacency = star_wars() louvain = Louvain(return_aggregate=True) louvain.fit(adjacency) self.assertTrue(np.issubdtype(louvain.adjacency_.dtype, np.float_)) bilouvain = BiLouvain(return_aggregate=True) bilouvain.fit(biadjacency) self.assertTrue(np.issubdtype(bilouvain.biadjacency_.dtype, np.float_))
def test_options(self): biadjacency = star_wars(metadata=False) n_row, n_col = biadjacency.shape min_dim = min(n_row, n_col) - 1 gsvd = GSVD(n_components=5, regularization=0., solver='halko', relative_regularization=True) with self.assertWarns(Warning): gsvd.fit(biadjacency) self.assertEqual(gsvd.embedding_row_.shape, (n_row, min_dim)) self.assertEqual(gsvd.embedding_col_.shape, (n_col, min_dim)) gsvd = GSVD(n_components=1, regularization=0.1, solver='halko', relative_regularization=True) gsvd.fit(biadjacency) gsvd.predict(np.random.rand(n_col))
def setUp(self): """Simple regularized adjacency and biadjacency for tests.""" self.undirected = SparseLR(house(), [(np.ones(5), np.ones(5))]) self.bipartite = SparseLR(star_wars(), [(np.ones(4), np.ones(3))])
def setUp(self): """Basic biadjacency for tests.""" self.biadjacency = star_wars()