@@ -31,7 +31,7 @@ class LIF(NeuGroup):
3131
3232 .. math::
3333
34- \tau \frac{dV}{dt} = - (V(t) - V_{rest}) + I (t) \\
34+ \tau \frac{dV}{dt} = - (V(t) - V_{rest}) + RI (t) \\
3535 \text{after} \quad V(t) \gt V_{th}, V(t) = V_{reset} \quad
3636 \text{last} \quad \tau_{ref} \quad \text{ms}
3737
@@ -56,6 +56,8 @@ class LIF(NeuGroup):
5656 Reset potential after spike.
5757 V_th: float, JaxArray, ndarray, Initializer, callable
5858 Threshold potential of spike.
59+ R: float, JaxArray, ndarray, Initializer, callable
60+ Membrane resistance.
5961 tau: float, JaxArray, ndarray, Initializer, callable
6062 Membrane time constant.
6163 tau_ref: float, JaxArray, ndarray, Initializer, callable
@@ -84,6 +86,7 @@ def __init__(
8486 V_rest : Union [float , Tensor , Initializer , Callable ] = 0. ,
8587 V_reset : Union [float , Tensor , Initializer , Callable ] = - 5. ,
8688 V_th : Union [float , Tensor , Initializer , Callable ] = 20. ,
89+ R : Union [float , Tensor , Initializer , Callable ] = 1. ,
8790 tau : Union [float , Tensor , Initializer , Callable ] = 10. ,
8891 tau_ref : Union [float , Tensor , Initializer , Callable ] = 1. ,
8992 V_initializer : Union [Initializer , Callable , Tensor ] = ZeroInit (),
@@ -103,6 +106,7 @@ def __init__(
103106 self .V_rest = init_param (V_rest , size , allow_none = False )
104107 self .V_reset = init_param (V_reset , size , allow_none = False )
105108 self .V_th = init_param (V_th , size , allow_none = False )
109+ self .R = init_param (R , size , allow_none = False )
106110 self .tau = init_param (tau , size , allow_none = False )
107111 self .tau_ref = init_param (tau_ref , size , allow_none = False )
108112 if noise_type not in ['func' , 'value' ]:
@@ -121,7 +125,7 @@ def __init__(
121125 self .refractory = bm .Variable (bm .zeros (size , dtype = bool ))
122126
123127 # integral
124- f = lambda V , t , I_ext : (- V + self .V_rest + I_ext ) / self .tau
128+ f = lambda V , t , I_ext : (- V + self .V_rest + self . R * I_ext ) / self .tau
125129 if self .noise is not None :
126130 g = noise if (noise_type == 'func' ) else (lambda V , t , I_ext : self .noise / bm .sqrt (self .tau ))
127131 self .integral = sdeint (method = method , f = f , g = g )
0 commit comments