/*
* test_poisson_ps_intervals.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_poisson_ps_intervals - checks coefficient of variation
Synopsis: (test_poisson_ps_intervals) run -> CV sufficiently close to 1
Description:
The inter spike interval (ISI) distribution of a Poisson process is
exponential. The coefficient of variation defined as the standard deviation
of the intervals normalized by the mean interval is 1. The test checks whether
the output of the poisson_generator_ps as recorded by the spike_detector is
sufficiently close to 1. Without the property /precise_times the error is larger
than 0.1 .
Remarks:
An improved version of this test should check whether the observed deviation from
unity is within the error bounds given by the number of spikes.
Even a correct implementation generates with low probability spike trains which
do not pass the test. The seed set in the default configuration of NEST avoids
this problem. Therefore, failure of this script indicates that the configuration
is not portable.
The test in r8067 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.
FirstVersion: February 2008
Author: Diesmann, Plesser
*/
/unittest (6688) require
/unittest using
M_ERROR setverbosity
10000.0 /T Set
0 << /resolution 0.1 >> SetStatus
/spike_detector Create /sp Set
sp << /precise_times true >> SetStatus
/poisson_generator_ps Create /pn Set
pn << /rate 12892.25 >> SetStatus
pn sp Connect
T Simulate
sp [/events /times] get cva % spike train
2 1 Partition Transpose {sub neg} MapThread % inter spike intervals
dup StandardDeviation
exch Mean
div % coefficient of variation
1.0 sub abs 0.001 lt assert_or_die % should converge to 1