/* * test_noise_generator.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_noise_generator - minimal test of noise_generator Synopsis: (test_noise_generator) run -> dies if assertion fails Description: Tests parameter setting and statistical correctness for one application. Author: Plesser FirstVersion: July 2008 SeeAlso: noise_generator */ /unittest (7471) require /unittest using % First test: parameter setting on model and instance { ResetKernel /tdict << /mean 10.5 /std 0.23 /dt 0.5 >> def /ng1 /noise_generator Create def ng1 tdict SetStatus /noise_generator tdict SetDefaults /ng2 /noise_generator Create def ng1 [tdict keys] get ng2 [tdict keys] get eq } assert_or_die clear ResetKernel % Second test: error if uncommensurable delta_tau { ResetKernel 0 << /resolution 0.1 >> SetStatus /noise_generator << /dt 0.25 >> SetDefaults } fail_or_die % Third test: error if uncommensurable change of resolution { ResetKernel 0 << /resolution 0.1 >> SetStatus /noise_generator << /dt 0.1 >> SetDefaults 0 << /resolution 1.0 >> SetStatus /noise_generator Create % cannot create now with dt==0.1 } fail_or_die % Fourth test: recording at two different dt /vb verbosity def M_ERROR setverbosity % suppress warning from time reset { % run for resolution dt=0.1 project to iaf_neuron % create 100 repetitions of 1000ms simulations % collect membrane potential at end ResetKernel 0 << /resolution 0.1 >> SetStatus /ng /noise_generator Create def /nrn /iaf_neuron Create def ng nrn Connect ng << /mean 0.0 /std 1.0 /dt 0.1 >> SetStatus % no spiking, all parameters 1, 0 leak potential nrn << /V_th 1e10 /C_m 1.0 /tau_m 1.0 /E_L 0.0 >> SetStatus % now simulate /Nsims 100 def [Nsims] { pop ResetNetwork 0 <</time 0.0>> SetStatus 1000 Simulate nrn [/V_m] get } Table dup length Nsims eq assert % compute mean and std dev of potential dup Plus Nsims cvd div /meanV Set dup mul Plus Nsims cvd div meanV dup mul sub sqrt /stdV Set % expected values /emeanV 0.0 def /estdV ng [/dt] get nrn [/tau_m] get div neg exp dup 1 exch sub exch 1 add div sqrt ng [/std] get mul def /estdstdV estdV 2 Nsims cvd mul sqrt div def % std dev of std dev % require mean within 3 std dev, std dev within three std dev of std dev meanV emeanV sub abs estdV 3 mul lt stdV estdV sub abs estdstdV 3 mul lt and } assert_or_die vb setverbosity % restore default verbosity endusing