Code: Select all
from neuron import *
from nrn import *
from pylab import *; ion();
tstop = 100 # ms
soma = Section()
soma.diam, soma.L, soma.Ra, soma.cm, soma.nseg = 10, 10, 100, 1, 1
soma.insert('pas')
soma.g_pas, soma.e_pas = 0.000222, -70
dend = [Section() for i in range(2)]
for i in range(2):
dend[i].diam, dend[i].L, dend[i].Ra, dend[i].cm, dend[i].nseg = 1, 100, 100, 1, 10
dend[i].insert('pas')
dend[i].g_pas, dend[i].e_pas = 0.000222, -70
if not(i):
dend[i].connect(soma)
else:
dend[i].connect(dend[i-1])
eop = dend[0] # excitatory post-synaptic target
eip = Section(); eip.insert('hh') # excitatory input with a spike evoked in i.c.
eipic0 = h.IClamp(0.5, sec = eip); eipic0.amp, eipic0.delay, eipic0.dur = -5, 0, 0.5*tstop
eipic1 = h.IClamp(0.5, sec = eip); eipic1.amp, eipic1.delay, eipic1.dur = 5, 0.5*tstop, 3.
edc = h.Exp2Syn(0.5, sec = eop) # dynamic clamp of g_syn
eip.push()
enc = h.NetCon(eip(0.5)._ref_v, edc)
h.pop_section()
enc.weight[0] = 0.001 # g_max = 0.001 us
edc.tau1, edc.tau2, edc.e = 0.2, 1., 0
imp = h.Impedance()
imp.loc(0.5, sec = dend[0])
imp.transfer(0.5, sec = dend[1])
vec = {} # initialise dictionary
for var in 't', 'v_soma', 'i_vc', 'g_edc', 'i_edc', 'v_edc', 'z':
vec[var] = h.Vector()
vec['t'].record(h._ref_t)
vec['v_soma'].record(soma(0.5)._ref_v)
vec['g_edc'].record(edc._ref_g)
vec['i_edc'].record(edc._ref_i)
vec['v_edc'].record(eop(0.5)._ref_v)
#vec['z'].record(imp.transfer)
h.load_file("stdrun.hoc")
h.tstop = tstop; h.v_init = -70
h.init(); h.run()
t = array(vec['t'])
v = array(vec['v_soma'])
gedc = array(vec['g_edc'])
iedc = array(vec['i_edc'])
vedc = array(vec['v_edc'])
eedc = vedc - edc.e
figure()
subplot(2, 2, 1)
plot(t, v)
xlabel(r'$t$ / ms'); ylabel(r'$V$ / mV')
title('Voltage at soma')
subplot(2, 2, 2)
plot(t, gedc)
xlabel(r'$t$ / ms'); ylabel(r'$g$ / $\mu$S')
title('Conductance at dend[0]')
subplot(2, 2, 3)
plot(t, iedc)
xlabel(r'$t$ / ms'); ylabel(r'$I$ / nA')
title('Current passage at dend[0]')
subplot(2, 2, 4)
plot(t, eedc)
xlabel(r'$t$ / ms'); ylabel(r'$\Delta V$ / mV')
title('E.M.F. at dend[0]')
#waitforbuttonpress()