[[BlogList(recent=1, max_size=8000, format=float)]] {{{ #!html
graph
(click on the image to see its source code)
}}} = What is graph-tool? = graph-tool is an efficient [http://www.python.org python] module for manipulation and statistical analysis of [http://en.wikipedia.org/wiki/Graph_%28mathematics%29 graphs] (a.k.a. [http://en.wikipedia.org/wiki/Network_theory networks]). Contrary to most other python modules with similar functionality, the core data structures and algorithms are implemented in [http://en.wikipedia.org/wiki/C%2B%2B C++], making extensive use of template [http://en.wikipedia.org/wiki/Metaprogramming metaprogramming], based heavily on the [http://www.boost.org/doc/libs/release/libs/graph Boost Graph Library]. This confers a level of [[Performance|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: {{{ #!html
  • 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 [http://www.boost.org/doc/libs/release/libs/graph Boost Graph Library] and [http://en.wikipedia.org/wiki/Template_metaprogramming 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 [http://en.wikipedia.org/wiki/OpenMP OpenMP], which provides excellent performance on multi-core architectures, without degrading the performance on single-core machines. See the [[Performance|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 [/doc/index.html documentation], which is full of examples. == Getting started == You should probably start by the [/doc/quickstart.html quick start guide], which gives a short overview of the basic features, with some usage examples. == Downloading it == You can get it from the [GraphToolDownload download] page. From there you can grab the latest release. == Problems and bugs == See the [GraphToolSupport support] page for instructions on how to submit bugs or ask for help. == Related software == See the [RelatedSoftware 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 [http://skewed.de/tiago Tiago de Paula Peixoto] and is free software, released under the [http://www.gnu.org/licenses/gpl-3.0.html GPL]. {{{ #!html
Locations of visitors to this page
}}}