Puneet Varma (Editor)

Graph tool

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Tiago de Paula Peixoto

Operating system
  
OS X, Linux

Written in
  
Python, C++

Type
  
Software library

Stable release
  
2.12 / 6 November 2015; 16 months ago (2015-11-06)

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. This type of approach can confer a level of performance which is comparable (both in memory usage and computation time) to that of a pure C++ library, which can be several orders of magnitude better than pure Python.

Contents

Furthermore, 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.
  • Suitabilty

    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.

    References

    Graph-tool Wikipedia