Hi Maxime,

 

I don’t quite understand what you mean by “the computation of the inihibition occurs before the inhibition”.

 

A typical update loop for a NEST model (here simplified from iaf_psc_alpha) looks like this, where y3_ is the membrane potential:

 

    S_.y3_ = V_.P30_ * ( S_.y0_ + P_.I_e_ ) + V_.P31_ex_ * S_.dI_ex_ + V_.P32_ex_ * S_.I_ex_ + V_.P31_in_ * S_.dI_in_

                + V_.P32_in_ * S_.I_in_ + V_.expm1_tau_m_ * S_.y3_ + S_.y3_;

 

    S_.I_ex_ = V_.P21_ex_ * S_.dI_ex_ + V_.P22_ex_ * S_.I_ex_;

    S_.dI_ex_ *= V_.P11_ex_;

    S_.dI_ex_ += V_.EPSCInitialValue_ * input[ Buffers_::SYN_EX ];

 

    S_.I_in_ = V_.P21_in_ * S_.dI_in_ + V_.P22_in_ * S_.I_in_;

    S_.dI_in_ *= V_.P11_in_;

    S_.dI_in_ += V_.IPSCInitialValue_ * input[ Buffers_::SYN_IN ];

 

    if ( S_.y3_ >= P_.Theta_ )

    {

      S_.y3_ = P_.V_reset_;

      kernel().event_delivery_manager.send( *this, SpikeEvent(), lag );

    }

 

    // set new input current

    S_.y0_ = input[ Buffers_::I0 ];

 

The first line updates the membrane potential based on the differential equation for the membrane potential, using the values of the membrane potential and the state variables for the excitatory and inhibitory synapses from the previous time step.

 

The second block then updates the state variables for the excitatory synapses according to the ODEs and then adds the new input arriving during the time step. This input by definition always arrives at the end of the time step, since spikes are emitted at the end of time steps. The thirds block does the same for inhibitory synapses.

 

The fourth block checks for threshold crossings, resetting and emitting a spike if necessary.

 

The final block updates current input for the next time step. This could also have been placed before the threshold check.

 

For mathematical details on the update and the order of update lines, see

 

Rotter, S., & Diesmann, M. (1999). Exact digital simulation of time-invariant linear systems with applications to neuronal modeling. Biol Cybern, 81, 381–402.

 

Best,

Hans Ekkehard

 

-- 

 

Prof. Dr. Hans Ekkehard Plesser

Departmend Head

 

Department of Data Science

Faculty of Science and Technology

Norwegian University of Life Sciences

PO Box 5003, 1432 Aas, Norway

 

Phone +47 6723 1560

Email hans.ekkehard.plesser@nmbu.no

Home http://arken.nmbu.no/~plesser

 

 

 

From: carriere.maxime93@gmail.com <carriere.maxime93@gmail.com>
Date: Tuesday, 9 July 2024 at 15:04
To: users@nest-simulator.org <users@nest-simulator.org>
Subject: [NEST Users] Order or Computation

[Some people who received this message don't often get email from carriere.maxime93@gmail.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]

Hello everyone,


I am trying to replicate our brain-constrained model to NEST.
In our model the computation of the inhibition occurs before the inhibition.
I believe it's the other way round in NEST.
I was wondering, where the order of computation was implemented in NEST and if that was possible to change it.

Best,

Maxime
_______________________________________________
NEST Users mailing list -- users@nest-simulator.org
To unsubscribe send an email to users-leave@nest-simulator.org