Version 2.2.24 of graph-tool released!

This version contains bug fixes, improvements to random graph generation, much faster implementation of the spectral module, as well as the complete_graph() and circular_graph() convenience functions. Get it in the download section.

graph
(click on the image to see its source code)

What is graph-tool?

graph-tool is an efficient  python module for manipulation and statistical analysis of  graphs (a.k.a.  networks). Contrary to most other python modules with similar functionality, the core data structures and algorithms are implemented in  C++, making extensive use of template  metaprogramming, based heavily on the  Boost Graph Library. This confers a level of performance which is comparable (both in memory usage and computation time) to that of a pure C/C++ library.

With graph-tool you can do the following:

  • Easily create directed or undirected graphs and manipulate them in an arbitrary fashion, using the convenience and expressiveness of the python language!
  • Associate 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 from the graph, but can be easily recovered.
  • Instantaneously reverse the edge direction of directed graphs, and easily transform directed graphs into undirected, and vice-versa.
  • Save and load your graphs from files using the graphml, GML and dot file formats, which provide interoperability with other software. You can also pickle your graphs at will!
  • Conveniently draw your graphs, using a variety of algorithms and output formats (including to the screen). graph-tool has its own layout algorithms and versatile, interactive drawing routines based on cairo and GTK+, but it can also work as a very comfortable interface to the excellent graphviz package.

graph-tool is fast!

Despite its nice, soft outer appearance of a regular python module, the core algorithms and data structures of graph-tool are written in C++, making use of the  Boost Graph Library and  template metaprogramming, with performance in mind. Most of the time, you can expect the algorithms to run just as fast as if graph-tool were a pure C/C++ library.

Furthermore, many algorithms are implemented in parallel using  OpenMP, which provides excellent performance on multi-core architectures, without degrading the performance on single-core machines.

See the performance comparison between graph-tool and other similar Python libraries.

graph-tool is fully documented!

Every single function in the module is documented in the docstrings and in the online documentation, which is full of examples.

Getting started

You should probably start by the quick start guide, which gives a short overview of the basic features, with some usage examples.

Downloading it

You can get it from the download page. From there you can grab the latest release.

Problems and bugs

See the support page for instructions on how to submit bugs or ask for help.

Related software

See the related software list, for some information of other software out there which is somehow related to graph-tool.

Authorship and license

graph-tool was written by  Tiago de Paula Peixoto and is free software, released under the  GPL.