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.
Hello @mstimberg @d.goodman ,@BenjaminEvans
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 also attaching my resume here.
Thank you and have a great trip @mstimberg !
Regards
Mahi
Hello @mstimberg,@BenjaminEvans, @d.goodman!
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.
Regards,
Anushka Sharma.
Hi dear contributors, @mstimberg @d.goodman,
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?
Looking forward to your response!
Best regards,
Samuele
Greetings @mstimberg, @d.goodman, @BenjaminEvans!
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!
Best regards,
Shriya P. Ise
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 bybrian2tools
’sbasexporter
(see Base exporter — brian2tools documentation). Code like this would create the backbone of abaseimporter
, 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
Thanks for replying, I’ll get right to it!
Hi @mstimberg,
I’m currently working on my draft proposal, and I wanted to ask about integrating Brian’s store/restore mechanism into the C++ standalone portion of the project. Specifically, I’m considering modifying the CodeObject generation process (which translates the model description into C++ code) to insert serialization hooks for each state variable. This would allow the state to be serialized directly, rather than implementing a separate C++ memory snapshot mechanism.
My thinking here is that this could help keep the solution more aligned with Brian’s existing architecture while avoiding introducing a new memory management system from scratch. However, I wanted to check with you to see if this approach aligns well with Brian’s design philosophy, or if there might be any potential issues I should anticipate (for example, with performance, complexity, or compatibility).
Since this will be a key part of my draft, I’m hoping to get your input on whether this integration strategy makes sense and if you see any potential pitfalls or improvements I could consider.
Thanks for your feedback!
@mstimberg , @d.goodman
Hello everyone,
My name is Maria Politi, and I am a bachelor’s student in physics in Aristotle University of Thessaloniki, Greece, currently working on my thesis about “Quantitative Methods of Brain Imaging in Diagnosing and Monitoring Mental Illnesses”. This work has sparked my passion for neuroscience, and I am eager to contribute to the Serialization and Deserialization for Brian Simulator Models project for GSoC 2025.
Although I am a beginner in coding, I am a highly motivated student and actively learning Python and would love to help with documentation, bug reporting, and testing.
However, I’m also very open to contributing in any capacity where my help is needed.
This project aligns perfectly with my physics background and my passion for neuroscience. In fact, I am considering pursuing a Master’s in Neurophysics in the Netherlands. For this reason, the opportunity to work on this project through GSoC would be would be invaluable for my learning and growth as I continue to explore the intersection of physics and neuroscience to address brain health, particularly related to mental illness.
I am truly excited to join this community, contribute meaningfully, and learn from all of you.
Best regards,
Maria Politi
Hi @mstimberg , @d.goodman and Benjamin Evans
I am Varnika Khare, I am currently a PhD scholar in Cognitive Science at IIT Hyderabad, India, working on motor memory consolidation.
While my research primarily involves behavioural and neural data analysis, I have experience with Python (especially for data visualization), and reinforcement learning and I currently use MATLAB for EEG signal processing.
I am interested in applying for this GSoC project “Serialization and Deserialization for Brian Simulator Models”.
I am currently exploring the codebase and to that end, I would appreciate any guidance on:
- Recommended resources/literature to better understand Brian’s existing structures and design decisions.
- Any small tasks or issues I could start with to better understand the codebase.
I am eager to learn and contribute meaningfully to Brian’s development. Looking forward to your advice on how best to prepare!
Best Regards.
Hi @v29khare, happy to hear you are interested in the project. You’ve probably seen the general information and recommendations for the project application in my previous post : GSoC 2025 Project Idea #6 Brian Simulator :: Serialization and deserialization for Brian simulator models (175 h) - #11 by mstimberg
Regarding the resources to look at: you might be interested in our two papers
Stimberg, Marcel, Romain Brette, and Dan FM Goodman. “Brian 2, an Intuitive and Efficient Neural Simulator.” eLife 8 (August 20, 2019): e47314. Brian 2, an intuitive and efficient neural simulator | eLife.
Stimberg, Marcel, Dan F. M. Goodman, Victor Benichoux, and Romain Brette. “Equation-Oriented Specification of Neural Models for Simulations.” Frontiers in Neuroinformatics 8 (2014). Frontiers | Equation-oriented specification of neural models for simulations.
The first one has an appendix with quite a bit of technical information.
Regarding contributions, we have a list of issues that are tagged as “suggested contributions” (GitHub · Where software is built), but unfortunately this list is a bit outdated, I’ll see whether I can update things in the coming days. Note that most of them are documentation tasks. Another alternative is to look at brian2tools, which is also very relevant to this project. There are several limitations and rough edges in the current export/import tools (see the documentation at: https://brian2toosl.readthedocs.io) that could be addressed.
Hi @mariapoliti, thank you for your interest in our project. I’m sure you already saw my post above – please do not hesitate to ask any questions you might have.
Hi @Samuele_DeCristofaro. It would indeed make sense that each object would handle reading in a serialization state itself, similar to how the _restore_from_full_state
can be overwritten by individual objects (but most of the time use the standard implementation from VariableOwner
). I think one feasible approach might be to use the before_run
section in the templates (which will be executed once at the beginning of a run), or – to make it even more in line with the way it is implemented in runtime mode – add new store
/restore
functions for each created code object, and corresponding Network::store
and Network::restore
functions (in brian2/brian2/devices/cpp_standalone/templates/network.cpp at master · brian-team/brian2 · GitHub) that would loop over all objects and call their respective functions. I.e., the C++ equivalent of what Network.store
/Network.restore
currently does for runtime mode.
hello @mstimberg I am really excited about the Brian simulator project and its focus on model and state (de)serialization. As someone with experience in Python, C++, and data serialization techniques, I find this project particularly interesting because of its real-world applications in neural network simulations and ML workflows.
I have been exploring Brian2’s store/restore mechanism and its integration with C++ standalone mode and Brian2CUDA. I understand that the goal is to extend serialization capabilities to these modes. However, I am curious about:
- What specific challenges have been encountered in serializing a complete network architecture so far?
- Would using a format like protobuf or HDF5 for storing/restoring networks be a suitable approach, or is there a Brian-specific serialization format in consideration?
I would love to contribute to this project and further enhance my understanding of spiking neural networks and efficient simulation pipelines. Looking forward to your insights!
Best regards,
Alfiya Qureshi
Hi @Alfiya_Qureshi, happy to hear you are interested in this project! Regarding your questions:
I wouldn’t really say that we faced particular challenges – mostly we did not get around doing it so far We have the
basexporter
in brian2tools
, which serializes the model architecture (equations, structure, etc.), but it is missing the deserialization from the serialized representation (which is a simple text-based dictionary representation). Also, we have the store/restore mechanism which stores the current state of a model (i.e. the values of all state variables) to memory or disk (via pickle). We don’t have anything that puts the two together yet. I expect things not to be very difficult technically, but there will be quite some work to make things work smoothly and flexible – e.g. you might want to restore a network and then add/remove something from it, you might annotate a network with additional information, etc. For this, it would be useful to look in detail at how for example pytorch
handles things for save
/load
/checkpoint
, etc.
In principal yes, but we should run tests first and see whether we cannot simply use the built-in mechanisms from Python (like pickle), and for example numpy’s save features. If it is only a marginal speed or “size-on-disk” benefit, I wouldn’t think it is worth adding a big and potentially troublesome dependency to Brian.
Hope that answers your questions, best
Marcel
@mstimberg Thank you for your detailed response! Your explanation clarified a lot of things for me.
Looking forward to exploring this further!
Hello @d.goodman , @mstimberg , Benjamin Evans
My name is Okeme Perfect, and I’m excited to learn more about the Brian simulator and explore the possibility of contributing to this project during gsoc2025. While I’m new to neuroscience-related projects, I find the idea of improving model and state (de)serialization intriguing.
I have some experience with Python and C++, though I wouldn’t call myself highly proficient yet. However, I’m eager to learn, contribute, and grow through this opportunity. I’d love to understand more about how I can get started and what initial steps I should take to better grasp the project’s scope. Looking forward to engaging with the mentors and the community!
Regards,
Okeme Perfect.