SpikeFun 0.80 - The Road Ahead

Click here to download SpikeFun...

While SpikeFun 0.77... brought exposed simulation and neuron library parameters through human-readable XML project files, it was still pretty much a "single demo use-case" application. SpikeFun v0.80 contains significantly changed DigiCortex library which has ground work laid down for allowing multiple clients and real "client-server" architecture.

The goal is to gradually convert DigiCortex library into a "simulation server" which is going to be capable of distributing simulation workloads to different "work nodes" such as CPU-bound, GPU-bound clients or even clients distributed on different computing node and connected via packet-switched network (such as TCP/IP). The big task ahead will be splitting the calculation core and wiring it through abstract interface to the server, along with the expansion of the work-manager to include distributed workloads in the load balancing process. These tasks will take quite some time to complete but the first steps have been carried out.

The first "proof of concept" application is the new GUI (DigiCortexIDE_32bit.exe and DigiCortexIDE_64bit.exe) - unlike the SpikeFun binary which merely launches the demo-routine inside DigiCortex library, new IDE is actually using APIs to create, load and execute simulation. At the moment, API is still very limited and internal - but, eating your own dog food is probably the best way to mature it, which is exactly what I am going to do in the upcoming versions...

New DigiCortex IDE GUI is still extremely limited and nothing more than "SpikeFun done properly" at the moment (with added "Simulation Explorer" allowing in-place editing of the XML configuration and neuron library... and, yes, notepad2-mod is included. If you do not like it as XML editor, you can simply delete it at the moment - future versions of IDE will bring configuration options.

Unfortunately, I have spent too much time on Win32 GUI (which is, as it always was, a royal pain in the back) so some of the planned features for the first release are not in as I simply ran out of time tweaking around all kinds of Win32 User API obscurities which today look pretty much as remnants of a prehistoric era. At some moment I thought about writing my own OpenGL GUI out of desperation... an idea which I still did not rule out altogether, as I'd really like to have small and fast GUI which is powerful enough to power a desktop application (docking toolbars, etc...). And yes, it should be native and composited on the GPU... so far I am not happy with anything I've seen.

Anyway - here is the first screenshot of the new IDE application:

SpikeFun

New Subcortical Connectome Mapping Algorithm

Another important change in the 0.80 build is introduction of new, way more accurate, subcortical connectome mapping algorithm (which is much more strict in what is considered a 'match' during DSI tract tracing). As DigiCortex currently only models one subcortical structure - thalamus, the algorithm is affecting thalamic connections only.

Added benefit of the new algorithm is the ability to classify the thalamic nuclei - so you will be able to see which thalamic nuclei does the selected neuron belong to (if the neuron is, indeed, thalamic). The algorithm is far from perfect and there are few obvious bugs (for example: mixing LGN and pulvinar in some cases - which will be solved in one of the next versions).

Here is the quick snapshot of how it looks like

Below image shows available display information related to the picked neuron. Said neuron is of Thalamocortical Relay Cell class, and it is located in the Lateral Geniculate Nucleus, and projects to the Primary (V1) Visual Cortex (Pericalcarine Cortex):

SpikeFun

Note the uniformity of projections in the image above - compare that to the old versions of SpikeFun and there is a big difference. This is because old versions of SpikeFun erroneously included unrelated tracts - e.g. some tracts belonging to Globus Pallidus or Hypothalamic Nuclei ended up being identified as "Thalamic". This problem is fixed in 0.80.

The difference is far from being just aesthetic - as the new algorithm results in quite different topographic projections it heavily influences joint network activity. This can be easily seen with DemoBiggest.xml (262144 neurons, ~30 million synapses) where now slowly moving or even localized "hotspots" of activity can be seen that sometimes persist for quite a long time. This is caused by local recurrent thalamocortical loops (reciprocal connections between a thalamic nuclei and its projecting target cortical area).