Brian2GeNN (https://github.com/brian-team/brian2genn) is an interface between the popular Brian 2 simulator for neuronal networks and GeNN, a software that supports efficient simulation of spiking neural networks on GPUs and similar backends. When Brian2GeNN was created, a number of Brian 2 and GeNN features could not be supported as corresponding mechanisms in the respective other software were not available or not easily translatable. With further development of both systems, many of these restrictions can now be removed. In this project you will remove unnecessary restrictions in Brian2GeNN, including but not limited to
- Heterogeneous synaptic delays
- Neuron and synapse initialisation on GPU
Skills required: Python, C++; experience with Brian 2, GeNN, or even Brian2GeNN would be highly beneficial
Mentors: Jamie Knight @jamie (J.C.Knight@sussex.ac.uk), Marcel Stimberg @mstimberg (firstname.lastname@example.org), and Thomas Nowotny @tnowotny (email@example.com)
Tech keywords: Python, C++, GPU
So @jamie ,@mstimberg could you please guide me through research papers and something like that. I would be highly obliged.
thank you for your interest in our project. I can point you to some good resources to get a better understanding of what this is about but before you invest more time into this, may I ask whether and what kind of experience you have with Python? Brian 2 and Brian2GeNN are held together and consist of a large percentage of fairly complex Python code, which I fear is not suitable for learning Python from scratch.
Would you post these resources here anyway for any one interested in it to have a first look?
Hi William, very good point.
So, the main brian2genn repo is https://github.com/brian-team/brian2genn as posted in the project description. There is documentation on a user level on readthedocs: Brian2GeNN documentation — Brian2GeNN 1.5 documentation
What brian2genn does, in a nutshell, is taking brian 2 scripts (see Brian 2 documentation — Brian 2 188.8.131.52 documentation for details on how one uses Brian 2, and https://github.com/brian-team/brian2 for the Brian 2 repo) and translates them into valid GeNN input files (see GeNN: GeNN Documentation for GeNN documentation, and https://github.com/genn-team/genn for the repo).
To understand how brian2genn works inside, it is useful to look at how GeNN works in its C++ version (e.g. tutorials in the manual) and then go through device.py file in brian2genn and the jinja2 templates in the brian2genn templates dir. A warning though: It becomes quite involved/complex in there and may take a bit of time to digest.
Thanks. Will the task only involves building the interface between GeNN and Brian2 or also need code update on GeNN?
Hi @Willam_Xavier. This project is about working on the Brian2GeNN interface so that it supports more of GeNN’s features. Except for unforeseen bug fixes, etc., it should not involve changing anything on GeNN’s side. All that said, please note that the application deadline for this year’s Google Summer of Code was on April 19th…