====== 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]].