Skip to content

Commit de07ea1

Browse files
committed
Fix use of Heaviside in lambdify
1 parent 1079356 commit de07ea1

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

doc/users/plots/neuronal_event.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,29 @@
1111

1212
from sympy import Symbol, Heaviside, lambdify
1313

14-
ta = [0,4,8,12,16]; tb = [2,6,10,14,18]
15-
ba = Symbol('ba'); bb = Symbol('bb'); t = Symbol('t')
16-
fa = sum([Heaviside(t-_t) for _t in ta]) * ba
17-
fb = sum([Heaviside(t-_t) for _t in tb]) * bb
18-
N = fa+fb
14+
ta = [0, 4, 8, 12, 16]
15+
tb = [2, 6, 10, 14, 18]
16+
ba = Symbol('ba')
17+
bb = Symbol('bb')
18+
t = Symbol('t')
19+
fa = sum([Heaviside(t - _t) for _t in ta]) * ba
20+
fb = sum([Heaviside(t - _t) for _t in tb]) * bb
21+
N = fa + fb
1922

20-
Nn = N.subs(ba,1)
21-
Nn = Nn.subs(bb,-2)
23+
Nn = N.subs(ba, 1)
24+
Nn = Nn.subs(bb, -2)
2225

23-
Nn = lambdify(t, Nn)
26+
# Use Numpy heaviside for lambdify, with y=1 for x=0.
27+
modules = [{'Heaviside': lambda x: np.heaviside(x, 1)}, 'numpy']
28+
neuronal_func = lambdify(t, Nn, modules=modules)
2429

25-
tt = np.linspace(-1,21,1201)
26-
neuronal = [Nn(_t) for _t in tt]
27-
# Deal with undefined Heaviside at 0
28-
neuronal = [n.subs(Heaviside(0.0), 1) for n in neuronal]
30+
tt = np.linspace(-1, 21, 1201)
31+
neuronal = neuronal_func(tt)
2932

3033
plt.step(tt, neuronal)
3134

3235
a = plt.gca()
33-
a.set_ylim([-5.5,1.5])
36+
a.set_ylim([-5.5, 1.5])
3437
a.set_ylabel('Neuronal (cumulative)')
3538
a.set_xlabel('Time')
3639

0 commit comments

Comments
 (0)