====== 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 [[manual:ras]] file stays empty since the neuron does not emit any spikes. The [[manual: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.
{{ :examples:epsp.png?300 |}}
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 [[manual: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 [[manual: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 [[manual: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 [[manual: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 [[manual:System]].