I have created the following subthalamic network consisting of 4 cells (Sthcells[0],SThcells[1],sThcells[2],SThcells[3]).
My problem is that only the voltage graph in the soma section of the first cell achieves the desired Rhythmic Firing behaviour (SThcells[0].soma.v(0.5)) and the rest of them remain in their resting state
(-65 mV).
Why this happens?I suspect that I have misled some statements in the rest (public,access...) but where?
I thought that as long as I have created 4 templates of the same neuron,I expect the added mechanisms to work for each one :
I made the 4 cells using an array of object variables and the new command in a for loop:
Code: Select all
//***CREATING THE NETWORK****
ndend = 2
nSThcells = 4
objectvar SThcells[nSThcells]
for i = 0, nSThcells-1 {
SThcells[i] = new SThcell()
}
Code: Select all
load_file("nrngui.hoc")
objref cvode
cvode = new CVode(0)
//cvode.active(1)
begintemplate SThcell
public soma, dend0, dend1,nclist
create soma,dend0[1],dend1[1]
objectvar f, nclist
proc init() {local i, me, child1, child2
create soma
nclist = new List()
soma {
nseg = 1
diam = 18.8
L = 18.8
Ra = 150.224
// channels
insert Na
insert NaL
insert KDR
insert STh
insert Kv31
insert Ih
insert Cacum
insert sKCa
insert CaT
insert HVA
}
//THE FIRST TREE OF THE CELL
f = new File()
f.ropen("treeA.dat")
ndendA = f.scanvar()
create dend0[ndendA]
for i = 0,ndendA-1 {
me = f.scanvar() - 1
child1 = f.scanvar() - 1
child2 = f.scanvar() - 1
dend0[me] {
nseg = 1
diam = f.scanvar()
L = f.scanvar()
Ra = 123
// initialise and clear the 3D information
pt3dclear()
pt3dadd(f.scanvar(),f.scanvar(),f.scanvar(),diam)
pt3dadd(f.scanvar(),f.scanvar(),f.scanvar(),diam)
// channels
insert Na
insert NaL
insert KDR
insert STh
insert Kv31
insert Ih
insert Cacum
insert sKCa
insert CaT
insert HVA
if (child1 >= 0) {
printf("connecting tree A dendrite %d (0 end) to parent %d (1 end)\n",child1,me)
connect dend0[child1](0), 1
}
if (child2 >= 0) {
printf("connecting tree A dendrite %d (0 end) to parent %d (1 end)\n",child2,me)
connect dend0[child2](0), 1
}
}
}
f.close()
//THE SECOND TREE OF THE CELL
f.ropen("treeB.dat")
ndendB = f.scanvar()
create dend1[ndendB]
for i = 0,ndendB-1 {
me = f.scanvar() - 1
child1 = f.scanvar() - 1
child2 = f.scanvar() - 1
dend1[me] {
nseg = 1
diam = f.scanvar()
L = f.scanvar()
Ra = 123
// initialise and clear the 3D information
pt3dclear()
pt3dadd(f.scanvar(),f.scanvar(),f.scanvar(),diam)
pt3dadd(f.scanvar(),f.scanvar(),f.scanvar(),diam)
// channels
insert Na
insert NaL
insert KDR
insert Kv31
insert Ih
insert Cacum
insert sKCa
insert CaT
insert HVA
insert STh
if (child1 >= 0) {
printf("connecting tree B dendrite %d (0 end) to parent %d (1 end)\n",child1,me)
connect dend1[child1](0), 1
}
if (child2 >= 0) {
printf("connecting tree B dendrite %d (0 end) to parent %d (1 end)\n",child2,me)
connect dend1[child2](0), 1
}
}
}
f.close()
// Connect trees to the soma
connect dend0[0](0), soma(1)
connect dend1[0](0), soma(0)
}
endtemplate SThcell
//***CREATING THE NETWORK****
ndend = 2
nSThcells = 4
objectvar SThcells[nSThcells]
for i = 0, nSThcells-1 {
SThcells[i] = new SThcell()
}
objectvar stim[nSThcells]
i=0
SThcells[i].soma {
stim[i] = new IClamp(0.5)
stim[i].del = 0
stim[i].dur = 0
stim[i].amp = 0
}
i=1
SThcells[i].soma {
stim[i] = new IClamp(0.5)
stim[i].del = 0
stim[i].dur = 0
stim[i].amp = 0
}
i=2
SThcells[i].soma {
stim[i] = new IClamp(0.5)
stim[i].del = 0
stim[i].dur = 0
stim[i].amp = 0
}
i=3
SThcells[i].soma {
stim[i] = new IClamp(0.5)
stim[i].del = 0
stim[i].dur = 0
stim[i].amp = 0
}
//***SYNAPSES***
//synapse1 attach source:SThcells[0] -> target: SThcells[1] at point treeA[1]
//maxsyn = 10
//objectvar syn[maxsyn]
//SThcells[1].dend0[1] syn[0] = new ExpSyn(0)
//SThcells[0].soma SThcells[1].nclist.append(new NetCon(&v(0), syn[0], -20, 1, 0.5))
//access SThcells[0].soma
//synapse2 attach source: SThcells[1] -> target:SThcells[2]
//SThcells[2].dend0[0] syn[1] = new ExpSyn(0)
//SThcells[1].dend0[2] SThcells[2].nclist.append(new NetCon(&v(0), syn[1], -18, 1, 0.5))
//access SThcells[1].soma
//synapse3 attach source: SThcells[0] -> target: SThcells[3] at soma
//SThcells[3].dend1[2] syn[2] = new ExpSyn(0)
//SThcells[0].soma SThcells[3].nclist.append(new NetCon(&v(0), syn[2], -18, 1, 0.5))
//access SThcells[2].soma
//***CHARACTERISTICS***
// *** Setup the maximum conductances over the morphology
// general support functions
hide = xopen("procedures.hoc")
// uniform conductances...
// extra var definitions (e.g. default_*) are used in the set/unset TTX functions.
// Na
default_gNa_soma = 1.483419823e-02
default_gNa_dend = 1.0e-7
SThcells[0].soma.gna_Na = default_gNa_soma
SThcells[1].soma.gna_Na = default_gNa_soma
SThcells[2].soma.gna_Na = default_gNa_soma
SThcells[3].soma.gna_Na = default_gNa_soma
// NaL (can interchange with the Do & Bean model)
default_gNaL_soma = 1.108670852e-05
default_gNaL_dend = 0.81e-5
SThcells[0].soma.gna_NaL = default_gNaL_soma
SThcells[1].soma.gna_NaL = default_gNaL_soma
SThcells[2].soma.gna_NaL = default_gNaL_soma
SThcells[3].soma.gna_NaL = default_gNaL_soma
// linear conductances (loaded from files)...
printf("loading linear+uniform conductances\n")
// KDR
cset(0,"gk_KDR","")
// Kv3.1
cset(0,"gk_Kv31","")
// Ih
cset(0,"gk_Ih","")
// sKCa
cset(0,"gk_sKCa","")
// CaT
cset(0,"gcaT_CaT","")
// CaN
cset(0,"gcaN_HVA","")
// CaL
cset(0,"gcaL_HVA","")
// set the ion styles
forall ion_style("na_ion",1,2,1,0,1)
forall ion_style("k_ion",1,2,1,0,1)
forall ion_style("ca_ion",3,2,1,1,1)
// *** Default section
access SThcells[0].soma
access SThcells[1].soma
access SThcells[2].soma
access SThcells[3].soma
xopen("RhythmicFiring.ses")
run()
And a second irrelevant query:
What are the NEURONS' default values for the concentrations inside and outside the cell :nai,nao,ki,ko,cli,clo.
Are these below ? Where can I find them?
nai0_na_ion = 10
nao0_na_ion = 140
ki0_k_ion = 54
ko0_k_ion = 2.5
cli0_cl_ion = 0
clo0_cl_ion = 0
}
Thank you in advance!