I am very much a beginner to NEURON with a biology background and little programming experience. I am trying to modify (but firstly run!) the following CA1 models from https://senselab.med.yale.edu/ModelDB/s ... 610#tabs-2 and https://senselab.med.yale.edu/ModelDB/s ... 728#tabs-1.
When I check the files in modlunit, I find several syntax and unit errors. I fixed some of these successfully via previous useful posts but keep hitting errors I don't understand and cannot fix. For example, if i run the start.hoc file (as specified by the creators) from Bloss et al 2016 the following train of errors appear:
Code: Select all
One point section Import3d_Section[2] ending at line 156 has been removed
and child Import3d_Section[3] reattached
and child Import3d_Section[4] reattached
/Applications/NEURON-7.8//bin/nrniv: id is not a MECHANISM
in idMorph.hoc near line 5
insert id
^
xopen("idMorph.hoc")
execute1("{xopen("id...")
load_file("idMorph.hoc")
/Applications/NEURON-7.8//bin/nrniv: syntax error
in processMorph.hoc near line 34
soma.sec { orgSecList.subtree() }
^
xopen("processMor...")
execute1("{xopen("pr...")
load_file("processMor...")
/Applications/NEURON-7.8//bin/nrniv: id is not a MECHANISM
in addChannels.hoc near line 15
insert id
^
xopen("addChannels.hoc")
execute1("{xopen("ad...")
load_file("addChannels.hoc")
1
0
/Applications/NEURON-7.8//bin/nrniv: inhSyn is not a template
in addVgatInhibition.hoc near line 48
synVgatAt[synCur-1] = new inhSyn(x)
^
xopen("addVgatInh...")
execute1("{xopen("ad...")
load_file("addVgatInh...")
/Applications/NEURON-7.8//bin/nrniv: syntax error
in flagVgatInhibition.hoc near line 127
forsec tuftList {
^
xopen("flagVgatIn...")
execute1("{xopen("fl...")
load_file("flagVgatIn...")
/Applications/NEURON-7.8//bin/nrniv: syntax error
in inhibitionBiophysics.hoc near line 11
sstAt_syns(theX) = sstAt_syns(theX) + 1
^
xopen("inhibition...")
execute1("{xopen("in...")
load_file("inhibition...")
/Applications/NEURON-7.8//bin/nrniv: excSyn is not a template
in addExcitation.hoc near line 50
synAmpa[synCur-1] = new excSyn(x)
^
xopen("addExcitat...")
execute1("{xopen("ad...")
load_file("addExcitat...")
oc>
The morphology loads, but nothing else happens. I am guessing it is due to the fact that the model is not running properly, but the model displays no normal biophysical properties e.g. current injection at the soma makes the neuron model depolarise linearly up to +>100mV!
Then, let's say I take a look at the na3.mod file I tried to modify - I then get this and I have clearly done something very very wrong:
Code: Select all
syntax error:
Illegal expression:
Illegal statement:
Illegal block at line 106 in file /Users/flavia/Desktop/stuff/modeldb/arrayTomography/na3.mod
a = trap0(vm,tha,Ra,qa)
^
Press 'return' key to close
This is the actual code from the na3.mod file:
Code: Select all
NEURON {
SUFFIX nax
USEION na READ ena WRITE ina
RANGE gbar, ar2
GLOBAL minf, hinf, mtau, htau, sinf, taus, qinf, thinf
}
PARAMETER {
gbar = 0.010 (mho/cm2)
tha = -30 (mV) : v 1/2 for act
qa = 7.2 (mV) : act slope (4.5)
Ra = 0.4 (/ms) : open (v)
Rb = 0.124 (/ms) : close (v)
thi1 = -45 (mV) : v 1/2 for inact
thi2 = -45 (mV) : v 1/2 for inact
qd = 1.5 (mV) : inact tau slope
qg = 1.5 (mV)
mmin=0.02
hmin=0.5
q10=2
Rg = 0.01 (/ms) : inact recov (v)
Rd = .03 (/ms) : inact (v)
qq = 10 (mV)
tq = -55 (mV)
thinf = -50 (mV) : inact inf slope
qinf = 4 (mV) : inact inf slope
vhalfs=-60 (mV) : slow inact.
a0s=0.0003 (ms) : a0s=b0s
zetas=12 (1)
gms=0.2 (1)
smax=10 (ms)
vvh=-58 (mV)
vvs=2 (mV)
celsius (degC)
ar2=1 (1) : 1=no inact., 0=max inact.
ena (mV) : must be explicitly def. in hoc
v (mV)
}
UNITS {
(mA) = (milliamp)
(mV) = (millivolt)
(pS) = (picosiemens)
(um) = (micron)
}
ASSIGNED {
ina (mA/cm2)
thegna (mho/cm2)
minf hinf
mtau (ms) htau (ms)
sinf (ms) taus (ms)
}
STATE { m h s}
BREAKPOINT {
SOLVE states METHOD cnexp
thegna = gbar*m*m*m*h*s
ina = thegna * (v - ena)
}
INITIAL {
trates(v,ar2)
m=minf
h=hinf
s=sinf
}
FUNCTION alpv(v(mV)) {
alpv = 1/(1+exp((v-vvh)/vvs))
}
FUNCTION alps(v(mV)) {
alps = exp(1.e-3*zetas*(v-vhalfs)*9.648e4/(8.315*(273.16+celsius)))
}
FUNCTION bets(v(mV)) {
bets = exp(1.e-3*zetas*gms*(v-vhalfs)*9.648e4/(8.315*(273.16+celsius)))
}
LOCAL mexp, hexp, sexp
DERIVATIVE states {
trates(v,ar2)
m' = (minf-m)/mtau
h' = (hinf-h)/htau
s' = (sinf - s)/taus
}
PROCEDURE trates(vm,a2) {
LOCAL a, b, c, qt
qt=q10^((celsius-24(degC))/(10(degC))
a = trap0(vm,tha,Ra,qa)
b = trap0(-vm,-tha,Rb,qa)
mtau = 1/(a+b)/qt
if (mtau<mmin) {mtau=mmin}
minf = a/(a+b)
a = trap0(vm,thi1,Rd,qd)
b = trap0(-vm,-thi2,Rg,qg)
htau = 1/(a+b)/qt
if (htau<hmin) {htau=hmin}
hinf = 1/(1+exp((vm-thinf)/qinf))
c=alpv(vm)
sinf = c+a2*(1-c)
taus = bets(vm)/(a0s*(1+alps(vm)))
if (taus<smax) {taus=smax}
}
FUNCTION trap0(v,th,a,q) {
if (fabs(v-th) > 1e-6) {
trap0 = a * (v - th) / (1 - exp(-(v - th)/q))
} else {
trap0 = a * q
}
}
I am pretty clueless about some things and am trying to learn quickly on a need to know basis. I would really appreciate any help to guide my learning in the right direction. I apologise for the length of this.
Thank you!