Visualization¶
Visualization of simulation data often requires custom code, but we provide two ways to get a general idea of the simulated spike data.
rasterplot-pdf¶
Rasterplot-pdf allows you to create a pdf file with rasterplots of a batch of simulations.
You can run it using the cxvisualize
command (more on the command).
For example,
to create raster plots of all simulations run on 13 December 2019 at 13:37 in a particular directory,
you can write
cxvisualize --rasterplot-pdf ~/CxWorkspace/my_simulation/ 20191213_1337
This creates a pdf file with the specified timestamp in the same directory. Note that this script is very basic and is intended only for screening that there is not a simple bug in the simulation configuration.
ViSimpl¶
ViSimpl allows you to visualize the time course and geometry of spiking in a single simulation. First, download the ViSimpl binary (the .AppImage binary is for Linux and the .dmg binary is for macOS). Then put the ViSimpl binary in a directory that is located in your system path. Also, remove version numbering from the binary and make it executable:
mv visimpl-0.1.4-x86_64.AppImage visimpl.AppImage
chmod +x visimpl.AppImage
After this you can visualize
CxSystem2 spike data in ViSimpl using the cxvisualize
command:
cxvisualize ~/CxWorkspace/my_simulation/my_simulation_results.gz
This opens up the ViSimpl main screen. You should be able to rotate the circuit and “play” the simulation without further configuration. To learn how you can customize the visualization, please see the ViSimpl website.
Custom visualizations¶
Simulation data are stored in dictionaries in the results file. For example, to access spike data in a gzipped file, you can write:
import zlib
import pickle
fi = open('my_simulation_results.gz', 'rb')
data_pickle = zlib.decompress(fi.read())
data = pickle.loads(data_pickle)
spike_data = data['spikes_all']
neuron_positions = data['positions_all]
After this, spikes are available in the spike_data
dictionary indexed by neuron group names.
Then, for each
neuron group, you have a dictionary with arrays i
(neuron index) and t
(spike time).
Similarly, neuron positions are available in the neuron_positions
dictionary containing two
subdictionaries: w_coord
(cortical position) and z_coord
(retinal position).
If you are not modelling the visual system, you can ignore the z_coord
subdictionary.