About: Brian is a clock-driven spiking neural network simulator that is easy to learn, highly flexible, and simple to extend. Written in Python, it allows users to describe and run arbitrary neural and synaptic models without needing to write code in any other programming language. It is built on a code-generation framework that transforms model descriptions into efficient low-level code.
Currently, the Brian simulator lacks advanced support for complex simulation pipelines that require storing or restoring the state of simulations (e.g., checkpointing) or saving a complete network architecture to a file. Such pipelines are particularly important for studies involving machine learning-like workflows, such as running a network on multiple stimuli for training and testing. In recent years, the Brian simulator has introduced several features to support these approaches, but they come with limitations and do not cover the full range of potential use cases.
Aims: The aim of this project is to improve and consolidate the Brian simulator’s tools for model and state (de)serialization. Specifically, the goals of this project are to:
Extend the current store/restore mechanism to work with Brian’s C++ standalone mode and Brian2CUDA.
Refactor the basicexporter from the brian2tools package so that it can be used to serialize a network architecture.
Create a corresponding basicimporter to reconstruct a network from such a serialization.
I hope you’re doing well. My name is Aniruddha Roy, and I’m a machine learning enthusiast with hands-on experience in Python, C++, machine learning and deep learning algorithms. I have worked on multiple projects using these technologies; however, I have not yet had the opportunity to apply serialization in a practical setting, despite having a solid understanding of its workings.
I am eager to contribute to this project, as it presents a great opportunity to strengthen my knowledge of the required technologies. I believe the best way to learn is through implementation, and I would love to gain hands-on experience by actively participating. I have explored the GitHub repository, but I’m unsure how to get started and would really appreciate your guidance.
Any advice or resources to help me better understand and engage with the project would be highly valuable. I look forward to your insights!
Hi @Aniruddha_Roy, Thank you for the interest in our project! I am currently travelling and can not get into details at this time, but I will be back in the office coming Monday and will give you more information then. Until then, you can find some very general information on the website we put up for last year’s GSoC: GSoC 2024 | The Brian spiking neural network simulator The 2024 discussions on neurostars (links in the page linked above) should also give you some ideas. Apologies for not being more precise for now, but I’ll get back to you early next week.
Thank you for your response! I really appreciate your reply, especially while traveling. I’ll definitely go through the resources you mentioned and explore them in the meantime. Looking forward to hearing from you next week!
I am an MPhil student at the University of Cambridge studying computational neurosciece where I am supervised by Prof Petra Vertes (Cambridge) and Dr Danyal Akarca (Imperial). I have a strong interest in computer science with experience in both Python and C++ derived from academic and personal projects. Given that I am working with spiking neural networks for my thesis, I am acutely aware of (and experienced with) the difficulties of replicating spiking neural networks, so I am very excited to work on a project like Brian which helps to tackle this problem.
I thought I would reach out to show my interest before the application period opens and am eagerly awaiting further details!
Hi,
Fellow contributors, Myself Sparsh (Gsoc 2024 contributor for INCF)
If anyone of you need help for setting up of Brian in your local. I would be happy to help and any doubt regarding the basic exporter package, you can directly message me on Neurostars.
Certainly I am not as good as @mstimberg but can help you to clear your blockers if any in the mean time.
I am Mahi S. Palimkar, a Computer Engineering sophomore at Veermata Jijabai Technological Institute (VJTI), Mumbai, India. I am a Machine learning enthusiast with experience in Deep learning, Natural language processing, computer vision, and web development. I have a good command on Python, C/C++, and version control using Git/GitHub.
I found the project idea “Brian Simulator: Serialization and Deserialization for Brian simulator models” very intriguing and also equally important because effective serialization is critical for
Creating checkpointing systems for long-running simulations
Supporting machine learning workflows with training and testing phases
Enabling researchers to share exact model configurations
I am currently trying to set Brian up locally and also going through papers provided on the org website.
I would love to solve issues and do tasks for this project if there are any. It would be great if you guide me on what to do further!
I am Anushka Sharma, a junior-year student pursuing a B.Tech at IIT Dhanbad. I specialize in Machine Learning, Deep Learning, and Scientific Computing. Over the past few years, I’ve gained hands-on experience working with Python, C/C++, MATLAB, and tools like TensorFlow, PyTorch, and SQL, through research projects and internships.
I came across the project “Brian Simulator: Serialization and Deserialization for Brian Simulator Models,” and I found it extremely interesting and valuable for advancing research in spiking neural networks. The importance of effective serialization in simulations—whether for checkpointing, supporting machine learning workflows, or enabling easy model sharing—aligns well with my interests and the work I’ve done in scientific computing.
I have gone through the resources available on the project’s GitHub repository. However, I would love to dive deeper into this project and contribute. I am eager to contribute to the improvement of the simulator’s serialization tools, and I believe this project would be a good opportunity to apply my skills and gain valuable experience.
Could you kindly guide me on how I can best get started with this project? I’d be happy to take on tasks or start solving issues right away.
Thank you so much for your time and consideration. I look forward to hearing from you! Please find attached my resume for your reference.
My name is Samuele, and I am a second-year undergraduate student pursuing a Bachelor’s degree in Computer Science at the University of Calabria. I am currently specializing in Machine Learning and frequently use Python in my university projects.
I would really appreciate the opportunity to contribute to this project, as I am very interested in neural networks. Additionally, I noticed that the distutils module is still referenced in the setup file. Since distutils was removed in 3.12, I was wondering why this does not cause any issues during installation. Could you provide some insights on this?
I am Shriya Prashant Ise, a sophomore at Vidyalankar Institute of Technology, Mumbai, India. I am a data science enthusiast with a strong interest in open-source contributions. I’m excited to be contributing to INCF, focusing on serialization and deserialization for Brian tools.
I have experience in C, C++, Java, and Python, along with a background in data science and machine learning. I have been exploring the issues listed in the Brian repository and have already commented my suggestions on two of them, which I am actively working on. Additionally, I have gone through the Brian tutorials to deepen my understanding of the framework.
Looking forward to collaborating, learning from the community, and contributing to brain simulation tools!
Hi everyone,
Thanks again everyone for your interest in the project. As I promised last week, here is some more information about the application process and about what we expect from you – I will answer the specific questions you had in separate messages. Here’s a general write-up about the application process and what we would like to see in your application (very similar to last year’s write-up ): GSoC 2025 | The Brian spiking neural network simulator
For the serialization/deserialization project specifically, I’d like you to include two more things:
A brief description of how the existing store/restore mechanism could be integrated into the C++ standalone mode, in particular whether/where it needs changes in the dynamically generated C++ code, in the C++ code templates, in the Python code (or in several/all of them).
A code example (not necessarily with full functionality) for a function that creates a NeuronGroup from a dictionary description as exported by brian2tools’s basexporter (see Base exporter — brian2tools documentation). Code like this would create the backbone of a baseimporter, as mentioned in the project aims.
Obviously, please do not hesitate to ask in case anything is unclear.
Good point, although this is not actually an issue for now, since setuptools provides distutils (see Porting from Distutils - setuptools 76.0.0.post20250309 documentation) and so this still works in Python ≥ 3.12 (our test suite runs on 3.13). Things are a bit messy between setuptools and distutils at the moment, but in the specific case of the setup.py file, we can probably simply replace the distutils.errors import by setuptools.error – PRs welcome