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.
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.
-
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.