Skip to content

v--/neuronsim

Repository files navigation

Tests DUB Package

neuronsim

This is a sim(ulation) of a biological neural network based on numeric solutions to the Hodgkin-Huxley equations.

It is based on chapters 2-4 and appendix B from the book Neuroscience - A Mathematical Primer by Alwyn Scott.

Screencast

Installation

The easiest way to build the program is via dub. Either use dub run neuronsim to download and run the program or clone the repository and run dub inside.

Notes

  • The GUI itself is implemented using GtkD. Because of this, the GUI code is somewhat object-oriented, but not quite because it is simply a layer in front of a non-object-oriented simulation.

  • The naming is purposefully verbose so that the code is as clear as possible.

  • Here are some highlights from the code:

    • All the parameter metadata is specified using user-defined annotations in the ParameterSet struct.
    • The equations are solved numerically in the simulateImpulse function.
    • The MutableSimWrapper creates a mutable container for the otherwise immutable SimConfig and NeuralTreeSim classes. The latter two are immutable because they are shared between threads. The former is mutable because once a new tree is generated we need to somehow update its reference in the GUI code (so we update its wrapper's reference).
    • A separate thread is launched using the SimGenerator class for generating new neural trees without blocking the UI thread.
    • The tree painting happens in the NeuralTreeCanvas class.