This is a sim(ulation) of a biological neural network based on numeric solutions to the Hodgkin-Huxley equations.
It was initially made for a university course in mathematical modeling (I adapted it to GTK4 later on; see the changelog). 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; simply close the repository and run dub inside.
-
The GUI itself is implemented using
gid(GObject Introspection for D). Because of this, the GUI code is somewhat object-oriented; it is however only 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
ParameterSetstruct. - The equations are solved numerically in the
simulateImpulsefunction. - The MutableSimWrapper creates a mutable container for the otherwise immutable
SimConfigandNeuralTreeSimclasses. 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
SimGeneratorclass for generating new neural trees without blocking the UI thread. - The tree painting happens in the
NeuralTreeCanvasclass.
- All the parameter metadata is specified using user-defined annotations in the