Brian2 demo

来源:互联网 发布:网络历史虚无主义 编辑:程序博客网 时间:2024/06/05 11:43
from brian2 import *import matplotlib.pyplot as pltimport toolsstart_scope()n1=10eqs='''dv/dt=(I-v)/tau:1(unless refractory)I:1tau: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 npdef  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 toolsimport matplotlib.pyplot as plttaupre = taupost = 20*mswmax = 0.01Apre = 0.01Apost = -Apre*taupre/taupost*1.05G = 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()

原创粉丝点击