-
-
Notifications
You must be signed in to change notification settings - Fork 440
Mentored Projects
Szabolcs Horvát edited this page Mar 27, 2025
·
11 revisions
This page maintains a list of mentored project ideas for students interested in contributing to igraph. These ideas are primarily meant to be used for Google Summer of Code (GSoC) projects. If you are interested in one of these projects, post on the igraph forum or open a new issue in igraph's GitHub issue tracker. Please do not email mentors directly with inquiries.
In 2025, igraph is participating in GSoC under the umbrella of NumFOCUS. Interested students will find NumFOCUS's GSoC contribution guide useful.
- Description: Network null models, i.e. random graphs with prescribed properties, are an essential tool in the analysis of complex networks. The goal of this project is to develop a detailed computational toolkit within the igraph library for working with degree-constrained null models. This will involve implementing functions that: 1. randomize a graph while preserving its degrees as well as other properties (variants of rewire()); 2. given some degrees, construct a graph (variants of realize_degree_sequence()); 3. determine if a graph with given degrees exists (variants of is_graphical()). While some of this is already possible with igraph, this project will greatly expand the available functionality, considering simple/multigraphs, directed/undirected graphs, bipartite graphs, acyclic graphs, weakly/strongly connected graphs, etc. It will also replace some existing implementations with more algorithmically efficient versions. The work consists of porting existing prototype implementations to the igraph C library, developing unit tests and benchmarks to ensure correctness and performance, and optionally exposing the functionality to Python/R.
- Expected outcome: Implement, document and test functions for testing the existence of, constructing, and randomizing graphs of different types with given degrees. Optionally, expose the functionality in igraph's Python or R interface.
- Mentors: @Tagl and @szhorvat.
- Recommended skills: Knowledge of C and basic C++; Interest in and some experience with graph theory and algorithms.
- Expected time commitment: 175 hrs; a larger project of 350 hrs can be discussed.
- Difficulty: Medium to high.
- Description: This project involves developing a detailed and practical network community detection guide using igraph. The two review articles Community detection in graphs and Community detection in networks: A user guide can be used as a starting point for developing the content. Tentative topic list: 1. explanation of community detection methods and their tradeoffs 2. the concept of modularity 3. controlling the number of communities; resolution parameters 4. partition similarity measures 5. hierarchical clustering 6. consensus clustering 7. significance of community structure 8. overlapping communities; clique percolation 9. visualization techniques
- Expected outcome: An executable document (such as Jupyter notebook, R Markdown or Mathematica notebook) that demonstrates tasks related to community detection using igraph. This must be done in at least one of Python or R, and may optionally be translated to additional languages (including Mathematica).
- Mentors: @ntamas, @RU-Lokamruth and @szhorvat
- Recommended skills: Knowledge of Python or R; Technical writing; Basic familiarity with network science and an willingness to dive deep into the theory of community detection.
- Expected time commitment: 90 hrs or 175 hrs, depending on the amount material covered, and whether the guide is developed for one or multiple programming languages.
- Difficulty: Easy to medium.
- Description: The analysis of spatial networks has unique requirements. This project consists of expanding igraph with basic spatial network analysis tools, starting with porting existing spatial network functions from IGraph/M (igraph's Mathematica interface) to igraph's C core, and potentially implementing additional functionality.
- Expected outcome: Find suitable libraries (performant, compatible license) that provide supporting functionality (Delaunay triangulation and k-D trees), or implement this from scratch. Port generators for the Delaunay graph and all β-skeleton variants from IGraph/M to C/igraph, both both 2D and 3D point sets. Implement nearest neighbour and cutoff distance graphs in k-D. Expose the ported functions in at least one of Python or R (ideally both).
- Mentors: @szhorvat and @Tagl
- Recommended skills: C/C++ programming; Interest in computational geometry and advanced algorithm development; Basic ability to read Mathematica code.
- Expected time commitment: 175 hrs; a larger project of 350 hrs can be discussed.
- Difficulty: Medium to high.
- Description: The goal of this project is to create a framework within igraph's Python interface for directly importing data from online network repositories. The primary repository to use is Netzschleuder. Time allowing, additional repositories can be considered. Candidates with a very strong knowledge of R can discuss implementing this for igraph's R interface instead of Python. The work involves investigating the most convenient format for importing the data from Netzschleuder, potentially developing a new importer if this is deemed necessary, and designing a data import framework, and finally implementing a practical importer for Netzschleuder.
- Expected outcome: Functionality for directly loading network datasets into igraph from the Netzschleuder data repository.
- Mentors: @ntamas and @szhorvat.
- Recommended skills: Python and basic C programming; Interest in network science.
- Expected time commitment: 175 hrs.
- Difficulty: Medium.