/* * test_spike_transmission_ps.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/>. * */ /* Testscript Setup: - poisson_generator_ps with high rate - spike_detector recording precise spike times - connected with default connection, delay 1ms Test: - simulate for T at different resolutions h - record until Tstop <= T - min_delay - compare recorded spike times: must be equal Important: - Recording must end at the same time for all resolutions. No data newer than one min_delay before the end of the simulation can be recorded. To avoid any problems caused by min_delay depending on the resolution (see #161), we set the end of the recording time explicitly. We check by assertion that the end of recording is no later than T - min_delay. - Connection delay must be set explicitly because of default delay recalibration error reported in #161. Once #161 is fixed, it should no longer be necessary to explicitly set the delay. Historic information: - related to tickets #157, #164, #210 worked even with ticket #157 unresolved. Only the presence of a neuron (see test_spike_transmission_ps_iaf) exhibited the problem. Prior to the fix of ticket #164 this test produced inconsistent results without specifying /local_num_threads 1 for the kernel. */ /unittest (6688) require /unittest using % test parameters ------------------------------------------------- /T 4.0 def % simulation time /Tstop 3.0 def % end of recording /prate 12892.3 def % rate of Poisson generator /delay 1.0 def % connection delay, needs to be set explicity due to #161 /resolutions [0.1 0.01 0.001] def % test routine ---------------------------------------------------- /Transmission { /h Set ResetKernel 0 << /resolution h >> SetStatus % build and connect first /spike_detector Create /sp Set /poisson_generator_ps Create /pn Set % now configure sp << /record_to [ /memory ] /precise_times true /stop Tstop >> SetStatus pn << /rate prate >> SetStatus pn sp 1.0 delay Connect % check in-delay condition /mindel 0 /min_delay get def Tstop T mindel sub leq assert % simulate T Simulate % obtain event time stamps and offsets sp [/events /times] get cva } def % execute test ----------------------------------------------------- resolutions { Transmission } Map % Stack now contains one array of spike times per % resolution. Check if spike times are equal to within 4.5e-16 ms. dup First /ref Set % reference Rest true exch { ref sub 0 exch { abs max } Fold 4.5e-16 lt and } Fold assert_or_die