/* * test_iaf_psc_exp_multisynapse.sli * * This file is part of NEST * * Copyright (C) 2009 by * The NEST Initiative * * See the file AUTHORS for details. * * Permission is granted to compile and modify * this file for non-commercial use. * See the file LICENSE for details. * */ /* BeginDocumentation Name: testsuite::test_iaf_psc_exp_multisynapse - sli script for the multisynapse model Synopsis: (test_iaf_psc_exp_multisynapse) run Description: This test creates a multisynapse neuron and first checks if time constants can be set correctly. Afterwards a neuron with four synaptic time constants with different weights and delays is simulated and the resulting membrane potential values after the income of one spike are checked against analytically obtained values. The textual output of the voltmeter documented in this file can be regenerated by setting adding /to_screen true to the SetStatus call of vm below. SeeAlso: test_iaf_psc_alpha_multisynapse, iaf_psc_exp_multisynapse FirstVersion: April 2013 Author: Hannah Bos */ (unittest) run /unittest using 0.1 /h Set ResetKernel 0 << /local_num_threads 1 /resolution h >> SetStatus /n_syn 4 def /taus [2. 20. 60. 100.] def /delays [7. 5. 2. 1. ] def % ms /weights [30. 50. 20. 10.] def /spike_time 0.1 def /dt 0.1 def /iaf_psc_exp_multisynapse Create /npost Set npost << /n_synapses n_syn /tau_syn taus >> SetStatus npost GetStatus /n_synapses get n_syn eq assert_or_die npost GetStatus /tau_syn get taus eq assert_or_die % test if tau_syn array is exactly n_synapses long npost dup GetStatus /tau_syn get length exch GetStatus /n_synapses get eq assert_or_die /voltmeter Create /vm Set vm << /withtime true /time_in_steps true /interval h /to_screen false >> SetStatus /spike_generator Create /sg Set sg << /spike_times [spike_time] >> SetStatus /static_synapse /s1 CopyModel /static_synapse /s2 CopyModel /static_synapse /s3 CopyModel /static_synapse /s4 CopyModel /s1 << /weight weights 0 get /delay delays 0 get /receptor_type 0 >> SetDefaults /s2 << /weight weights 1 get /delay delays 1 get /receptor_type 1 >> SetDefaults /s3 << /weight weights 2 get /delay delays 2 get /receptor_type 2 >> SetDefaults /s4 << /weight weights 3 get /delay delays 3 get /receptor_type 3 >> SetDefaults sg npost /s1 Connect sg npost /s2 Connect sg npost /s3 Connect sg npost /s4 Connect vm npost 1.0 h Connect 8 ms Simulate { % reference data dup Transpose First /test_times Set % times of reference vm [/events [/times /V_m]] get cva % array of recorded data 6 ToUnitTestPrecision % to precision of reference Transpose % all recorded tuples {First test_times exch MemberQ } Select % those with reference eq % compare } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Expected output of this program: % % time (in steps) voltage (in mV) [ [ 1 -70 ] % <----- Spike time [ 2 -70 ] [ 3 -70 ] [ 4 -70 ] [ 5 -70 ] [ 6 -70 ] [ 7 -70 ] [ 8 -70 ] [ 9 -70 ] [ 10 -70 ] [ 11 -70 ] % <----- The spike arrives at the first synapse but has not yet effected the snynaptic current and membrane potential. [ 12 -69.9960 ] % <- [ 13 -69.9921 ] % | [ 14 -69.9882 ] % | [ 15 -69.9843 ] % --- the effect of the synaptic current is visible in the membrane potential % % ... % [ 20 -69.9657 ] %<----- The spike arrives at the second synapse but has not yet effected the snynaptic current and membrane potential. [ 21 -69.9621 ] %<- [ 22 -69.9506 ] % | [ 23 -69.9392 ] % | [ 24 -69.928 ] % --- the effect of the two synaptic currents is visible in the membrane potential [ 25 -69.9169 ] % % % ... % [ 50 -69.6771 ] %<----- The spike arrives at the third synapse but has not yet effected the snynaptic current and membrane potential. [ 51 -69.6689 ] %<- [ 52 -69.641 ] % | [ 53 -69.6134 ] % | [ 54 -69.5863 ] % --- the effect of the three synaptic currents is visible in the membrane potential [ 55 -69.5595 ] % % % ... % [ 70 -69.2011 ] %<----- The spike arrives at the fourth synapse but has not yet effected the snynaptic current and membrane potential. [ 71 -69.18 ] %<- [ 72 -69.1474 ] % | [ 73 -69.1159 ] % | [ 74 -69.0854 ] % --- the effect of the four synaptic currents is visible in the membrane potential [ 75 -69.0557 ] % ] % % exch assert_or_die endusing