Skip to content

Commit 4703ddf

Browse files
authored
Merge pull request #425 from brainpy/doc
rewrite old synapses with decomposed components
2 parents 22c9fe7 + 2c75d8f commit 4703ddf

File tree

23 files changed

+192
-405
lines changed

23 files changed

+192
-405
lines changed

brainpy/_src/dyn/channels/calcium.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def current(self, V, C, E):
122122
def reset_state(self, V, C, E, batch_size=None):
123123
self.p.value = self.f_p_inf(V)
124124
self.q.value = self.f_q_inf(V)
125-
if batch_size is not None:
125+
if isinstance(batch_size, int):
126126
assert self.p.shape[0] == batch_size
127127
assert self.q.shape[0] == batch_size
128128

@@ -217,7 +217,7 @@ def reset_state(self, V, C, E, batch_size=None):
217217
self.p.value = alpha / (alpha + beta)
218218
alpha, beta = self.f_q_alpha(V), self.f_q_beta(V)
219219
self.q.value = alpha / (alpha + beta)
220-
if batch_size is not None:
220+
if isinstance(batch_size, int):
221221
assert self.p.shape[0] == batch_size
222222
assert self.q.shape[0] == batch_size
223223

@@ -316,7 +316,7 @@ def current(self, V, C, E):
316316

317317
def reset_state(self, V, C, E, batch_size=None):
318318
self.p.value = 1.0 / (1 + bm.exp(-(V + 43.) / 5.2))
319-
if batch_size is not None:
319+
if isinstance(batch_size, int):
320320
assert self.p.shape[0] == batch_size
321321

322322

brainpy/_src/dyn/channels/hyperpolarization_activated.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def derivative(self, p, t, V):
8989

9090
def reset_state(self, V, batch_size=None):
9191
self.p.value = self.f_p_inf(V)
92-
if batch_size is not None:
92+
if isinstance(batch_size, int):
9393
assert self.p.shape[0] == batch_size
9494

9595
def update(self, V):
@@ -237,7 +237,7 @@ def reset_state(self, V, C_Ca, E_Ca, batch_size=None):
237237
beta = (1 - inf) / tau
238238
self.O.value = alpha / (alpha + alpha * self.k3 * self.P1 / self.k4 + beta)
239239
self.OL.value = self.k3 * self.P1 * self.O / self.k4
240-
if batch_size is not None:
240+
if isinstance(batch_size, int):
241241
assert self.P1.shape[0] == batch_size
242242
assert self.O.shape[0] == batch_size
243243
assert self.OL.shape[0] == batch_size

brainpy/_src/dyn/channels/potassium.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ def reset_state(self, V, C, E, batch_size=None):
120120
alpha = self.f_p_alpha(V)
121121
beta = self.f_p_beta(V)
122122
self.p.value = alpha / (alpha + beta)
123-
if batch_size is not None:
123+
if isinstance(batch_size, int):
124124
assert self.p.shape[0] == batch_size
125125

126126
def f_p_alpha(self, V):
@@ -434,7 +434,7 @@ def current(self, V, C, E):
434434
def reset_state(self, V, C, E, batch_size=None):
435435
self.p.value = self.f_p_inf(V)
436436
self.q.value = self.f_q_inf(V)
437-
if batch_size is not None:
437+
if isinstance(batch_size, int):
438438
assert self.p.shape[0] == batch_size
439439
assert self.q.shape[0] == batch_size
440440

@@ -722,7 +722,7 @@ def current(self, V, C, E):
722722
def reset_state(self, V, C, E, batch_size=None):
723723
self.p.value = self.f_p_inf(V)
724724
self.q.value = self.f_q_inf(V)
725-
if batch_size is not None:
725+
if isinstance(batch_size, int):
726726
assert self.p.shape[0] == batch_size
727727
assert self.q.shape[0] == batch_size
728728

@@ -1001,7 +1001,7 @@ def current(self, V, C, E):
10011001

10021002
def reset_state(self, V, C, E, batch_size=None):
10031003
self.p.value = self.f_p_inf(V)
1004-
if batch_size is not None:
1004+
if isinstance(batch_size, int):
10051005
assert self.p.shape[0] == batch_size
10061006

10071007
def f_p_inf(self, V):
@@ -1087,7 +1087,7 @@ def reset_state(self, V, batch_size=None):
10871087
alpha = self.f_p_alpha(V)
10881088
beta = self.f_p_beta(V)
10891089
self.p.value = alpha / (alpha + beta)
1090-
if batch_size is not None:
1090+
if isinstance(batch_size, int):
10911091
assert self.p.shape[0] == batch_size
10921092

10931093
def f_p_alpha(self, V):
@@ -1410,7 +1410,7 @@ def current(self, V):
14101410
def reset_state(self, V, batch_size=None):
14111411
self.p.value = self.f_p_inf(V)
14121412
self.q.value = self.f_q_inf(V)
1413-
if batch_size is not None:
1413+
if isinstance(batch_size, int):
14141414
assert self.p.shape[0] == batch_size
14151415
assert self.q.shape[0] == batch_size
14161416

@@ -1705,7 +1705,7 @@ def current(self, V):
17051705
def reset_state(self, V, batch_size=None):
17061706
self.p.value = self.f_p_inf(V)
17071707
self.q.value = self.f_q_inf(V)
1708-
if batch_size is not None:
1708+
if isinstance(batch_size, int):
17091709
assert self.p.shape[0] == batch_size
17101710
assert self.q.shape[0] == batch_size
17111711

@@ -1991,7 +1991,7 @@ def current(self, V):
19911991

19921992
def reset_state(self, V, batch_size=None):
19931993
self.p.value = self.f_p_inf(V)
1994-
if batch_size is not None:
1994+
if isinstance(batch_size, int):
19951995
assert self.p.shape[0] == batch_size
19961996

19971997
def f_p_inf(self, V):

brainpy/_src/dyn/channels/potassium_calcium_compatible.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,17 @@ def current(self, V, C_Ca, E_Ca):
119119
def reset_state(self, V, C_Ca, E_Ca, batch_size=None):
120120
C2 = self.alpha * bm.power(C_Ca, self.n)
121121
C3 = C2 + self.beta
122-
if batch_size is None:
123-
self.p.value = bm.broadcast_to(C2 / C3, self.varshape)
122+
self.p[:] = C2 / C3
123+
if isinstance(batch_size, int):
124+
batch_size = batch_size
125+
size = (batch_size,) + self.varshape
126+
elif isinstance(batch_size, bm.Mode):
127+
if isinstance(batch_size, bm.BatchingMode):
128+
size = (batch_size.batch_size,) + self.varshape
129+
else:
130+
batch_size = None
131+
size = self.varshape
124132
else:
125-
self.p.value = bm.broadcast_to(C2 / C3, (batch_size,) + self.varshape)
126-
assert self.p.shape[0] == batch_size
133+
size = self.varshape
134+
self.p.value = bm.broadcast_to(C2 / C3, size)
127135

brainpy/_src/dyn/channels/potassium_compatible.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def reset_state(self, V, batch_size=None):
103103
alpha = self.f_p_alpha(V)
104104
beta = self.f_p_beta(V)
105105
self.p.value = alpha / (alpha + beta)
106-
if batch_size is not None:
106+
if isinstance(batch_size, int):
107107
assert self.p.shape[0] == batch_size
108108

109109
def f_p_alpha(self, V):
@@ -426,7 +426,7 @@ def current(self, V):
426426
def reset_state(self, V, batch_size=None):
427427
self.p.value = self.f_p_inf(V)
428428
self.q.value = self.f_q_inf(V)
429-
if batch_size is not None:
429+
if isinstance(batch_size, int):
430430
assert self.p.shape[0] == batch_size
431431
assert self.q.shape[0] == batch_size
432432

@@ -721,7 +721,7 @@ def current(self, V):
721721
def reset_state(self, V, batch_size=None):
722722
self.p.value = self.f_p_inf(V)
723723
self.q.value = self.f_q_inf(V)
724-
if batch_size is not None:
724+
if isinstance(batch_size, int):
725725
assert self.p.shape[0] == batch_size
726726
assert self.q.shape[0] == batch_size
727727

@@ -1007,7 +1007,7 @@ def current(self, V):
10071007

10081008
def reset_state(self, V, batch_size=None):
10091009
self.p.value = self.f_p_inf(V)
1010-
if batch_size is not None:
1010+
if isinstance(batch_size, int):
10111011
assert self.p.shape[0] == batch_size
10121012

10131013
def f_p_inf(self, V):

brainpy/_src/dyn/channels/sodium.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def reset_state(self, V, C, E, batch_size=None):
104104
alpha = self.f_q_alpha(V)
105105
beta = self.f_q_beta(V)
106106
self.q.value = alpha / (alpha + beta)
107-
if batch_size is not None:
107+
if isinstance(batch_size, int):
108108
assert self.p.shape[0] == batch_size
109109
assert self.q.shape[0] == batch_size
110110

brainpy/_src/dyn/channels/sodium_compatible.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def reset_state(self, V, batch_size=None):
8888
alpha = self.f_q_alpha(V)
8989
beta = self.f_q_beta(V)
9090
self.q.value = alpha / (alpha + beta)
91-
if batch_size is not None:
91+
if isinstance(batch_size, int):
9292
assert self.p.shape[0] == batch_size
9393
assert self.q.shape[0] == batch_size
9494

brainpy/_src/dyn/neurons/lif.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -365,12 +365,6 @@ def __init__(
365365
self.ref_var = ref_var
366366
self.tau_ref = self.init_param(tau_ref)
367367

368-
# initializers
369-
self._V_initializer = is_initializer(V_initializer)
370-
371-
# integral
372-
self.integral = odeint(method=method, f=self.derivative)
373-
374368
# variables
375369
if init_var:
376370
self.reset_state(self.mode)

brainpy/_src/dyn/others/input.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def __init__(
219219
self.reset_state(self.mode)
220220

221221
def update(self):
222-
spikes = bm.random.rand_like(self.spike) <= (self.freqs * share.dt / 1000.)
222+
spikes = bm.random.rand_like(self.spike) <= (self.freqs * share['dt'] / 1000.)
223223
spikes = bm.asarray(spikes, dtype=self.spk_type)
224224
# spikes = bm.sharding.partition(spikes, self.spike.sharding)
225225
self.spike.value = spikes

brainpy/_src/dyn/outs/base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99

1010

1111
class SynOut(DynamicalSystem, ParamDesc, BindCondData):
12-
"""Base class for synaptic outputs."""
12+
"""Base class for synaptic outputs.
13+
14+
:py:class:`~.SynOut` is also subclass of :py:class:`~.ParamDesc` and :pu:class:`~.BindCondData`.
15+
"""
1316
def __init__(self, name: Optional[str] = None):
1417
super().__init__(name=name)
1518

0 commit comments

Comments
 (0)