This package implements community detection.
Return the partition of the nodes at the given level
A dendrogram is a tree and each level is a partition of the graph nodes. Level 0 is the first partition, which contains the smallest communities, and the best is len(dendrogram)  1. The higher the level is, the bigger are the communities
Parameters:  dendrogram : list of dict
level : int


Returns:  partition : dictionnary

Raises:  KeyError :

See also
Examples
>>> G=nx.erdos_renyi_graph(100, 0.01)
>>> dendrogram = generate_dendrogram(G)
>>> for level in range(len(dendrogram)  1) :
>>> print("partition at level", level, "is", partition_at_level(dendrogram, level)) # NOQA
Compute the modularity of a partition of a graph
Parameters:  partition : dict
graph : networkx.Graph
weight : str, optional


Returns:  modularity : float

Raises:  KeyError :
ValueError :
TypeError :

References
structure in networks. Physical Review E 69, 26113(2004).
Examples
>>> G=nx.erdos_renyi_graph(100, 0.01)
>>> part = best_partition(G)
>>> modularity(part, G)
Compute the partition of the graph nodes which maximises the modularity (or try..) using the Louvain heuristices
This is the partition of highest modularity, i.e. the highest partition of the dendrogram generated by the Louvain algorithm.
Parameters:  graph : networkx.Graph
partition : dict, optional
weight : str, optional
resolution : double, optional


Returns:  partition : dictionnary

Raises:  NetworkXError :

See also
Notes
Uses Louvain algorithm
References
large networks. J. Stat. Mech 10008, 112(2008).
Examples
>>> #Basic usage
>>> G=nx.erdos_renyi_graph(100, 0.01)
>>> part = best_partition(G)
>>> #other example to display a graph with its community :
>>> #better with karate_graph() as defined in networkx examples
>>> #erdos renyi don't have true community structure
>>> G = nx.erdos_renyi_graph(30, 0.05)
>>> #first compute the best partition
>>> partition = community.best_partition(G)
>>> #drawing
>>> size = float(len(set(partition.values())))
>>> pos = nx.spring_layout(G)
>>> count = 0.
>>> for com in set(partition.values()) :
>>> count += 1.
>>> list_nodes = [nodes for nodes in partition.keys()
>>> if partition[nodes] == com]
>>> nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 20,
node_color = str(count / size))
>>> nx.draw_networkx_edges(G,pos, alpha=0.5)
>>> plt.show()
Find communities in the graph and return the associated dendrogram
A dendrogram is a tree and each level is a partition of the graph nodes. Level 0 is the first partition, which contains the smallest communities, and the best is len(dendrogram)  1. The higher the level is, the bigger are the communities
Parameters:  graph : networkx.Graph
part_init : dict, optional
weight : str, optional
resolution : double, optional


Returns:  dendrogram : list of dictionaries

Raises:  TypeError :

See also
Notes
Uses Louvain algorithm
References
networks. J. Stat. Mech 10008, 112(2008).
Examples
>>> G=nx.erdos_renyi_graph(100, 0.01)
>>> dendo = generate_dendrogram(G)
>>> for level in range(len(dendo)  1) :
>>> print("partition at level", level,
>>> "is", partition_at_level(dendo, level))
:param weight:
:type weight:
Produce the graph where nodes are the communities
there is a link of weight w between communities if the sum of the weights of the links between their elements is w
Parameters:  partition : dict
graph : networkx.Graph
weight : str, optional


Returns:  g : networkx.Graph

Examples
>>> n = 5
>>> g = nx.complete_graph(2*n)
>>> part = dict([])
>>> for node in g.nodes() :
>>> part[node] = node % 2
>>> ind = induced_graph(part, g)
>>> goal = nx.Graph()
>>> goal.add_weighted_edges_from([(0,1,n*n),(0,0,n*(n1)/2), (1, 1, n*(n1)/2)]) # NOQA
>>> nx.is_isomorphic(int, goal)
True