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.