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.

**Figure 1. Spike raster plots of the average firing rates of excitatory (bottom) and inhibitory neurons (top) across an 18,000 second (x-axis; 5 hours) simulation using the polychronization model poly_spnet.cpp. At each second the average firing rate of the excitatory or inhibitory neurons is plotted in Hertz (y-axis). Notice that the excitatory neurons plot has a maximum firing rate of 10 Hertz in contrast to the inhibitory neurons plot with a maximum firing rate of 70 Hertz.**

*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

Pingback: Tweets that mention Polychronization: Play To Understand | Dr. Donald Doherty's Blog -- Topsy.com