GSoC 2024 Project Idea 1.1 Structural Connectivity editor widget (175/350 h)

There are several modeling studies using brain network models which incorporate biologically realistic macroscopic connectivity (the so-called connectome) to understand the global dynamics observed in the healthy and diseased brain measured by different neuroimaging modalities such as fMRI, EEG and MEG.

For this particular modelling approach in Computational Neuroscience, open source frameworks enabling the collaboration between researchers with different backgrounds are not widely available. The Virtual Brain is, so far, the only neuroinformatics project filling that place.

All projects below can be tailored for a 12-week time window, both full-time and part-time, as the features/pages can be built incrementally.

In the TVB ecosystem there is a new repository called tvb-widgets offering UI widgets for Jupyterlab environments. These widgets are compatible with TVB data formats and able to display them in different forms: either a 2D viewer for time series or a 3D viewer for brain surfaces. The purpose of this project is to implement a new widget which would allow users to edit the connectivity matrices involved in a TVB simulation. Necessary features for this widget: display connectivity matrix, normalize matrix, resect connections, resect nodes, change connection weights, save resulted connectivity. Of course, this new widget has to run in a Jupyterlab notebook as well.

Finally, it would be great to have all the widgets linked into the tvb-ext-xircuits repository which is a Jupyterlab extension based on React JS. At the moment, only the PhasePlaneWidget is linked there, but the rest could be added in a similar manner.

Examples of TVB data formats can be found on Zenodo. Connectivity matrices are available there as well.

Check out our Jupyter notebooks to play with the widgets we have available so far.

Expected results: A set of classes , with demo Jupyter notebook, and unit tests.

Skill level: Junior+/mid

Required skills: Python, IPywidgets, React JS, Jupyterlab, Jupyterlab extensions

Time commitment: Flexible (175/350 h)

Lead mentor: Lia Domide (lia.domide@codemart.ro)

Project website: [TVB-2607] - Jira

Backup mentors: Romina Baila (romina.baila@codemart.ro)

Tech keywords: Python, IPywidgets, React JS, Jupyterlab, Jupyterlab extensions

1 Like

From possible applicants to this project we expect:

  • to comply with GSOC rules and submit a project proposal; ideally you would share that proposal as a draft doc with us in advance, so we can give you early feedback;
  • you prove in that proposal that you understand what jupyter lab is, what brings as base env for developing widgets in
  • you prove that you understood and tried our current widgets GitHub - the-virtual-brain/tvb-widgets: Widgets for EBRAINS notebooks
  • you try to identify what extra new 3D Head related widgets can be added: you alone can estimate how many such widgets you can build considering the project length that you choose

Let me know is anything gets unclear, either here or by email to ldomide@gmail.com

Hi @liadomide, @greg_incf

I’m Ankit Kiran, a pre-final year undergrad from NIT Rourkela and I am interested in becoming a potential contributor to this project, currently, I am learning to make UI widgets for Jupyter Lab using React JS.

Additionally, I am involved in research in NeuroML and deep learning models. I am eager to make meaningful contributions and collaborate with the community.

Best regards,
Ankit Kiran

Excellent news, Ankit!

May I ask what libraries are you using for Widgets in JupyterLab based on React ?
We experimented recently with ipyreact, and I am curious if you found something else competitive ?

Best,
Lia

Hi @liadomide : )
I am Kshitij Thareja, a sophomore at Amrita Vishwa Vidyapeetham, Kerala. The idea of working with widgets for Jupyterlab interested me a lot. I have good experience with Python, Javascript and various libraries and frameworks like React JS and Next.js. Additionally, I have worked on the DevOps part for some projects and have good experience with backend development too (primarily in Django). I am currently learning more about ML and trying to get myself more involved in research.

I welcome any additional guidance from the mentors. Looking forward to contributing here!

Regards
Kshitij Thareja
GitHub | Portfolio

Hi Lia,

I was basically learning Ipywidgets first from docs and tutorials, Thanks for introducing me to Ipyreact.

I did my research but did not found, anything competitive as such, if found I will update you here.

1 Like

Hi @Kshitij,

I am happy to find about your interest into this project! Your profile seems fitting.

Please check the suggestions in the first comment wrote by me above, and let me know if there is something more specific that you are wondering.

Best,
Lia

Hi @liadomide!
I’ve started looking into the current tvb widgets. I’ll try to learn more about making UI widgets for Jupyterlab and will surely reach out if I need to ask something.
Thanks : )

1 Like

Hey @liadomide
I’m nour almulhem a computer engineering student at Cairo university, and highly motivated to be part of GSOC’24 and INCF community,
I’m a front-end developer with 2 year of experience with medium/large projects, my technical stack is: React, Typescript, Scss and Storybook, I have some knowledge about BE development as well and planning to get more experience working on an open source projects this year
[github] [linkedin]

currently checked this idea and interested to investigate this more, wanted to ask are you available to give feedback about some proposals before the GSoC proposal deadline?

also i got some problems running the connectivity widget for example, this while trying to use colab, let me know if you have any thoughts or should i try it locally instead of running on colab
explicitly installed plotly==5.14.0 before this cell to insure no errors

Surely. Just drop me a link towards a draft (ldomide@gmail.com), and I would be happy to comment and give my opinion.

Yes, for some reason we have in requirements plotly==5.14.0

You could either in the collab ensure that (for you env) !pip install plotly==5.14.0, or you could test it locally.

This raises another issue: in a package such as tvb-widgets, there are always tasks and work for maintenance (e.g. upgrade to the latest versions of plotly, and adjust existing widgets to match their new api).

Not sure if you would agree to include such a direction, but for us surely it would be beneficial if you could include such a task into your proposal.

Dear interested contributors,

I am kindly inviting you to share with us your draft proposals for feedback (if not done so already) and to start submitting your proposals in Google site.
There will be absolutely no exceptions if you miss the submit deadline.

Hi @liadomide and the TVB team,

I am Vritti, a 3rd year B.Tech student in Information Technology from IIIT Gwalior, and I’m interested in contributing to the Structural Connectivity Editor Widget project for GSoC 2026.

I’ve set up the tvb-widgets repository locally and tested the available widgets in JupyterLab. I also explored the existing ConnectivityWidget and ConnectivityMatrixEditor to better understand their current functionality.

From the original project description, the goals included matrix normalisation, resecting nodes and connections, editing weights, saving modified connectivity, and integration with tvb-ext-xircuits. Since a ConnectivityMatrixEditor already exists, I wanted to clarify the scope for 2026.

Should the focus now be on extending and refining the current editor by adding missing features, or is the expectation to design a new connectivity editor widget?

Also, could you please share what would be expected from contributors for GSoC 2026 so I can start preparing in the right direction?

Thanks,
Vritti | Github

1 Like

Hello @liadomide and team,

My name is Lohitha Reddy Karamala, and I am a final-year ECE student from India. I am writing to express my very strong interest in contributing to the TVB connectivity matrix widget project for GSoC.

I am highly motivated to work on this project because it perfectly aligns with my strengths in Python and my growing interest in building meaningful tools for neuroscience and data visualization. The opportunity to develop an interactive connectivity matrix editor within JupyterLab and contribute to the TVB ecosystem genuinely excites me, and I am eager to dedicate consistent effort to this project.

I have already started exploring the TVB repositories and understanding the existing widgets and Jupyter notebooks. I am currently setting up the local environment and going through the available examples to better understand the workflow and architecture. I am fully committed to learning any additional tools required, including ipywidgets and JupyterLab extensions, to contribute effectively.

I would greatly appreciate your guidance on:
• The best starting point in the repository to understand the current widget architecture
• Any beginner-friendly issues or improvements I can begin working on
• How I can align my early contributions and proposal with your expectations

I am very serious about contributing meaningfully to this project and would love the opportunity to collaborate with you and grow as an open-source contributor within the TVB community.

Thank you for your time and guidance. I look forward to contributing actively.

Best regards,
Lohitha Reddy Karamala

1 Like

Greetings

My name is Ayesha Ali and I am a full time Software Engineer at ConserveIT where I develop the frontend of the PLANTPRO software using Javascript, Typescript and React. I am based in Melbourne, Australia. I am interested in this project since I have experience in Python, Jupiter Notebook, visualisation and developing user interfaces. I am eager to learn more about TVB to design interesting brain network models. I am happy to develop the UI to make it user-friendly. I am attaching some of my work and folio:
https://sanaa-sys.github.io/AALI1512/

1 Like

For possible applicants of GSOC 2026 program:

@Vritti_Goyal @Lohitha @Ayesha_Ali

2 Likes

Hi, I’ve been exploring the existing tvb-widgets codebase and testing several widgets locally (especially the new k3d-based HeadWidget).

Based on the project description mentioning a missing Metrics Projection Viewer, I implemented a small prototype, using dummy data, to explore how per-region metrics could be visualized spatially on the brain surface.

Prototype repository:
GitHub Prototype

The widget currently:

  • loads a surface/connectivity structure
  • computes simple metrics (Mean activity, Variance) on brain signals
  • projects values spatially on nodes

I wanted to ask two questions:

  1. Should the widget compute metrics internally (e.g. mean/variance/FFT), or should it directly integrate with the existing tvb.analyzers classes?
  2. Which metrics would be most useful to visualise spatially in this widget?
    From exploring the analyzers I identified metrics such as:
    • Node variance
    • Mean activity
    • Peak FFT power
    • Peak frequency
    • Mean coherence per node

I’d appreciate guidance on which direction aligns best with the project expectations.