Graph-tool

graph-tool is a Python module for manipulation and statistical analysis of graphs (AKA networks). The core data structures and algorithms of graph-tool are implemented in C++, making extensive use of metaprogramming, based heavily on the Boost Graph Library. Many algorithms are implemented in parallel using OpenMP, which provides increased performance on multi-core architectures.

Features

 * Creation and manipulation of directed or undirected graphs.
 * Association of arbitrary information to the vertices, edges or even the graph itself, by means of property maps.
 * Filter vertices and/or edges "on the fly", such that they appear to have been removed.
 * Support for dot, Graph Modelling Language and GraphML formats.
 * Convenient and powerful graph drawing based on cairo or Graphviz.
 * Support for typical statistical measurements: degree/property histogram, combined degree/property histogram, vertex-vertex correlations, assortativity, average vertex-vertex shortest path, etc.
 * Support for several graph-theoretical algorithms: such as graph isomorphism, subgraph isomorphism, minimum spanning tree, connected components, dominator tree, maximum flow, etc.
 * Support for several centrality measures.
 * Support for clustering coefficients, as well as network motif statistics and community structure detection.
 * Generation of random graphs, with arbitrary degree distribution and correlations.
 * Support for well-established network models: Price, Barabási-Albert, Geometric Networks, Multidimensional lattice graph, etc.

Suitability
Graph-tool can be used to work with very large graphs in a variety of contexts, including simulation of cellular tissue, data mining,  analysis of social networks,  analysis of P2P systems, large-scale modeling of agent-based systems, study of academic Genealogy trees, theoretical assessment and modeling of network clustering, large-scale call graph analysis, and analysis of the brain's Connectome.