/* * test_iaf_dc.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_dc - sli script for test of iaf_neuron with external DC current Synopsis: (test_iaf_dc) run -> compare cout with comments in file Description: test_iaf_dc.sli is a test of a specific feature of the iaf_neuron model. It is tested at which time and how an external DC current affects the state of the neuron, the membrane potential in particular. This is probably the simplest setup demonstrating how an external continuous function (the DC) can be incorporated into a system with point event interaction. A general introduction, including examples not restricted to piecewise constant functions, can be found in [1]. The expected output is documented and briefly commented at the end of the script. Cleary, the result of this script is not resolution independent. The choice of the computation step size determines at which point in time the current affects the neuron. There are 2 problems with this script: 1. A network element (here the DC generator) can only change its state when it performs a computation (update) step t -> t + h. Thus, the earliest possible time the DC generator can be switched on is at t=h. This is the default. Therefore, the time of onset depends on the computation step size. 2. The default delay between the DC generator and the neuron is the minimal allowed value of 1 h. Therefore, the delay of the current depends on the computation step size. A sequence of further test scripts (SeeAlso key below) demonstrates and verifies how the SLI script can be made independent of the computation step size. This leads to properly aligned and identical voltage traces for simulations carried out with different computation step sizes. References: [1] Rotter S & Diesmann M (1999) Exact simulation of time-invariant linear systems with applications to neuronal modeling. Biologial Cybernetics 81:381-402. Author: February 2004, Diesmann, Gewaltig, Plesser SeeAlso: iaf_neuron, testsuite::test_iaf_dc_aligned, testsuite::test_iaf_dc_aligned_delay, testsuite::test_iaf_dc_aligned_stop */ /unittest (6688) require /unittest using 0.1 /h Set ResetKernel 0 << /local_num_threads 1 /resolution h >> SetStatus /iaf_neuron Create /neuron Set /dc_generator Create /dc_gen Set dc_gen << /amplitude 1000. >> SetStatus /voltmeter Create /vm Set vm << /withtime true /to_memory true /time_in_steps true /interval h >> SetStatus /spike_detector Create /sd Set sd << /withtime true /to_memory true /time_in_steps true >> SetStatus dc_gen neuron 1.0 h Connect vm neuron Connect neuron sd Connect 2 Simulate { /d Set d Transpose First /test_times Set % times of reference vm [/events [/times /V_m]] get cva % array of recorded voltages 6 ToUnitTestPrecision % to precision of reference Transpose % all recorded tuples {First test_times exch MemberQ } Select % those with reference d eq % compare } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Expected output of this program: % % The output send to std::cout is a superposition of the output of % the voltmeter and the spike detector. Both, voltmeter and spike % detector are connected to the same neuron. % % time (in steps) voltage (in mV) % [ % 0 -70 <--------------- Voltage trace of neuron, membrane potential [ 1 -70] % <-------- is at rest (initial condition). [ 2 -70] % <------- | [ 3 -69.602] %<- | - In the first update step 0ms -> 0.1 ms, i.e. at [ 4 -69.2079] % | | the earliest possible time, the current generator [ 5 -68.8178] % | | is switched on and emits a current event with time [ 6 -68.4316] % | | stamp 0.1 ms. [ 7 -68.0492] % | | [ 8 -67.6706] % | ---- After the minimal delay of 1 computation time step, [ 9 -67.2958] % | the current affects the state of the neuron. This is [ 10 -66.9247] % | reflected in the neuron's state variable y0 (initial [ 11 -66.5572] % | condition) but has not yet affected the membrane [ 12 -66.1935] % | potential. [ 13 -65.8334] % | [ 14 -65.4768] % ------ The effect of the DC current, influencing the neuron [ 15 -65.1238] % for 0.1 ms now, becomes visible in the membrane potential. [ 16 -64.7743] % ... % ] exch assert_or_die