Skip to content

GSoC 2024 Ideas

Rohit Goswami edited this page Feb 6, 2024 · 4 revisions

Overview

Understanding the dynamics of opinions within social networks is crucial across various fields, including sociology, political science, and more. We introduce Seldon, an open-source, high-performance computing-friendly C++ engine coupled with a Python plotting toolkit, aimed at merging insights from diverse domains such as computer science, machine learning, and the humanities. Our framework supports a wide range of empirical models for opinion dynamics, including but not limited to the De Groot model, and more contemporary activity-driven models. The study of phase transitions within these systems, drawing parallels to the classic Ising model, will also be explored.

Python Bindings for Seldon

The first project revolves around creating Python bindings for the Seldon C++ engine. This initiative will bridge the gap between the engine's high-performance computational capabilities and the flexibility of Python for scripting and data analysis. The goal is to make Seldon's functionalities more accessible and to facilitate the integration of simulations with post-processing and visualization tools in the Python ecosystem.

Required knowledge: Proficiency in C++ and Python, experience with Python-C bindings, and familiarity with Pybind11 are essential. Some understanding of opinion dynamics models and simulations would be beneficial but not mandatory.

Project length: 350 hours

Difficulty level: Medium-Hard

Potential mentors: Amrita Goswami, Rohit Goswami, Moritz Sallermann

Goals: A full (shallow) set of bindings would be the basic deliverable. Followed by a pip installable package. There will likely be some scoping changes to the class structure as well, to prevent singletons.

Hari-Plotter Enhancements and ASV Visuals

The second project focuses on enhancing Hari-Plotter, our toolkit for dynamic simulation reruns and replotting. This involves developing functionalities for seamlessly running simulations, updating plots in real-time, and incorporating ASV for benchmarks to better represent the dynamics of opinions within social networks.

Required knowledge: Strong command over Python, experience with scientific visualization libraries (e.g., Matplotlib, Plotly), and a keen interest in developing interactive visualization tools. Knowledge of simulation software and data processing would be advantageous.

Project length: 350 hours

Difficulty level: Medium

Potential mentors: Rohit Goswami, Moritz Sallermann, Amrita Goswami

Goals: The output here is a series of tutorials and tests for visualizing the dynamic networks, not only through the global evolution and from the agent-based perspective. A key deliverable here would also to ensure the networks can be visualized by NetworkX. We have a basic set of animations as well, but these should be improved and restructured.

Reworking Robbie with JAX or PyTorch

The third project aims at reworking the Robbie library, which is currently tailored for neural network experimentation. The project's goal is to reimplement Robbie using either JAX or PyTorch to enable faster and more efficient iterative implementations, particularly for applications in studying opinion dynamics through machine learning models.

Required knowledge: Proficiency in Python with practical experience in JAX or PyTorch. A good understanding of neural networks, their architectures, and optimization techniques. Interest in the application of machine learning to social science or physics problems is a plus.

Project length: 350 hours

Difficulty level: Medium

Potential mentors: Moritz Sallermann, Amrita Goswami, Rohit Goswami

Goals The final goal here is to enhance the current consensus techniques by using messaging passing and Graph Neural Networks. This project is a stepping stone to this end. The initial task is a fairly straightforward port to the automatically differentiable library. The rest of the project deals with implementing the GNNs along with basic Bayseian neural network principles. Additionally, this implementation is expected to use uncertainity quantification to provide more modeling inputs w.r.t changing precision (single / double / bfloat). As a stretch goal, likelihood functions tailored to opinion dynamics runs will be developed using the AD libraries to demonstrate the faster turn-around made possible by not hand-rolling the NN.

Your Idea

We are open to all additional proposals or ideas that align with our mission to explore opinion dynamics through computational models and visualizations. If you have an innovative project in mind, don't hesitate to reach out to us!

Contact the lead devs here.

Clone this wiki locally