/*
* balancedneuron.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/>.
*
*/
ResetKernel
1000. ms /t_relax Set % how long to wait for the state to stabiluze before reording the spikes
100000. ms /t_sim Set % how long we simulate to compute the rate (1000 sec)
16000 /n_ex Set % size of the excitatory population
4000 /n_in Set % size of the inhibitory population
5.0 Hz /r_ex Set % mean rate of the excitatory population
45.0 pA /epsc Set % peak amplitude of excitatory synaptic currents
-45.0 pA /ipsc Set % peak amplitude of inhibitory synaptic currents
1.0 ms /d Set % synaptic delay
5.0 Hz /lower Set % lower bound of the search interval
25.0 Hz /upper Set % upper bound of the search interval
0.1 Hz /prec Set % how close need the excitatory rates be
M_INFO 1 add setverbosity % suppress output from Simulate
/iaf_neuron Create /neuron Set % target neuron
/poisson_generator Create /ex_pop Set % excitatory population
/poisson_generator Create /in_pop Set % inhibitory population
/spike_detector Create /spikes Set % the spike detector device
ex_pop
<<
/rate r_ex n_ex mul % multiply rate and number of neurons
>> SetStatus
spikes
<<
/withtime false % suppress output from spike detector
>> SetStatus
ex_pop neuron epsc d Connect
in_pop neuron ipsc d Connect
neuron spikes Connect
/OutputRate
{
/guess Set % store the function parameter
M_INFO 1 add (blancedneuron) (--------------------------------------------------------------------------------------) message
M_INFO 1 add (blancedneuron) (Setting new rate for the inhibitory background population: ) guess cvs join (Hz/neuron) join message
in_pop
<<
/rate guess n_in mul % set a new rate for the inhibitory population.
>>
SetStatus
M_INFO 1 add (blancedneuron) (Allowing the new state to relax for ) t_relax cvs join (ms...) join message
t_relax Simulate % let the neuron relax to the new balanced state
spikes
<<
/n_events 0 % reset the event counter of the spike detector
>> SetStatus
M_INFO 1 add (blancedneuron) (Counting spikes for ) t_sim cvs join (ms...) join message
t_sim Simulate % simulate and count the spikes
spikes [ /n_events ] get /e Set % read out the event counter
e t_sim 1000.0 div div /rate Set % and divide by t_sim
M_INFO 1 add (blancedneuron) (Counted ) e cvs join ( spikes.) join message
M_INFO 1 add (blancedneuron) (==> Rate of the test neuron is ) rate cvs join (Hz.) join message
rate % leave the result as return value
} def
{OutputRate r_ex sub} lower upper prec FindRoot