/* * test_GetConnections.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_DataConnect - sli script to test if DataConnect works as expected Synopsis: (test_DataConnect) run Description: This test generates 100 iaf_neurons and creates a connectivity vector per neuron SeeAlso: DataConnect FirstVersion: May 2012 Author: Marc-Oliver Gewaltig */ /unittest (7488) require /unittest using % Create Random number generator rngdict /MT19937 get 1234 CreateRNG /rng Set rng rdevdict /uniformint get CreateRDV /unidv Set rng rdevdict /normal get CreateRDV /normdv_w Set rng rdevdict /normal get CreateRDV /normdv_d Set unidv << /nmin 1 /nmax 100 >> SetStatus normdv_w << /mean 10. /sdev 0.5 >> SetStatus normdv_d << /mean 1. /sdev 0.1 >> SetStatus /n_neurons 100 def /n_syn 10 def /iaf_neuron n_neurons Create /n Set /synapses [ n_neurons { << /target unidv n_syn RandomArray 1.0 mul /weight normdv_w n_syn RandomArray /delay normdv_d n_syn RandomArray { dup 0.1 lt { pop 0.1 } if } Map % clip small values >> } repeat ] def 1 1 n_neurons { dup synapses exch 1 sub get /static_synapse DataConnect } for (Done Connecting) = % Check for one source neuron /nrn 5 def << /source [nrn] /synapse_model /static_synapse >> GetConnections /conn Set conn {GetStatus} Map /syn5 Set syn5 { /weight get } Map /weights Set syn5 { /delay get} Map /delays Set syn5 { /target get cvd } Map /targets Set synapses nrn 1 sub get /target get doublevector2array targets eq assert_or_die % Now the second variant of dataconnect which takes a list of status dicts. % Step 1: read out all connections and retrieve the synapse status << /synapse_model /static_synapse >> GetConnections {GetStatus} Map /connectome Set % Step 2: reset the kernel ResetKernel % Step 3: rebuild the neurons /iaf_neuron n_neurons Create /n Set % Step 4: Rebuild the connections % Pass the connectome to DataConnect connectome DataConnect % Step 5: Check for one source neuron /nrn 5 def << /source [nrn] /synapse_model /static_synapse >> GetConnections /conn Set conn {GetStatus} Map /syn5 Set syn5 { /weight get } Map /weights Set syn5 { /delay get} Map /delays Set syn5 { /target get cvd } Map /targets Set synapses nrn 1 sub get /target get doublevector2array targets eq assert_or_die endusing