Modernizing the igraph Interfaces
Vincent Traag (Leiden University)
To modernize the igraph interfaces to make network analysis easier.
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.