/* * test_iaf_ring.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_iaf_ring - sli script for test of iaf_neuron spike interaction across multiple machines. Synopsis: nest_indirect test_iaf_ring --> success Description: test_iaf_ring checks if spikes can travel along a chain of neurons and whether the result is independent of the number of machines involved in the computation. The unittest function distributed_assert_or_die can only handle the output of a single machine. Therefore the script collects the spikes of all neurons using a parrot neuron. The script does not check the id of the sender, only the spike timing. A more strict test could be carried out with a unittest function which merges the output of all machines. The correct sequence of spikes including their ids is documented at the end of this file. Note that due to the use of an intermediate parrot neuron the reported spike times have an offset of 1ms (10 steps) with respect to the documented values. The offset corresponds to the default delay of 1ms. Author: January 2006, Eppler, Diesmann, Gewaltig September 2010, Diesmann SeeAlso: testsuite::test_iaf_i0, testsuite::test_getrng_neuron */ /unittest (9715) require /unittest using /delay 2.0 def % delay between neurons /h 0.1 def % time resolution /simtime 35.0 def % simulation time /recend simtime def % end of recording /n 4 def /neurons [n] Range def [1 2 4] { ResetKernel 0 << /resolution h >> SetStatus /iaf_neuron n Create ; 1 << /I_e 1450.0 >> SetStatus neurons 2 1 Partition { arrayload pop 1000.0 delay Connect } forall /spike_detector << /withtime true /time_in_steps true >> Create /sd Set /parrot_neuron Create /pn Set neurons pn ConvergentConnect pn sd Connect simtime Simulate pn /local get { sd [/events/times] get cva } if } distributed_invariant_assert_or_die %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Expected output of this script. % An intermediate parrot neuron introduces an offset of 10 in the % spike times corresponding to the default delay of 1ms. % % gid spiketime % 1 30 % 1 80 % 2 111 % 1 130 % 2 174 % 1 180 % 3 205 % 1 230 % 2 234 % 1 280 % 3 280 % 2 294 % 4 313 % 1 330