The best way to understand a theory or a set of data or even a mathematical equation is to play with them. A couple of days ago my blog post “Polychronization: Playing with the Code” began looking at the standard C++ polychronization program spnet.cpp and the newer program poly_spnet.cpp implemented with a more precise algorithm. The poly_spnet.cpp file also includes code for finding polychronous groups. In today’s post I provide a few more bits of information about the code in these two files and their data output that hopefully makes it easier for you to play with them.

Note: C++ and MATLAB versions of the computational model are available from the SenseLab’s ModelDB repository in the “Polychronization: Computation With Spikes (Izhikevich 2005)” record. For more about polychronization and the paper associated with this model please see my earlier blog post “Spontaneously Formed Neuronal Groups Far Exceed the Number of Neurons.”
The spnet.cpp model is set to run for 24 simulation hours or 86,400 seconds (60 seconds/minute * 60 minutes/hour * 24 hours) and the program automatically saves the previous second of simulation data to the spikes.dat file. Each earlier second is overwritten as the latest second is saved.
The poly_spnet.cpp model is set to run for 5 simulation hours or 18,000 seconds (60 seconds/minute * 60 minutes/hour * 5 hours) and the program automatically saves data in five files: all.dat, dat.dat, s.dat, spikes.dat, and polyall.dat. I’ll address the contents of the all.dat and polyall.dat files at a future date. Below the contents of the dat.dat, s.dat, and spikes.dat files are briefly explained.
The first column of the dat.dat file contains the simulation time in seconds. The second column contains the average firing rate of the population of excitatory neurons and the third column seems to contain the average excitatory neuron to excitatory neuron synaptic strength across the population. The forth column of numbers contains the average firing rate of the population of inhibitory neurons. Figure 1 above contains an x-y plot of the first and second columns (bottom plot), which contains 18,000 points with each point representing the excitatory neuron population’s firing rate in Hertz during a particular second of the simulation. The figure also contains an x-y plot of the first and forth columns (top plot), which contains 18,000 points with each point representing the inhibitory neuron population’s firing rate in Hertz during a particular second of the simulation.
The first column of the s.dat file contains the number identifiers for 1,000 simulated neurons. The second column contains the total synaptic weight onto the postsynaptic neuron identified in the first column. Synaptic weights change over time due to synaptic plasticity. In the file we can see the total synaptic weight change for any one neuron. However, for some reason time stamp data are not saved to s.dat. Of course, this can be easily changed in the code.
The spikes.dat file contains the number identifiers for 1,000 simulated neurons in its first column and associated times (in milliseconds) of spike occurrence in its second column. The format is the same as in the spikes.dat output of the spnet.cpp code and so is the way the data are saved. Only the most recent second of data are saved in the file.
Other related blog posts:
Spontaneously Formed Neuronal Groups Far Exceed the Number of Neurons