from brian2 import *
import matplotlib.pyplot as plt
import tools
start_scope()
n1=10
eqs='''
dv/dt=(I-v)/tau:1(unless refractory)
I:1
tau:second
'''
seqs='''
w:1'''
g=NeuronGroup(n1,eqs,threshold='v>0.7',reset='v=0.1',refractory=5*ms,method='linear')
m=StateMonitor(g,'v',record=True)
s=Synapses(g,g,seqs,on_pre='v_post+=w',delay=2*ms)
s.connect(condition='i!=j',p=1)
s.w='0.2'
g.v='rand()'
run(100*ms)
print(m.v[0])
tools.visualize_connection([s])
import matplotlib.pyplot as plt;
import numpy as np
def visualize_connection(synapses):
laynum=len(synapses)
i=0
for s in synapses:
ns=len(s.source)
nt=len(s.target)
plt.plot(np.ones(ns)*i,np.arange(ns),'ok')
plt.plot(np.ones(nt)*(i+1),np.arange(nt),'ok')
for x,y in zip(s.i,s.j):
plt.plot([i,i+1],[x,y],'-k')
i=i+1
plt.xlim(-0.1,laynum+0.1)
plt.ylim(-0.1,max(synapses)-0.9)
plt.show()
def max(s):
i=0;
for x in s:
if(len(x.source)>i):
i=len(x.source)
if(len(x.target)>i):
i=len(x.target)
return i
from brian2 import *
prefs.codegen.target = 'numpy'
import tools
import matplotlib.pyplot as plt
taupre = taupost = 20*ms
wmax = 0.01
Apre = 0.01
Apost = -Apre*taupre/taupost*1.05
G = NeuronGroup(2, 'v:1', threshold='t>(1+i)*10*ms', refractory=100*ms)
S = Synapses(G, G,
'''
w : 1
dapre/dt = -apre/taupre : 1 (clock-driven)
dapost/dt = -apost/taupost : 1 (clock-driven)
''',
on_pre='''
v_post += w
apre += Apre
w = clip(w+apost, 0, wmax)
''',
on_post='''
apost += Apost
w = clip(w+apre, 0, wmax)
''', method='linear')
S.connect(i=0, j=1)
M = StateMonitor(S, ['w', 'apre', 'apost'], record=True)
run(30*ms)
figure(figsize=(4, 8))
subplot(211)
plot(M.t/ms, M.apre[0], label='apre')
plot(M.t/ms, M.apost[0], label='apost')
legend()
subplot(212)
plot(M.t/ms, M.w[0], label='w')
legend(loc='best')
xlabel('Time (ms)');
show()