Back to All Open Science Grantees
Modernizing the igraph Interfaces
Proposal Summary
To modernize the igraph interfaces to make network analysis easier.
Project
![](https://chanzuckerberg.com/wp-content/uploads/2021/08/logo-full-black2048-Vincent-T.png)
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.