I have a network that I would like to bound by clique, but I haven't quite figured out how to do this correctly. I am able to do this same process using k-cores, but not sure what the right process for creating a graph with only cliques in it.
I was hoping if I show my process for find subgraphs using the k_core
function, someone could help me alter my process to find subgraphs using the clique
function.
To start, I create a graph, I'll use the karate club one:
In [1]: import networkx as nx
In [2]: g = nx.karate_club_graph()
Plot to graph in iPython:
In [3]: pylab inline
Populating the interactive namespace from numpy and matplotlib
In [4]: nx.draw(g)
Next, I find all edges that are within the 4-core (have 4 or more edges):
In [5]: g_4k_edges = nx.k_core(g, k=4).edges()
Add those edges to a new graph:
In [6]: g_4k = nx.Graph()
In [7]: g_4k.add_edges_from(g_4k_edges)
Plot the 4-core graph:
In [8]: nx.draw(g_4k)
Any idea on how to do this, but instead of using k-cores to bound the network, use cliques that have 4 or more vertices?
nodes
a set (e.g.nodes = set(n for clq in cliques4 for n in clq)
) since otherwise it can contain repeats. – Cease