This command line tool extracts spike information from binary spike raster files and converts them in the more digestible ras format. Binary files provide a significant simulation speed advantage over the old ras file format, take less disk space and allow random access to temporal chunks of spike information. aube
is capable of efficiently merging the multiple spk files generated by parallel simulations and exports only select temporal ranges from it. It can be efficiently incorporated into Linux command-line and pipe based work flow and works flawlessly with gnuplot. The tool included with Auryn releases (ver. >0.6.1) and can be found in the tools
directory. For users doing their analysis in Python, the python tools offer an alternative to decoding spk files. These tools allow to directly import binary spiking data into Python without the detour via aube.
aube
is compiled automatically with the rest of Auryn and located in the tools directory. It can be installed to your systems default install location (e.g. /usr/local/bin
) with the help of make install
. Otherwise you will have to ensure yourself that aube
is in the PATH for the following examples to work.
To see how this works let's consider an example. Let's first generate some spiking output using the Vogels Abbott benchmark network with conductance-based synapses (see examples).
To that end, we use example program examples/sim_coba_binmon.cpp
which will be compiled with Auryn. You find it in your build directory under examples. In this directory, to run the code, just call:
./sim_coba_binmon --dir /tmp
This code will run the using a single process.
The above example has written the file /tmp/coba.0.e.spk
to your disk. Now you want to extract all spikes from this file and write them to stdout. All you need to do is to call aube:
aube --input /tmp/coba.0.e.spk
or, alternatively, in short
aube -i /tmp/coba.0.e.spk
If you want to write the output to a file instead you can call:
aube --input /tmp/coba.0.e.spk > output.ras
In many cases you will run parallel simulations with Auryn. For the above example that is equivalent to the call:
mpirun -n 2 sim_coba_binmon --dir /tmp
This will run the Vogels Abbott benchmark using two parallel processes. Because each process writes only the spikes of the neurons it simulates (neurons are distributed across processes), you end up with multiple files /tmp/coba.*.e.spk
. After the simulation, however, you would like to merge these spikes to analyze all spikes.
Just call aube on all the input files:
aube --input /tmp/coba.*.e.spk
Most of the time you don't want all the spikes, but only a certain interval. Say, you would like to extract spikes from 7s to 10s to the file output.ras
. Then the aube call for you is:
aube --inputs /tmp/coba.*.e.spk --from 7 --to 10 --output output.ras
Alternatively you can use a shorter notation which achieves the same:
aube -i /tmp/coba.*.e.spk -f 7 -t 10 > output.ras
You can use aube
in pipes which for instance allows you calling it from without gnuplot. To plot the last 1s of spikes from a simulation from within gnuplot run:
plot '< aube --inputs /tmp/coba.*.e.spk --last 1' with dots
For help try
aube --help