Python networkx.connected_caveman_graph() Examples
The following are 13
code examples of networkx.connected_caveman_graph().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
networkx
, or try the search function
.
Example #1
Source File: data.py From graph-generation with MIT License | 5 votes |
def test_encode_decode_adj(): ######## code test ########### G = nx.ladder_graph(5) G = nx.grid_2d_graph(20,20) G = nx.ladder_graph(200) G = nx.karate_club_graph() G = nx.connected_caveman_graph(2,3) print(G.number_of_nodes()) adj = np.asarray(nx.to_numpy_matrix(G)) G = nx.from_numpy_matrix(adj) # start_idx = np.random.randint(adj.shape[0]) x_idx = np.array(bfs_seq(G, start_idx)) adj = adj[np.ix_(x_idx, x_idx)] print('adj\n',adj) adj_output = encode_adj(adj,max_prev_node=5) print('adj_output\n',adj_output) adj_recover = decode_adj(adj_output,max_prev_node=5) print('adj_recover\n',adj_recover) print('error\n',np.amin(adj_recover-adj),np.amax(adj_recover-adj)) adj_output = encode_adj_flexible(adj) for i in range(len(adj_output)): print(len(adj_output[i])) adj_recover = decode_adj_flexible(adj_output) print(adj_recover) print(np.amin(adj_recover-adj),np.amax(adj_recover-adj))
Example #2
Source File: data.py From GraphRNN with MIT License | 5 votes |
def test_encode_decode_adj(): ######## code test ########### G = nx.ladder_graph(5) G = nx.grid_2d_graph(20,20) G = nx.ladder_graph(200) G = nx.karate_club_graph() G = nx.connected_caveman_graph(2,3) print(G.number_of_nodes()) adj = np.asarray(nx.to_numpy_matrix(G)) G = nx.from_numpy_matrix(adj) # start_idx = np.random.randint(adj.shape[0]) x_idx = np.array(bfs_seq(G, start_idx)) adj = adj[np.ix_(x_idx, x_idx)] print('adj\n',adj) adj_output = encode_adj(adj,max_prev_node=5) print('adj_output\n',adj_output) adj_recover = decode_adj(adj_output,max_prev_node=5) print('adj_recover\n',adj_recover) print('error\n',np.amin(adj_recover-adj),np.amax(adj_recover-adj)) adj_output = encode_adj_flexible(adj) for i in range(len(adj_output)): print(len(adj_output[i])) adj_recover = decode_adj_flexible(adj_output) print(adj_recover) print(np.amin(adj_recover-adj),np.amax(adj_recover-adj))
Example #3
Source File: test_community.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def test_connected_caveman_graph(): G = nx.connected_caveman_graph(4,3) assert_equal(len(G),12) assert_equal(len(G.nodes()),12) G = nx.connected_caveman_graph(1,5) K5 = nx.complete_graph(5) K5.remove_edge(3,4) assert_true(nx.is_isomorphic(G,K5))
Example #4
Source File: community.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def connected_caveman_graph(l, k): """Returns a connected caveman graph of `l` cliques of size `k`. The connected caveman graph is formed by creating `n` cliques of size `k`, then a single edge in each clique is rewired to a node in an adjacent clique. Parameters ---------- l : int number of cliques k : int size of cliques Returns ------- G : NetworkX Graph connected caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.connected_caveman_graph(3, 3) References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ G = nx.caveman_graph(l, k) for start in range(0, l * k, k): G.remove_edge(start, start + 1) G.add_edge(start, (start - 1) % (l * k)) return G
Example #5
Source File: test_community.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_connected_caveman_graph(): G = nx.connected_caveman_graph(4, 3) assert_equal(len(G), 12) G = nx.connected_caveman_graph(1, 5) K5 = nx.complete_graph(5) K5.remove_edge(3, 4) assert_true(nx.is_isomorphic(G, K5))
Example #6
Source File: community.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def connected_caveman_graph(l, k): """Returns a connected caveman graph of `l` cliques of size `k`. The connected caveman graph is formed by creating `n` cliques of size `k`, then a single edge in each clique is rewired to a node in an adjacent clique. Parameters ---------- l : int number of cliques k : int size of cliques Returns ------- G : NetworkX Graph connected caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.connected_caveman_graph(3, 3) References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ G = nx.caveman_graph(l, k) for start in range(0, l * k, k): G.remove_edge(start, start + 1) G.add_edge(start, (start - 1) % (l * k)) return G
Example #7
Source File: test_community.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_connected_caveman_graph(): G = nx.connected_caveman_graph(4, 3) assert_equal(len(G), 12) G = nx.connected_caveman_graph(1, 5) K5 = nx.complete_graph(5) K5.remove_edge(3, 4) assert_true(nx.is_isomorphic(G, K5))
Example #8
Source File: community.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 4 votes |
def caveman_graph(l, k): """Returns a caveman graph of ``l`` cliques of size ``k``. Parameters ---------- l : int Number of cliques k : int Size of cliques Returns ------- G : NetworkX Graph caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.caveman_graph(3, 3) See also -------- connected_caveman_graph References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ # l disjoint cliques of size k G = nx.empty_graph(l*k) G.name = "caveman_graph(%s,%s)" % (l*k, k) if k > 1: for start in range(0, l*k, k): edges = itertools.combinations(range(start, start+k), 2) G.add_edges_from(edges) return G
Example #9
Source File: community.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 4 votes |
def connected_caveman_graph(l, k): """Returns a connected caveman graph of ``l`` cliques of size ``k``. The connected caveman graph is formed by creating ``n`` cliques of size ``k``, then a single edge in each clique is rewired to a node in an adjacent clique. Parameters ---------- l : int number of cliques k : int size of cliques Returns ------- G : NetworkX Graph connected caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.connected_caveman_graph(3, 3) References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ G = nx.caveman_graph(l, k) G.name = "connected_caveman_graph(%s,%s)" % (l, k) for start in range(0, l*k, k): G.remove_edge(start, start+1) G.add_edge(start, (start-1) % (l*k)) return G
Example #10
Source File: community.py From Carnets with BSD 3-Clause "New" or "Revised" License | 4 votes |
def caveman_graph(l, k): """Returns a caveman graph of `l` cliques of size `k`. Parameters ---------- l : int Number of cliques k : int Size of cliques Returns ------- G : NetworkX Graph caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.caveman_graph(3, 3) See also -------- connected_caveman_graph References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ # l disjoint cliques of size k G = nx.empty_graph(l * k) if k > 1: for start in range(0, l * k, k): edges = itertools.combinations(range(start, start + k), 2) G.add_edges_from(edges) return G
Example #11
Source File: community.py From Carnets with BSD 3-Clause "New" or "Revised" License | 4 votes |
def ring_of_cliques(num_cliques, clique_size): """Defines a "ring of cliques" graph. A ring of cliques graph is consisting of cliques, connected through single links. Each clique is a complete graph. Parameters ---------- num_cliques : int Number of cliques clique_size : int Size of cliques Returns ------- G : NetworkX Graph ring of cliques graph Raises ------ NetworkXError If the number of cliques is lower than 2 or if the size of cliques is smaller than 2. Examples -------- >>> G = nx.ring_of_cliques(8, 4) See Also -------- connected_caveman_graph Notes ----- The `connected_caveman_graph` graph removes a link from each clique to connect it with the next clique. Instead, the `ring_of_cliques` graph simply adds the link without removing any link from the cliques. """ if num_cliques < 2: raise nx.NetworkXError('A ring of cliques must have at least ' 'two cliques') if clique_size < 2: raise nx.NetworkXError('The cliques must have at least two nodes') G = nx.Graph() for i in range(num_cliques): edges = itertools.combinations(range(i * clique_size, i * clique_size + clique_size), 2) G.add_edges_from(edges) G.add_edge(i * clique_size + 1, (i + 1) * clique_size % (num_cliques * clique_size)) return G
Example #12
Source File: community.py From aws-kube-codesuite with Apache License 2.0 | 4 votes |
def caveman_graph(l, k): """Returns a caveman graph of `l` cliques of size `k`. Parameters ---------- l : int Number of cliques k : int Size of cliques Returns ------- G : NetworkX Graph caveman graph Notes ----- This returns an undirected graph, it can be converted to a directed graph using :func:`nx.to_directed`, or a multigraph using ``nx.MultiGraph(nx.caveman_graph(l, k))``. Only the undirected version is described in [1]_ and it is unclear which of the directed generalizations is most useful. Examples -------- >>> G = nx.caveman_graph(3, 3) See also -------- connected_caveman_graph References ---------- .. [1] Watts, D. J. 'Networks, Dynamics, and the Small-World Phenomenon.' Amer. J. Soc. 105, 493-527, 1999. """ # l disjoint cliques of size k G = nx.empty_graph(l * k) if k > 1: for start in range(0, l * k, k): edges = itertools.combinations(range(start, start + k), 2) G.add_edges_from(edges) return G
Example #13
Source File: community.py From aws-kube-codesuite with Apache License 2.0 | 4 votes |
def ring_of_cliques(num_cliques, clique_size): """Defines a "ring of cliques" graph. A ring of cliques graph is consisting of cliques, connected through single links. Each clique is a complete graph. Parameters ---------- num_cliques : int Number of cliques clique_size : int Size of cliques Returns ------- G : NetworkX Graph ring of cliques graph Raises ------ NetworkXError If the number of cliques is lower than 2 or if the size of cliques is smaller than 2. Examples -------- >>> G = nx.ring_of_cliques(8, 4) See Also -------- connected_caveman_graph Notes ----- The `connected_caveman_graph` graph removes a link from each clique to connect it with the next clique. Instead, the `ring_of_cliques` graph simply adds the link without removing any link from the cliques. """ if num_cliques < 2: raise nx.NetworkXError('A ring of cliques must have at least ' 'two cliques') if clique_size < 2: raise nx.NetworkXError('The cliques must have at least two nodes') G = nx.Graph() for i in range(num_cliques): edges = itertools.combinations(range(i * clique_size, i * clique_size + clique_size), 2) G.add_edges_from(edges) G.add_edge(i * clique_size + 1, (i + 1) * clique_size % (num_cliques * clique_size)) return G