GSoC 2024 Project Idea 13.2 Implementation of SWC to NeuroML converter in PyNeuroML (175h/350h)

The SWC format is a standard used ubiquitously for the representation of neuronal morphologies reconstructed from experiments. NeuroML is a standard for the representation and simulation of biophysically detailed neuronal models. The conversion of SWC to NeuroML, however, is not trivial. A number of checks must be made to ensure that the generated NeuroML model is valid enough for use in simulation. This project will require the implementation of an interactive SWC to NeuroML converter in Python. It will read SWC, convert it into NeuroML, asking the user various questions along the way while providing them with suggestions on how specific issues may be addressed. This will then be tested and validated against various repositories of neuronal reconstructions (like NeuroMorpho.org). See: Handling Morphology Files — NeuroML Documentation

Aims/objectives:

  1. Understand the SWC and NeuroML specifications (formats/representations) for biophysically detailed multi-compartmental neurons
  2. Write a Python package/library that:
  • reads/imports SWC
  • runs various tests on the SWC representation to check if it is valid for use in modelling
  • includes suggestions/solutions for various test failures to allow the SWC representation to be used in modelling
  • writes NeuroML
  • Includes an interactive tool to allow users to use the functions of the library

Skill level: Low/Mid

Required skills: writing new packages/libraries in Python following best practices; knowledge of open source software development using Git/GitHub

Optional skills: some knowledge of computational neuroscience and modelling will be useful, but is not necessary.

Time commitment: Flexible (175/350 h)

Lead mentor: Ankur Sinha (@sanjayankur31 on GitHub, ankur.sinha@ucl.ac.uk)

Project website:

Backup mentors: Padraig Gleeson (@pgleeson on GitHub, p.gleeson@ucl.ac.uk)

Tech keywords: Python, SWC, NeuroML, computational neuroscience

1 Like

Hello!
Hope you are doing well.
I’m Prahalad Rajagopal, a third-year undergraduate student at SSN College of Engineering, Chennai, majoring in Computer Science. I’m writing to express my deep interest in NeuroML, as it aligns closely with my research experience. I’m very passionate about applying computational methods to study and analyze biological data, and I would love to contribute to any opportunity you might have for the same. I find computational neuroscience especially fascinating, and I’m constantly on the lookout to further expand my knowledge in this field through hands-on experiences. I would love to contribute to NeuroML and make it more accessible to the researchers out there working in this fascinating field.

Regarding my experience, I have strongly pursued my passion for model-building and prediction- I had the opportunity to develop various models such as regression, time series forecasting, as well as NLP(LLMs using langchain), as part of a climate action tool being developed by the EnerG group at the Indian Institute of Technology(IIT), Madras, to extract data from sustainability reports of companies, that are then further analyzed to predict and optimize their renewable energy footprint. My fervor for predictive modeling and computational neuroscience finds further expression in my position as research intern at the Computational Neuroscience Lab at IIT Madras, where we are working on developing a unified neural network model of the Basal Ganglia that can explain the wide variety of symptoms of Parkinson’s Disease…

Additionally, I have worked with medical signal processing, developing various new methods to model, analyze, and encrypt ECG signals, which have applications in biomedicine, computational logic, and cybersecurity. This research work has been published in the International Journal of Information Technology. I have also worked in the domain of graph theory, where I have developed a new concept called strong status domination integrity, and used it to determine the most suitable candidates for drug repositioning in a network of drugs.
Most of my projects have been done majorly in Python. I have also studied Software Development using GitHub and also applied it practically on many occasions.

Please find my LinkedIn profile attached below. Should you need any more information, please do let me know and I will be more than happy to provide it to you.

Thank you for your time and consideration.

Regards

Prahalad Rajagopal

https://www.linkedin.com/in/prahalad-rajagopal-b7463326a/

1 Like

Hello @Prahalad_Rajagopal , great to meet you. That sounds great. Please do start by going over the NeuroML documentation at https://docs.neuroml.org to learn what it’s all about. There are a number of simpler tasks in the various NeuroML repositories you could look at to familiarise yourself with the code base too. Please do look them over and let us know if we can do anything to help.

PS: please edit your post to remove your phone number—it’ll get harvested by spammers and you’ll start getting lots of cold calls :frowning:

Thank you for your prompt response, sir. I will go through the documentation and get to know the codebase. If you have any simple tasks I could do which will help me in the process of becoming a contributor, I would love to work on those too.

Sure, it’s best to go through the issues in the various repositories like pyNeuroML. Easy issues will be marked there with tags like “help-wanted”.

Hello sir,
I Aditya Pandey would like to introduce myself as currently a sophomore at Birla Institute of Technology. I have huge interest in computational neuroscience and having been going through NEUROML documentation from the past few months. I have done projects in Machine learning like DNA Classification and Breast Cancer detection and have been continuously learning more about ml algorithms. I am very much interested in this project and want to join as a contributor. As per your guidance I have started to go through the documentation to make myself aware with the codebase so that I can make meaningful contributions.

I am sorry for my inexperience and would be grateful for your guidance .

1 Like

Sounds good. Please go through the docs and things and see how you get on. :+1:

Hello everybody!

My name is Giuseppe Steduto, I am a recently graduated bachelor student from Politecnico di Milano, Italy, and I will start a Master degree in Advanced Computer Science at University of Oxford this autumn.
Until one month ago I was working at CERN, in Geneva, on REANA, a platform that tackles the issue of scientific reproducibility by allowing to define and execute scientific analyses in a reusable way following the FAIR principles. I am a strong supporter of open science, and this is what made me interested in the GSoC projects proposed by INCF. Among all the project ideas, I find this one to be the most interesting for me, and probably the one to which I can contribute in the most meaningful way, since I believe I have the necessary experience and skills.

I went over the main parts of the documentation and I find the possibility to contribute to the project even more exciting; I just have a question about the project description, to have a better idea of the tasks involved before applying. It was mentioned that the converter should “read SWC, convert it into NeuroML, asking the user various questions along the way”. Were you thinking of asking these questions directly from the console / notebook in which it will be executed, or were you thinking about also developing a different, more complex interface for the converter?

Thanks in advance for your answer!

Hi @giuseppe-steduto! Thanks for your interest in this. I think in the first instance there would be a Python method developed which had multiple arguments for the options which might be relevant for importing SWC. Testing this method in various scenarios in code would come first, and then we could see how an interactive version could be developed. So don;t worry about the interactive version for now, just try to get some demo code for importing SWC.

Hello @pgleeson !
Hope you are doing well, I have submitted a draft proposal for this project. I would be grateful if you go through the proposal and give me some general guidance to make it better.

Hello everyone, I am Budhachandra Yumkhaibam, I am an incoming student in UT arlington for computer science masters. I am really interested in the intersection of computer science and bioinformatics and as such, I really like this project and would like to contribute to it.
I am writing a proposal for this project and in the mean while working on small PRs for pyNeuroML project so that I get familiar with the codebase.
Nice to meet everyone! :grin:

@here: please do start working on your proposals if you haven’t already. Do note that we’ll be able to provide feedback for proposals sent to us until the end of Wednesday only (since Friday and Monday are both holidays here in the UK, so we won’t be working from Friday all the way until Tuesday morning when your submissions are due)

@sanjayankur31 I have shared a draft proposal, PTAL
I have a question:

  • Since there is an implementation of swc to nml in neuroConstruct, is it okay if we focus on porting that to python ?

Yes, that is sort of what the project entails. But we’re not simply porting, we’re re-implementing the functionality with improvements etc.

Everyone @here, thank you for all your work on this. We don’t know how many slots we’ll get from Google yet, so we don’t know how many projects we can take on just yet. We’ll take on as many as we can, so please do submit your proposals before the deadline.

Hello~

I hope you are all safe and sound. I’d like to introduce myself and ask a question. I’m Nada, a recent graduate with a degree in Biomedical and Bioinformatics Engineering from EJUST. I’m passionate about the Neuroscience field and the exciting discoveries it unlocks. This passion fueled a year-long project where I explored Brain-Computer Interfaces (BCI), and I’m utilizing MNE-Python for data visualization and analysis for a new project at the moment. I’m eager to leverage my skills and enthusiasm by contributing to open-source projects like this one that advance the field.

Would it be considered enough contribution if I added resources to the documents you have on computational neuroscience resources? I just came across GSoC recently and didn’t have time to go through the sophisticated codes and technologies this project incorporates. and it would be great if you could provide me with insights regarding my proposal.

Thank you for your time :’

Hi @Nada : all contributions are welcome so that bit is fine. We only take on a few candidates though—because we cannot mentor so many, and because we usually receive fewer slots from Google than the number of projects that we have—so us mentors have to rank the proposals on the GSoC submission website, and the best ranked proposals are ones that will be assigned whatever slots we receive from Google.

Thanks @sanjayankur31 for clarification!

While I understand that GSoC slots are limited, I’m still very interested in contributing to this open-source project even outside the program. Would there be opportunities to tackle more complex tasks with some initial guidance from your team? I’m a fast learner and happy to invest the time to become proficient in the project’s technologies. Of course, I understand if support for non-GSoC contributors is limited, but any insights you can offer would be greatly appreciated. Thank you again for your time and consideration.

Hi @Nada , yes of course: we’re always happy to help contributors even outside GSoC/internships. Yes, our time may be limited, but we’ve been able to communicate with folks over GitHub issues/pull requests and get things done :slight_smile: