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