Dear Charl,

 

Thanks for the fast reply. If I understand correctly, the ODEs mentioned in the C++ Code only work for a fast rise time and a slow decay time, but not the other way round, right?

I actually only wanted to do a sanity check by swapping the two time constants and then was confused getting the same results. If I am not mistaken, this is due to the normalization factor making the equations invariant to a swap of the time constants.

Thanks for your explanations – very helpful :)

 

Best wishes,

Pira

 

 

Von: Charl Linssen <nest-users@turingbirds.com>
Datum: Mittwoch, 8. Juni 2022 um 18:57
An: users@nest-simulator.org <users@nest-simulator.org>
Betreff: [EXTERN] [NEST Users] Re: How to implement double-exponential functions for synapses in C++

[EXTERNE E-MAIL] Diese Nachricht kommt von einem EXTERNEN ABSENDER.
Bitte
NICHT AUF LINKS ODER ANHÄNGE KLICKEN, sofern Sie nicht überzeugt sind, dass diese aus einer sicheren Quelle stammen.

Dear Pira,

 

Thanks for writing in. With this simple two-dimensional linear system, a slow rise and fast decay is unfortunately not possible. This is a fundamental property of the system. I guess you probably need a nonlinear system to achieve that (please let me know if you find any cool ones, I do not currently know any that would exhibit that kind of behaviour).

 

Perhaps the use of the words "rise" and "decay" in the naming of the time constants is misleading and should be avoided. In the paper (Rotter & Diesmann 1999) the constants were just named "a" and "b". See for an instance of a file where both nomenclatures are used https://github.com/nest/nest-simulator/blob/master/libnestutil/beta_normalization_factor.h.  

 

Note that for the case that a = b, if you are not careful, you will divide by zero. NEST contains a mechanism to check for that condition, in the file linked above.

 

Hope this helps,

With kind regards,

Charl

 

 

On Wed, Jun 8, 2022, at 13:46, Ravichandran-Schmidt, Pirathitha (SRH Hochschule Heidelberg) wrote:

Dear NEST Community,

 

is there a good way to implement a double-exponential function for synapses in C++ within a nest module?

 

 

As I need to implement my own neuron model in C++, I adapted the code from extraction the information from other neuron models (for example: iaf _cond_beta.cpp) and used the following lines

 

f[S::DG_EXC] = -y[ S::DG_EXC ] / node.P_.tau_synAMPA_on;

f[S::G_EXC ] =  y[ S::DG_EXC ] - y[ S::G_EXC ] / node.P_.tau_synAMPA_off

 

At first, it seemed to work pretty good. But when I swap the values for rise und decay time, the evolution of g_ADP did not change at all (for example: rise_time = 1ms, decay_time = 100ms).

 

I would be happy to get any feedback on it.

 

Thanks,

Pira

 

_______________________________________________

NEST Users mailing list -- users@nest-simulator.org

To unsubscribe send an email to users-leave@nest-simulator.org