Skip to content

Commit 12615a3

Browse files
authored
Add the parameter R to the LIF model (#224)
Add the parameter R to the LIF model
2 parents 2ee7c57 + aed84bc commit 12615a3

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

brainpy/dyn/neurons/reduced_models.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)