/* * test_stdp_poiss.sli * * This file is part of NEST. * * Copyright (C) 2004 The NEST Initiative * * NEST is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * NEST is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NEST. If not, see <http://www.gnu.org/licenses/>. * */ /* BeginDocumentation Name: testsuite::test_stdp_sg - sli script to test stdp_synapse model implementing spike time dependent plasticity syanpses according to Guetig et al. (2003), Journal of Neuroscience. This script performs repeated spike pairing of two neurons connected by a stdp_synapse. The synapse strength is recorded after 60 paired spikes in a file. Synopsis: (test_stdp) run -> compare cout with comments in file author: Moritz Helias, Wiebke Potjans, Abigail Morrison, Markus Diesmann date: Sep 2007 */ ResetKernel % clear all existing network elements modeldict begin % open model and user dictionaries synapsedict begin userdict begin 0.1 /h Set % simulation timestep [ms] [0] << /resolution h /total_num_virtual_procs 1 /overwrite_files true >> SetStatus /delay 1.0 def % dendritic delay [ms] 10000 /K Set 0.8 /f_ex Set f_ex K mul /K_ex Set 1.0 f_ex sub K mul /K_in Set 10.0 /nu_ex Set 10.0 /nu_in Set 45.0 /w_ex Set % in pA, background PSC amplitude 3.83 /g Set % w_ex neg g mul /w_in Set /poisson_generator Create /pg_ex Set pg_ex << /rate K_ex nu_ex mul >> SetStatus /poisson_generator Create /pg_in Set pg_in << /rate K_in nu_in mul >> SetStatus /spike_detector Create /sd Set sd << /withtime true /withgid true /to_file true >> SetStatus /voltmeter Create /vm Set vm << /withtime true /withgid true /to_file true >> SetStatus /iaf_psc_alpha Create /neuron1 Set /iaf_psc_alpha Create /neuron2 Set neuron1 << /tau_syn_ex 0.3 /tau_syn_in 0.3 /tau_minus 20.0 >> SetStatus neuron2 << /tau_syn_ex 0.3 /tau_syn_in 0.3 /tau_minus 20.0 >> SetStatus pg_ex neuron1 w_ex delay Connect pg_ex neuron2 w_ex delay Connect pg_in neuron1 w_in delay Connect pg_in neuron2 w_in delay Connect neuron1 sd Connect neuron2 sd Connect %vm neuron1 Connect vm neuron2 Connect /stdp_synapse << /delay delay /weight 35. /Wmax 70. /alpha 0.95 /lambda 0.025 /mu_plus 0.05 /mu_minus 0.05 /tau_plus 20.0 >> SetDefaults neuron1 neuron2 /stdp_synapse Connect neuron2 GetStatus /local get { (weight.gdf) (w) file /f_weight Set } if 40000.0 /T Set 100.0 /dt Set %76.0 /dt Set 50.0 /dt Set %10000.0 /dt Set 0 dt T { /t Set neuron2 GetStatus /local get { % we are on the machine where neuron2 resides << /source neuron1 /synapse_model /stdp_synapse >> FindConnections 0 get GetStatus /weight get /w Set %we know that there is only a single synapse w == f_weight t <- (\t) <- w <- endl pop } if dt Simulate } for neuron2 GetStatus /local get { cout (expected weight at T=40000 ms: 33.8466 pA) <- endl pop cout (weight at last event: ) <- w <- ( pA) <- endl pop } if end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Expected output of this program: % % The output send to std::cout is a superposition of the output of % the voltmeter and the spike detector. Both, voltmeter and spike % detector are connected to the same neuron. % % % The expected output of the program for a simulation time of % 40000.0ms is 33.8466pA. % % The result is independent of the length of the interval dt in which % Simulate is called as long as the last pre-synaptic spike included % in the simulation remains the same. %