GSOC 2026 Project #1 : Brian Simulator - Serialization/deserialization for Brian sim models, results, and input data (175h/350h)

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.

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
  • For the larger 350h project, additional goals include:
    • Implement annotation and metadata for models
    • Investigate data formats for neural simulation/recording data (e.g. NWB or NEO) and provide export tools
    • Investigate data formats for input data (e.g. AEDAT) and provide import tools
    • Identify potential connection points to software from neuromorphic computing/ML and provide tools to facilitate interoperability

Skill level: Intermediate

Required skills: Python, C++

Time commitment: Part-time (175h) or full-time (350h)

Lead mentor: Benjamin Evans (B.D.Evans@sussex.ac.uk)

Project website: GitHub - brian-team/brian2tools: Tools to use with Brian 2, in particular for visualization · GitHub and GitHub - brian-team/brian2: Brian is a free, open source simulator for spiking neural networks. · GitHub

Backup mentors: Dan Goodman (d.goodman@imperial.ac.uk; d.goodman on NeuroStars), Marcel Stimberg (marcel.stimberg@sorbonne-universite.fr; mstimberg on NeuroStars)

Tech keywords: Python, C++, serialization, data formats

Hi @arnab1896 and @BenjaminEvans,

I am writing to express my strong interest in the Brian Simulator Serialization project. As a Python and C++ developer with experience in high-performance monitoring systems, I find the challenge of implementing robust checkpointing and cross-platform state restoration particularly exciting.

I have spent some time analyzing the brian2tools repository, specifically the basicexporter implementation. I can see that while the current infrastructure handles basic architectural exports, scaling this to C++ standalone mode and Brian2CUDA will require a more sophisticated handling of memory layouts and state consistency.

A few points I’m currently looking into:

  • How to bridge the gap between Python-side metadata and the low-level C++ state during runtime.
  • Investigating the integration of NWB (Neurodata Without Borders) or HDF5 to ensure the serialized output is interoperable with the broader neuroinformatics ecosystem.
  • Extending the store/restore mechanism to ensure it is thread-safe for large-scale simulations.

I am eager to contribute to Brian’s mission of making neural simulations more reproducible and flexible. I’ll be sharing a more detailed architectural plan soon, but in the meantime, I would love to hear your thoughts on the priority order of the data formats mentioned (NWB vs. NEO).

Looking forward to a productive discussion!

Best regards,
ARYBHATT