/*
* model_node_init.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/>.
*
*/
/* model_node_init.sli
Makeshift test to see if setting model params and then creating a neuron
and creating a neuron and then setting node params lead to the same
results.
Works by connecting device to iaf_neuron, measuring voltage trace over 1s
and comparing traces.
todo: - generalize for more models
- find way to compare property dictionaries
*/
/unittest (6688) require
/unittest using
%/model /step_current_generator def
%/params << /amplitude_times [ 100.0 200.0 300.0 500.0 ]
% /amplitude_values [ 100.0 -200.0 50.0 100.0 ]
% >> def
/model /mip_generator def
/params << /rate 100.0 /p_copy 0.5 /mother_seed 123456 >> def
/run_model {
ResetKernel
0 << /overwrite_files true >> SetStatus
% expect boolean flag, if true init model, else init node
% leave voltmeter potential trace and node status dict on stack
/param_model Set
param_model {
model params SetDefaults
} if
model Create /m Set
param_model not {
m params SetStatus
} if
/iaf_neuron Create /n Set
/voltmeter Create /vm Set
m n Connect
vm n Connect
vm << /to_file true /to_memory true >> SetStatus
1000 Simulate
vm [ /events /V_m ] get cva
m GetStatus
2 arraystore
} def
% run once with model, once with node initialization
% and compare results
[true false] { run_model } Map
Transpose arrayload pop
/sdicts Set
/volts Set
% don't know how to compare dictionaries, so test only voltage traces now
volts arrayload pop eq
assert_or_die