def test_multigraph_lcc_networkx(self): expected_g_matrix = np.array([[0, 1, 0, 0], [0, 0, 1, 1], [0, 0, 0, 0], [0, 1, 0, 0]]) expected_f_matrix = np.array([[0, 1, 0, 0], [1, 0, 1, 1], [0, 0, 0, 0], [0, 1, 0, 0]]) expected_mats = [expected_f_matrix, expected_g_matrix] expected_nodelist = np.array([1, 3, 4, 6]) g = nx.DiGraph() [g.add_node(i) for i in range(1, 7)] g.add_edge(1, 3) g.add_edge(3, 4) g.add_edge(3, 4) g.add_edge(3, 6) g.add_edge(6, 3) g.add_edge(4, 2) f = g.copy() f.add_edge(5, 4) f.remove_edge(4, 2) f.add_edge(3, 1) lccs, nodelist = gus.multigraph_lcc_intersection([f, g], return_inds=True) for i, graph in enumerate(lccs): np.testing.assert_array_equal(nx.to_numpy_array(graph), expected_mats[i]) np.testing.assert_array_equal(nodelist, expected_nodelist) lccs = gus.multigraph_lcc_intersection([f, g], return_inds=False) for i, graph in enumerate(lccs): np.testing.assert_array_equal(nx.to_numpy_array(graph), expected_mats[i])
def test_multigraph_lcc_recurse_numpylist(self): g = np.zeros((6, 6)) g[0, 2] = 1 g[2, 1] = 1 g[1, 3] = 1 g[3, 4] = 1 # unconnected 5 for this graph f = np.zeros((6, 6)) f[0, 1] = 1 f[1, 3] = 1 f[3, 4] = 1 f[3, 5] = 1 f[5, 2] = 1 expected_g_lcc = expected_f_lcc = np.zeros((3, 3)) expected_g_lcc[0, 1] = 1 expected_g_lcc[1, 2] = 1 expected_mats = [expected_g_lcc, expected_f_lcc] expected_nodelist = np.array([1, 3, 4]) lccs, nodelist = gus.multigraph_lcc_intersection([f, g], return_inds=True) for i, graph in enumerate(lccs): np.testing.assert_array_equal(graph, expected_mats[i]) np.testing.assert_array_equal(nodelist, expected_nodelist)