/*
 *  test_poisson_ps_min_interval.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_min_interval - checks that intervals are independent of tic size

Synopsis: (test_poisson_ps_min_interval) run -> minimum interal close to 0

Description:
 The inter spike interval (ISI) distribution of a Poisson process is 
 exponential. The test verifies that the minimum interval is arbitrarily 
 small and not constrained by the ms_per_tic property of the simlation kernel.
Remarks:
 Even a correct implementation generates with low probability spike trains where the
 minimal interval is larger than ms_per_tic. The seed set in the default configuration 
 of NEST avoids this problem. Therefore, failure of this script indicates that the
 configuration is not portable.
FirstVersion: February 2009
Author: Diesmann
*/

(unittest) run
/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
  Min


0 /ms_per_tic get 10.0 div lt  assert_or_die    % should converge to 0

