Skip to content
Back

Modernizing the igraph Interfaces

Legacy EOSS

2021

Proposal Summary

To modernize the igraph interfaces to make network analysis easier.


igraph

igraph enables fast network analysis across the sciences. Its highly optimized core is programmed in C, on top of which igraph offers interfaces to high-level languages: R, Python and Mathematica. This is a unique feature among network libraries and greatly lowers the barrier to entry for new users, especially bioinformaticians. Over the last two years, the team has improved the C library considerably, and it is maturing towards a stable 1.0 release, as well as attracting new contributors, some of whom have an active interest in maintaining and further developing igraph. However, the high-level language interfaces are lagging behind: none expose the full functionality of the C core and they rely on legacy code that is difficult to maintain and time consuming to expand. This proposal aims to modernize these interfaces to construct a scalable and consistent high-level API with feature parity with the C core. The C library itself will be improved to better support the high-level interfaces. At the moment, most functionality in the Python interface is concentrated in a single monolithic class, impeding users to find the desired functionality. In addition, the Python interface is completely manually written at the moment, making its maintenance relatively time-consuming. The team plans to change this to a partly automated approach based on code generation, which makes the Python interface easier to maintain and extend and more flexible at the same time.

Project Team

Vincent Traag Github

Leiden University

Tamás Nepusz Github

SixDegrees LLC

Szabolcs Horvát Github

Max Planck Institute of Molecular Cell Biology and Genetics

Fabio Zanini Github

University of New South Wales Sydney

Daniël Noom Github

GroteGnoom