/* * test_iaf_psc_alpha_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_alpha_multisynapse - sli script for the multisynapse model Synopsis: (test_iaf_psc_alpha_multisynapse) run Description: This test creates a multisynapse neuron and first checks if time constants can be set correctly. Afterwards, it simulates with four different time constants and records the neuron's synaptic current. The expected PSC-maxima are calculated and compared with the simulated currents. SeeAlso: FirstVersion: March 2009 Author: Sven Schrader */ /unittest (8093) require /unittest using /tolerance 1e-2 def %mV /n_syn 4 def /taus [2. 20. 60. 100.] def /delays [100. 200. 500. 1200. ] def % ms /spike_time 100. def /dt 0.1 def /iaf_psc_alpha_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 /multimeter Create /mm Set mm << /record_from [/currents] /withgid false /withtime false /to_file false /to_memory true /interval 0.1 /precision 5 >> 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 1.0 /delay delays 0 get /receptor_type 0 >> SetDefaults /s2 << /weight 1.0 /delay delays 1 get /receptor_type 1 >> SetDefaults /s3 << /weight 1.0 /delay delays 2 get /receptor_type 2 >> SetDefaults /s4 << /weight 1.0 /delay delays 3 get /receptor_type 3 >> SetDefaults sg npost /s1 Connect sg npost /s2 Connect sg npost /s3 Connect sg npost /s4 Connect mm npost 1. 8. /static_synapse Connect 2500 ms Simulate /d mm GetStatus /events get def d /currents get cva /currents Set % find indices where currents should be maximal (weight==1.0) /expected_maxima [delays taus] { add dt div spike_time dt div add 1 add cvi } MapThread def % compare currents at above positions with the given unit weight. expected_maxima { currents exch get 1.0 sub abs tolerance lt } Map n_syn { true } repeat n_syn arraystore eq assert_or_die endusing