Little more than a year ago, first public version of SpikeFun (0.24) was released after approx. 6 months of development in my spare time. It started as a small toy project of mine, aimed at learning how to simulate large-scale biological neural networks. For myself it was, and still is, a fascinating journey - two years ago I did not know almost anything past basic "Discovery Channel" knowledge of what neurons and synapses do...
Today, two years later, I think I know a bit better how little I know and how vast this subject actually is; but I fell completely in love with computational neuroscience and its endless, staggering, but yet beautiful complexity. When I started being interested in this exciting subject, terms like action potentials, membrane potentials, Ca conductance, STDP, dorsal thalamus, spiny stellate cells etc. were just bunch of meaningless random domain-specific terms... now at least I know how to model some of them, albeit very roughly :-)
So, how much have things progressed in SpikeFun since September 22nd 2011?
I would say, a bit... This is how the first public version of SpikeFun looked like:
SpikeFun 0.24 was modelling randomly wired single-compartment neurons (with single, myelinated, axonal projections) - it was slow compared to today's version (it was not able to use Intel's 256-bit AVX instruction set, for example), it could only model randomly wired "cubical" networks and its visualization capacity was very limited, using ancient OpenGL 1.1 feature set. Yet, it was able to model major synaptic receptor kinetics and it allowed me to start learning how to model certain aspects of mammalian central nervous systems...
Fast forward to October 2012 - where are we now?
This is how the latest public version of SpikeFun looks like now:
Today's SpikeFun is modelling anatomical regions of the mammalian central nervous system: Cortex, Thalamus (Dorsal Thalamus and Reticular Thalamic Nucleus including individual dorsal thalamus nuclei) and parts of the Brainstem (Pedunculopontine Tegmental Nucleus).
To achieve that, it models more than 20 subtypes of cortical, thalamic and brainstem neurons (fully extendible and configurable in XML format) demonstrating different spiking behaviors (regular spiking, low threshold spiking, bursting, fast spiking, late spiking, bursting/tonic dual-mode, etc.) with multiple axonal projections per neuron, myelinated and non-myelinated axonal collaterals, multiple compartments per neuron, topographical axonal projections (Connectomes) guided by anatomical recordings of the human CNS white matter (Diffusion Spectrum Imaging - DSI), miniature post-synaptic potentials (mPSPs), Spike-timing-dependent plasticity (STDP), short-term synaptic facilitation/depression, and many more...
Locally, neurons are connected statistically using experimental data (Binzegger et. al, 2004) collected from the primary visual cortex of the cat. Visualization is done using OpenGL shaders for the maximum performance, with two levels of precision ("boxes" indicating neuron somas or complete dendritic+axonal network). Finally, steps have been carried out to make the underlying DigiCortex engine extendible - with configurable simulation parameters in XML format.
Also, during this time, some (in my opinion) interesting milestones have been achieved:
Simulation of 8 Million Neurons with 1.4 Billion Synapses on a home PC
This is, to the best of my knowledge, largest-scale cortical simulation ever achieved on the single home PC up to date. It did require rather unconventional amounts of RAM memory for a home PC of the year 2012 (~130 GB), but nothing that can't be purchased in the local PC store (for those interested: Samsung 16 GB DDR3 sticks, times 8, part# M393B2G70BH0CK0):
Simulation of the Ascending Reticular Activating System (ARAS):
While support for the brainstem nuclei is in its early stage, the video below shows the influence of the Ascending Reticular Activating System (ARAS), in particular - Brainstem Pedunculopontine Tegmental Nuclei (PPTN), on the overall thalamocirtical activity:
So, some progress has been made definitely...
One thing I think I learned during my short amateur journey through computational neuroscience is: the more answers are found, more questions arise. This can definitely be applied to what has been accomplished with my small project so far: as more things are "completed", more ideas and improvements are gathered every day... I am trying to keep an internal "priority" list of things that should be added to DigiCortex/SpikeFun in the upcoming months (years?):
|To be done:||Description|
|Extensible Architecture||This feature is well under development for some time - when it is completed, it will allow full API-level control of the simulations and writing sensorimotor interfaces that can interface directly with the simualted nervous system. In addition it will also allow writing custom computation modules that could utilize other resources than those supported by default.|
|GPU Acceleration||Also, already under development. GPUs are very well suited for simulating neurons due to their massively parallel architecture. Yet, GPU acceleration poses some interesting challenges which are being worked out right now...|
|More Flexible Neurons||Currently, DigiCortex neurons can have up to 3 different axonal projections and 4 synaptic receptor types (AMPA, NMDA, GABAa and GABAb) - future version of DigiCortex will have support for user-defined number of axonal projections and support for other types of receptors (e.g. Nicotinic, Muscarinic, 5-HT, etc.). In addition, current version of SpikeFun has "hardcoded" mixed-mode behavior of PPTN brainstem cells depending of post-synaptic cell type. This will also be made flexible in the future.|
|Dopamine-Modulated STDP||Currently, STDP in SpikeFun is not modulated by neurotransmitter concentration, although this is biologically plausible. Future versions of SpikeFun will have an ability to modulate the STDP action by the extracellular concentration of dopamine|
|AVX2 Support||Intel Haswell architecture will bring support for the AVX2 instruction set - which will allow even more optimizations in synaptic processing. This is also on my "to do" list|
|Distributed Computing Support||This is most likely going to be one of the most important extensions of the DigiCortex engine in the future - allowing running simulations in the computing clusters. Taking into account the current computational resources, this might be the fastest way to reach the primate-scale artificial neuronal simulation.|
Above table is just a small subset of things to come... but definitely enough work until SpikeFun's second birthday :-)
... and one more thing!
SpikeFun 0.83 "Birthday Edition" has been released - bringing 20-30% improvements in simulation speeds (measured on AVX-capable Intel CPUs) and reductions in overall memory usage! Click here to download it...