/*
* test_tsodyks_facilitating.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: test_tsodyks_facilitating - sli script for overall test of tsodyks_synapse synapse model
Synopsis: (test_tsodyks_facilitating) run -> compare cout with comments in file
Description:
Script to test Tsodyks short term plasticity facilitating synapses according to
'Neural Networks with Dynamic Synapses'
Misha Tsodyks, Klaus Pawelzik, Henry Markram
Neural computation 10, 821--853 (1998)
reproduces figure 1 B,(C)
author: Markus Diesmann, Moritz Helias
date: March 2006
*/
/unittest (7039) require
/unittest using
ResetKernel % clear all existing network elements
userdict begin
1 /local_num_threads Set
8 /total_num_virtual_procs Set
0.1 /h Set
/Tau 60.0 def % membrane time constant
/Theta 15.0 def % threshold
/U0 0.0 def % reset potential of Vm
/C Tau 1.0 div def % Tau [ms] / 1.0 GOhm in NEST units
/TauR 2.0 def % refractory time
/Tau_psc 1.5 def % time constant of PSC (=Tau_inact)
/Tau_rec 130.0 def % recovery time
/Tau_fac 530.0 def % facilitation time
/U 0.03 def % facilitation parameter U
/A 1540.0 def % PSC weight in pA
/f 20.0 1000.0 div def % frequency in Hz given converted to 1/ms
/Tend 1200.0 def % simulation time
/TIstart 50.0 def % start of current
/TIend 1050.0 def % end of current
% set resolution and limits on delays
% limits must be set BEFORE connecting any elements
0
<<
/resolution h
/local_num_threads local_num_threads
% /total_num_virtual_procs total_num_virtual_procs
>> SetStatus
cout 15 setprecision
/tsodyks_synapse
<< /tau_psc Tau_psc
/tau_rec Tau_rec
/tau_fac Tau_fac
/U U
/delay 0.1
/weight A
/u 0.0
/x 1.0
>> SetDefaults
/iaf_tum_2000 Create /neuron1 Set
neuron1 << /tau_m Tau
/t_ref_tot TauR
/t_ref_abs TauR
/tau_syn_ex Tau_psc
/tau_syn_in Tau_psc
/C_m C
/V_reset U0
/E_L U0
/V_m U0
/V_th Theta
>> SetStatus
% neuron1 GetStatus info
/iaf_tum_2000 Create /neuron2 Set
neuron2 << /tau_m Tau
/t_ref_tot TauR
/t_ref_abs TauR
/tau_syn_ex Tau_psc
/tau_syn_in Tau_psc
/C_m C
/V_reset U0
/E_L U0
/V_th Theta
/V_m U0
>> SetStatus
% neuron2 GetStatus info
/I0 Theta C mul Tau div 1.0 1.0 f div TauR sub Tau div neg exp sub div def
/dc_generator Create /dc_gen Set
dc_gen << /amplitude I0 /start TIstart /stop TIend >> SetStatus
/voltmeter Create /vm Set
vm << /withtime true
/to_memory true
/interval 25.0
>> SetStatus
/spike_detector Create /sp_det Set
sp_det << /withtime true /withgid true >> SetStatus
dc_gen neuron1 Connect
vm neuron2 Connect
neuron1 neuron2 /tsodyks_synapse Connect
Tend Simulate
vm [/events [/times /V_m]] get cva
6 ToUnitTestPrecision
Transpose /vm_sim Set % array of recorded data
% to print to screen
%vm_sim {
% ==
%} forall
[
[25 0]
[50 0]
[75 0]
[100 4.739750000000000e-01]
[125 7.706030000000000e-01]
[150 1.297120000000000e+00]
[175 1.757990000000000e+00]
[200 2.114420000000000e+00]
[225 2.714490000000000e+00]
[250 2.785530000000000e+00]
[275 3.546150000000000e+00]
[300 3.272710000000000e+00]
[325 4.233240000000000e+00]
[350 3.583070000000000e+00]
[375 4.788130000000000e+00]
[400 3.739560000000000e+00]
[425 5.233850000000000e+00]
[450 3.767230000000000e+00]
[475 5.593890000000000e+00]
[500 3.687720000000000e+00]
[525 5.888270000000000e+00]
[550 3.881790000000000e+00]
[575 6.132580000000000e+00]
[600 4.042850000000000e+00]
[625 6.338430000000000e+00]
[650 4.178550000000000e+00]
[675 6.514250000000000e+00]
[700 4.294460000000000e+00]
[725 6.666160000000000e+00]
[750 4.394600000000000e+00]
[775 6.798620000000000e+00]
[800 4.481930000000000e+00]
[825 6.914990000000000e+00]
[850 4.558640000000000e+00]
[875 7.017830000000000e+00]
[900 4.626440000000000e+00]
[925 7.109160000000000e+00]
[950 4.686650000000000e+00]
[975 7.190620000000000e+00]
[1000 4.740350000000000e+00]
[1025 7.263560000000000e+00]
[1050 4.788430000000000e+00]
[1075 7.329110000000000e+00]
[1100 4.831650000000000e+00]
[1125 3.185220000000000e+00]
[1150 2.099830000000000e+00]
[1175 1.384290000000000e+00]
] /vm_expected Set
vm_sim vm_expected eq assert_or_die
end
endusing % unittest