Here is the error information:
NEURON: NetCon pointer not associated with currently accessed section
Use section ... (&var(x)...) intead of ...(§ion.var(x)...)
near line 0
^
NetCon(..., ..., 0, 10, 0.5)
nc4 = h.NetCon(cell2(0.5)._ref_v,syn_5_2,0,10,0.5)
Any advice is appreciated.
Code: Select all
'''
Two layer hiddel neuron network
Thomas
2014-08-01
'''
import neuron
from neuron import h
import numpy as np
from pylab import *
h.load_file("stdrun.hoc")
# create cells
cell1 = h.Section(name="cell1")
cell1.insert('hh')
cell2 = h.Section(name="cell2")
cell2.insert('hh')
cell3 = h.Section(name="cell3")
cell3.insert('hh')
cell4 = h.Section(name="cell4")
cell4.insert('hh')
cell5 = h.Section(name="cell5")
cell5.insert('hh')
cell6 = h.Section(name="cell6")
cell6.insert('hh')
cell7 = h.Section(name="cell7")
cell7.insert('hh')
cell8 = h.Section(name="cell8")
cell8.insert('hh')
# recorder
trec = h.Vector()
trec.record(h._ref_t) # record time
vrec1 = h.Vector()
vrec1.record(cell1(0.5)._ref_v) # record input neuron voltage
vrec2 = h.Vector()
vrec2.record(cell2(0.5)._ref_v)
vrec3 = h.Vector()
vrec3.record(cell3(0.5)._ref_v)
vrec4 = h.Vector()
vrec4.record(cell4(0.5)._ref_v)
vrec5 = h.Vector()
vrec5.record(cell5(0.5)._ref_v)
vrec6 = h.Vector()
vrec6.record(cell6(0.5)._ref_v)
vrec7 = h.Vector()
vrec7.record(cell7(0.5)._ref_v)
vrec8 = h.Vector()
vrec8.record(cell8(0.5)._ref_v)
# drive cell1 with a current stim
ic = h.IClamp(cell1(0.5))
ic.delay = 5 #ms
ic.dur = 25 #ms
ic.amp = 5 #nA, 5 -> 1 spike, 10 -> regular firing
ic2 = h.IClamp(cell2(0.5))
ic2.delay = 5 #ms
ic2.dur = 25 #ms
ic2.amp = 5 #nA, 5 -> 1 spike, 10 -> regular firing
# set synapse
syn_2_1 = h.Exp2Syn( cell2(0.5) ) # set a synapse on perticular cell
syn_2_1.tau1=0.1 # rise
syn_2_1.tau2=1.0 # decay
syn_3_1 = h.Exp2Syn( cell3(0.5) )
syn_3_1.tau1=0.1 # rise
syn_3_1.tau2=1.0 # decay
syn_4_1 = h.Exp2Syn( cell4(0.5) )
syn_4_1.tau1=0.1 # rise
syn_4_1.tau2=1.0 # decay
syn_5_2 = h.Exp2Syn( cell5(0.5) )
syn_5_2.tau1=0.1 # rise
syn_5_2.tau2=1.0 # decay
syn_5_3 = h.Exp2Syn( cell5(0.5) )
syn_5_3.tau1=0.1 # rise
syn_5_3.tau2=1.0 # decay
syn_5_4 = h.Exp2Syn( cell5(0.5) )
syn_5_4.tau1=0.1 # rise
syn_5_4.tau2=1.0 # decay
syn_6_2 = h.Exp2Syn( cell6(0.5) )
syn_6_2.tau1=0.1 # rise
syn_6_2.tau2=1.0 # decay
syn_6_3 = h.Exp2Syn( cell6(0.5) )
syn_6_3.tau1=0.1 # rise
syn_6_3.tau2=1.0 # decay
syn_6_4 = h.Exp2Syn( cell6(0.5) )
syn_6_4.tau1=0.1 # rise
syn_6_4.tau2=1.0 # decay
syn_7_2 = h.Exp2Syn( cell7(0.5) )
syn_7_2.tau1=0.1 # rise
syn_7_2.tau2=1.0 # decay
syn_7_3 = h.Exp2Syn( cell7(0.5) )
syn_7_3.tau1=0.1 # rise
syn_7_3.tau2=1.0 # decay
syn_7_4 = h.Exp2Syn( cell7(0.5) )
syn_7_4.tau1=0.1 # rise
syn_7_4.tau2=1.0 # decay
syn_8_5 = h.Exp2Syn( cell8(0.5) )
syn_8_5.tau1=0.1 # rise
syn_8_5.tau2=1.0 # decay
syn_8_6 = h.Exp2Syn( cell8(0.5) )
syn_8_6.tau1=0.1 # rise
syn_8_6.tau2=1.0 # decay
syn_8_7 = h.Exp2Syn( cell8(0.5) )
syn_8_7.tau1=0.1 # rise
syn_8_7.tau2=1.0 # decay
# set connections
nc1 = h.NetCon(cell1(0.5)._ref_v,syn_2_1,0,10,0.5) # connect cell to target
nc2 = h.NetCon(cell1(0.5)._ref_v,syn_3_1,0,10,0.5) # 0 is voltage threshold for synaptic event generation, 10 is delay between threshold crossing
nc3 = h.NetCon(cell1(0.5)._ref_v,syn_4_1,0,10,0.5) # and event delivery, 0.5 is weight - can also change weight via nc.weight[0] = x
nc4 = h.NetCon(cell2(0.5)._ref_v,syn_5_2,0,10,0.5)
nc5 = h.NetCon(cell2(0.5)._ref_v,syn_6_2,0,10,0.5)
nc6 = h.NetCon(cell2(0.5)._ref_v,syn_7_2,0,10,0.5)
nc7 = h.NetCon(cell3(0.5)._ref_v,syn_5_3,0,10,0.5)
nc8 = h.NetCon(cell3(0.5)._ref_v,syn_6_3,0,10,0.5)
nc9 = h.NetCon(cell3(0.5)._ref_v,syn_7_3,0,10,0.5)
nc10 = h.NetCon(cell4(0.5)._ref_v,syn_5_4,0,10,0.5)
nc11 = h.NetCon(cell4(0.5)._ref_v,syn_6_4,0,10,0.5)
nc12 = h.NetCon(cell4(0.5)._ref_v,syn_7_4,0,10,0.5)
nc13 = h.NetCon(cell5(0.5)._ref_v,syn_8_5,0,10,0.5)
nc14 = h.NetCon(cell6(0.5)._ref_v,syn_8_6,0,10,0.5)
nc15 = h.NetCon(cell7(0.5)._ref_v,syn_8_7,0,10,0.5)
# set simulation variables
h.tstop = 100 # simulation duration (ms)
h.v_init = -60 # voltage initialization (mV)
h.dt = 0.025 # timestep (ms)
h.run() # run sim for h.tstop
# plot output
plot(trec.as_numpy(),vrec1.as_numpy(),'k',linewidth=2)
plot(trec.as_numpy(),vrec2.as_numpy(),'r',linewidth=2)
xlim((0,h.tstop))
xlabel('Time (ms)')
ylabel('Vm (mV)')
legend(['cell1 Vm','cell8 Vm'])
tight_layout()
show()