The igraph library

Latest version: 0.5.1
Release notes

igraph 0.5 Release Notes

There are a lot of improvements and corrections in this version. We would like to thank all the people who sent comments, bug reports, patches, or just questions. Without their contribution igraph would be definitely much less and worse than it is now. Please keep sending your comments and ideas!

Here is a list of major changes, with links to the relevant sections of the documentation. See the news page for the complete list.

igraph as a platform

We took some step towards turning igraph to an efficient platform for implementing graph algorithms. In particular, we have a set of utility types that support general scientific computing and working with graphs: vectors, matrices, stacks, queues, heaps, adjacency lists, etc.

Graph isomorphism

igraph includes the BLISS graph isomorphism algorithm and implementation now. This and the improved VF2 implementation, which can now calculate subgraph isomorphism, make igraph support the bleeding edge of graph isomorphism algorithms. Many thanks to the authors of BLISS. See the details in the Reference Manual, in the R documentation or in the Python documentation.

ARPACK for eigenvalue problems

ARPACK is a library for solving large scale sparse eigenvalue problems. In igraph it is very handy, as many centrality problems are in fact eigenvalue problems: Kleinberg's hub and authority scores, PageRank, the leading eigenvector community detection algorithm are some examples. Many thanks to the authors of ARPACK and James Fowler, who suggested to include it in igraph.

See the details in the Reference Manual, in the R documentation or the evcent, pagerank, hub_score, etc. functions in the Python documentation.

Plotting from Python

Plotting functionality based on the Cairo graphics library (so you need to install python-cairo if you want to use it). Currently the following objects can be plotted: graphs, adjacency matrices and dendrograms. Some crude support for plotting histograms is also implemented. Plots can be saved in PNG, SVG and PDF formats.

See the details in the documentation.

Other bits

Shell interface in Python

igraph can now be invoked by calling the script called igraph from the command line. The script launches the Python interpreter and automatically imports igraph functions into the main namespace.

Create famous graphs easily

Some classic graphs can be created by giving their name. This is very handy if one needs a test graph quickly. See igraph_famous (C), graph.famous() (R) or Famous (Python). (The idea is based on Combinatorica, a Mathematica extension.)

Create graphs using formulas in R

The new graph.formula() function provides a simple, concise way to create (small) graphs. Numerous examples are included in the manual page.

Improvements for weighted graphs

Many functions were updated to handle weighted graphs: fast greedy community detection (C, R, Python), Page Rank (C, R, Python), modularity calculation (C, R, Python), the Fruchterman-Reingold layout algorithm (C, R, Python).

Non-simple graphs

Some functions were added and improved to handle non-simple graphs (i.e. graphs with loop and/or multiple edges) better: testing that a graph is simple (C, R, Python), testing for loop edges (C, R, Python), testing for multiple edges (C, R, Python) and counting the multiplicity of edges (C, R, Python).

Pickling support in Python

igraph Graph objects can be serialized (pickled) in Python.

The graphopt layout algorithm

This is a nice force-based layout algorithm. See the documentation of details (C, R, Python).

Support for the DOT file format

igraph can now write graphs to files in the DOT format, used by GraphViz. See documentation: C, R, Python.

Dyad and triad census

Classic social network analysis tools for classifying the dyads (C, R, Python) and triads (C, R, Python) of a network.

Biconnected components and articulation points

igraph is now able to calculate biconnected components (C, R, Python) and articulation points (C, R, Python).

R graphics improvements

There were some minor improvements in R graphics. New graphical parameters: frame, asp, rescale and shape for different vertex shapes, right now only circles and squares are supported. plot.igraph has as argument (add) to plot many graphs on the same plot, maybe on top of each other. It also supports the main and sub arguments now. See more here.

Always free memory in R after an interrupted calculation

In previous versions of the igraph R package the allocated memory was not freed if the computation was interrupted. This surely affected MS Windows platforms, maybe also OSX. (Not Linux.) igraph 0.5 correctly deallocates all memory on all platforms after an interruption.

Estimating closeness and betweenness

These measures can be quickly estimated by specifying an upper bound for path lengths to be considered. This is useful for larger graphs, for which the calculation takes a long time. See documentation for closeness (C, R, Python), betweenness (C, R, Python) and edge betweenness (C, R, Python).

Functions for vertex similarity measures

Two vertex similarity measures based on the number of common neighbors are introduced, the Jaccard (C, R, Python) and the Dice (C, R, Python) similarities.

Proper warnings in R

Up to now igraph warnings were dumped to the console when using the igraph R package. In many cases this meant that they were effectively lost. In the new version igraph warnings are converted to proper R warnings.

Handle attributes from C

An experimental C attribute interface was added. This allows using graph/vertex/edge attributes when programming from C. See more here.