Table of Contents
sim_epsp
This simulation sets up an excitatory and an inhibitory Poisson neuron and connects them to a single postsynaptic cell (IFGroup). It records and outputs the membrane potential in the file out_epsp.mem
.
Running the program
The simulation can be invoked without any parameters. It creates the following command line output
zenke@merlin ~/auryn/build/home $ ./sim_epsp ( 0) Running ... [=========================] 100% t=10.0 s ( 0) Freeing ...
and a set of files
0 -rw-r--r-- 1 zenke zenke 0 Jan 10 19:54 out_epsp.ras 1.8M -rw-r--r-- 1 zenke zenke 1.8M Jan 10 19:54 out_epsp.nmda 1.9M -rw-r--r-- 1 zenke zenke 1.9M Jan 10 19:54 out_epsp.mem 1.8M -rw-r--r-- 1 zenke zenke 1.8M Jan 10 19:54 out_epsp.gaba 1.8M -rw-r--r-- 1 zenke zenke 1.8M Jan 10 19:54 out_epsp.ampa 4.0K -rw-r--r-- 1 zenke zenke 1.2K Jan 10 19:54 out_epsp.0.log
In the default configuration of the simulation the ras file stays empty since the neuron does not emit any spikes. The mem file contains the trace of the membrane potential over time. The other files (with extensions ampa
,gaba
and nmda
) contain traces of the neuron's conductance variables.
Output example
This plot shows the membrane potential of the single neuron in the simulation.
This plot can be generated by running gnuplot and issueing the follwing commands in the same directory
set xlabel 'Time [s]' set ylabel 'Membrane voltage [V]' plot 'out_epsp.mem' with lines
The importand bits
PoissonGroup * poisson = new PoissonGroup(N,1.); PoissonGroup * poisson2 = new PoissonGroup(N,1.); IFGroup * neuron = new IFGroup(1);
Sets up the two Poisson neurons (two groups containing a single Poisson cell each) and a single integrate-and-fire cell from the IFGroup type.
IdentityConnection * con = new IdentityConnection(poisson,neuron,w,GLUT); IdentityConnection * con2 = new IdentityConnection(poisson2,neuron,w,GABA);
Creates two one-to-one connetions between the Poisson neurons and the integrate-and-fire cell.
SpikeMonitor * smon = new SpikeMonitor( neuron, tmpstr.c_str() );
Sets up a SpikeMonitor and tells it to record from our neuron
. The output is written to a file that is specified by tmpstr
.
VoltageMonitor * vmon = new VoltageMonitor( neuron, 0, tmpstr.c_str() );
Creates a VoltageMonitor that records the voltage to a different file which is again specified in tmpstr
. Note that an equivalent alternative syntax would be to recorde voltages would be directly using a StateMonitor. The conductance monitors are set up in a similar way.
logger->msg("Running ...",PROGRESS); sys->run(10);
This finally outputs a message Running…
on the console and triggers the run for 10s. Note the call of the global variable sys of type System.