Brian2 demo

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值