I am trying to develop a model of small cutaneous afferent nerves. These nerves are characterized by being myelinated inside the dermis but having an unmyelinated part inside the epidermis.
My present model consists of 6 sections, 1 unmyelinated part, 3 nodes and 2 axons with myelin. The unmyelinated and node part is modeled using HH dynamics and the rest as passive. I have tested my model using intracellular stim, and that seems to work. Now I am trying to apply an extracellular field which is the purpose of my model. However, I have got some problems understanding the extracellular mechanism. The external field is calculated using a finite element model. I have gone through the example and posts especially extracellular_stim_and_rec.zip, ic_stim.zip and relevant post like http://www.neuron.yale.edu/phpBB/viewto ... =15&t=1937
My code:
Code: Select all
load_file("nrngui.hoc")
v_init = -70 // mV
mycm = 0.1 // uF/cm2/lamella membrane//
mygm = 0.001 // S/cm2/lamella membrane
nl = 10 // myelin layers
create axon[3], node[2], unmyelinated[1]
forsec "axon" {
nseg = 3
L = 100 // um
diam = 2 // um
Ra = 70 // Ohm/cm
cm = 2 // membrane capacitance
insert pas
g_pas = 0.0303
e_pas = v_init
insert extracellular xraxial=277965 xg=mygm/(nl*2) xc=mycm/(nl*2) e_extracellular = 0
}
forsec "node"{
nseg = 3
L = 1
diam = 1
Ra = 70
cm=2
insert hh
insert extracellular xraxial=557823 xg=1e10 xc=1e9 e_extracellular = 0
}
forsec "unmyelinated"{
nseg = 3
L = 20 // um
diam = 1
Ra = 70
cm=2
insert hh
insert extracellular xraxial=557823 xg=1e10 xc=0 e_extracellular = 0
}
// Connect pieces
connect unmyelinated[0](1), axon[0](0)
for i = 0, 1 {
connect axon[i](1), node[i](0)
connect node[i](1), axon[i+1](0)
}
finitialize(v_init)
fcurrent()
load_file("ex_stim2.hoc")
PMAX = 0 // mV
dur = 0.5
del = 1
stim_vec(PMAX, dur, del)
load_file("RC_and_v_graph.ses")
load_file("space_plot.ses")
run()
Code: Select all
objref tvec, pvec, veclist
objref extern_field
extern_field = new Matrix(3,6) // values define by Finite element model
extern_field.x[0][0] = -91.7
extern_field.x[1][0] = -91.7
extern_field.x[2][0] = -91.7
extern_field.x[0][1] = -91.6
extern_field.x[1][1] = -91.6
extern_field.x[2][1] = -91.5
extern_field.x[0][2] = -91.5
extern_field.x[1][2] = -91.5
extern_field.x[2][2] = -91.5
extern_field.x[0][3] = -91.5
extern_field.x[1][3] = -91.5
extern_field.x[2][3] = -91.4
extern_field.x[0][4] = -91.4
extern_field.x[1][4] = -91.4
extern_field.x[2][4] = -91.4
extern_field.x[0][5] = -91.4
extern_field.x[1][5] = -91.3
extern_field.x[1][5] = -91.3
objref sl
sl = new SectionList()
proc setstim() { localobj tmpvec
for sec_i = 0, 5 {
veclist = new List()
forsec sl(sec_i){
i = 0
for (x, 0) { // iterate over internal nodes only, here 3
tmpvec = pvec.c
tmpvec.x[i] = extern_field.x[i][sec_i]
i = i+1
tmpvec.play(&e_extracellular(x), tvec)
veclist.append(tmpvec)
}
}
}
}
proc stim_vec() {
// tvec will hold the stimulus sample times
// pvec will be a 1 ms pulse of with amplitude PMAX
NUMPTS = 5
tvec = new Vector(NUMPTS)
pvec = new Vector(NUMPTS)
PMAX = $1
dur = $2
del = $3
{ tvec.x[0]=0 pvec.x[0]=0 } // field is 0 for 1 ms
{ tvec.x[1]=del pvec.x[1]=0 }
{ tvec.x[2]=del pvec.x[2]=1 } // jumps to some value
{ tvec.x[3]=del+dur pvec.x[3]=1 } // for 1 ms
{ tvec.x[4]=del+dur pvec.x[4]=0 } // falls back to 0 ever after
setstim()
}
Would there be any other approaches which could more elegant and simple than a vector for each section?
My plan is to use an approach similar to the MRG model (Modeling the Excitability of Mammalian Nerve Fibers: Influence of Afterpotentials on the Recovery Cycle, McIntyre et al., 2002) to model the myelinated part of the axon. This means I will have even more sections in my model and if I apply branching axon, the extracellular mechanism could be very hard to define.
Any help will be greatly appreciated!
Steffen