Research project
igraph - To modernize the igraph interfaces to make network analysis easier
igraph development focused on improving the most-used interfaces, which are Python, R, and Mathematica. Additionally, the developers aim to make the library and the interfaces easier to maintain, focusing on long-term sustainability. This ensures that igraph continues to be a useful tool for network scientists from various disciplines across the globe.
- Duration
- 2021 - 2023
- Contact
- Vincent Traag
- Partners
SixDegrees, Tamás Nepusz
Max Planck Institute of Molecular Cell Biology and Genetics, Szabolcs Horvát
University of New South Wales Sydney, Fabio Zanini
jitjit, Daniël Noom
![](/binaries/content/gallery/ul2/main-images/social-and-behavioural-sciences/cwts/research-projects/igraph_projectpagelogo.png/igraph_projectpagelogo.png/d300xvar)
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 project 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.