load_file("nrngui.hoc")
create soma[1], apical[1], basal[1]
objectvar st
objectvar sh
strdef str1
tstop = 1500
steps_per_ms = 40
ra = 200
rm = 60000
c_m = 0.75
v_init = -65
celsius = 30
t = 0.025
proc setpassive() {
forall {
insert pas
cm = c_m
e_pas = v_init
Ra=ra
g_pas=1/rm
}
}
objref Trunk
proc load_3dcell() {
xopen("n123.hoc")
forall {
soma area(0.5)
nseg = int((L/(0.1*lambda_f(100))+.9)/2)*2 + 1
totcomp=totcomp+nseg
}
setpassive()
access soma[0]
Trunk = new SectionList()
soma[0] Trunk.append() // 13.40um from soma
apical[0] Trunk.append() // 13.40um from soma
apical[4] Trunk.append() // 46.03
apical[6] Trunk.append() // 45.75
apical[14] Trunk.append() // 52.53
apical[15] Trunk.append() // 58.97
apical[16] Trunk.append() // 70.89
apical[22] Trunk.append() // 72.93
apical[23] Trunk.append() // 74.48
apical[25] Trunk.append() // 93.56
apical[26] Trunk.append() // 98.55
apical[27] Trunk.append() // 121.89
apical[41] Trunk.append() // 144.46
apical[42] Trunk.append() // 142.81
apical[46] Trunk.append() // 156.96
apical[48] Trunk.append() // 162.99
apical[56] Trunk.append() // 179.58
apical[58] Trunk.append() // 180.11
apical[60] Trunk.append() // 210.33
apical[62] Trunk.append() // 222.80
apical[64] Trunk.append() // 233.67
apical[65] Trunk.append() // 252.71
apical[69] Trunk.append() // 292.06
apical[71] Trunk.append() // 324.53
apical[81] Trunk.append() // 346.84
apical[83] Trunk.append() // 387.00
apical[95] Trunk.append() // 413.05
apical[103] Trunk.append() // 417.73
apical[104] Trunk.append() // 423.75
}
/*****************************************************************/
objref netlist, s, ampasyn, f1, DEND, sapamp, sampvec, sampvec
strdef str2
somax=2.497
somay=-13.006
somaz=11.12
double distances[200]
proc compute_distances() {
wopen("n123_all.dis")
load_3dcell()
access soma[0]
distance()
DEND = new SectionList()
forsec "basal" {
DEND.append()
}
forsec "apical"{
DEND.append()
}
forsec Trunk {
for(x) {
if(x!=0){
//rdist=raddist(x)
rdist=distance(x)
fprint("%s\t%f\t%f\n", secname(),x,rdist)
print secname(), "\t\t", x,"\t\t", rdist, "\t\t", distance(x)
}
}
}
wopen()
}
/*****************************************************************/
func raddist() {
distn0=distance(0)
distances[0]=0
sum=0
for i=1,n3d()-1 {
xx=(x3d(i)-x3d(i-1))*(x3d(i)-x3d(i-1))
yy=(y3d(i)-y3d(i-1))*(y3d(i)-y3d(i-1))
zz=(z3d(i)-z3d(i-1))*(z3d(i)-z3d(i-1))
sum=sum+sqrt(xx+yy+zz)
distances[i]=sum
}
xval=$1
// Amoung the various pt3d's find which one matches the distance of
// current x closely
distn=distance(xval)
match=distn-distn0
matchptdist=100000
for i=0,n3d()-1 {
matptdist=(match-distances[i])*(match-distances[i])
if(matchptdist>matptdist){
matchptdist=matptdist
matchi=i
}
}
//print "Match for ", x, " is ", matchi, " XDIST ", match, " MATCH ", distances[matchi], " ERROR ", sqrt(matchptdist)
// Find the distance of the closely matched point to the somatic
// centroid and use that as the distance for this BPAP measurement
xx=(x3d(matchi)-somax)*(x3d(matchi)-somax)
yy=(y3d(matchi)-somay)*(y3d(matchi)-somay)
zz=(z3d(matchi)-somaz)*(z3d(matchi)-somaz)
return sqrt(xx+yy+zz)
}
/*****************************************************************/
proc update_init(){
finitialize(v_init)
fcurrent()
}
/*****************************************************************/
// CA3b4: Centroid of Soma is: -2.68892 13.0872 1.07191
/*
proc saveradialamps(){local count, distn, nlcount, distn0, sum, match,\
matchptdist, matchptdist, raddist
wopen($s1)
count=0
nlcount=0
forall {
distn0=distance(0)
distances[0]=0
sum=0
for i=1,n3d()-1 {
xx=(x3d(i)-x3d(i-1))*(x3d(i)-x3d(i-1))
yy=(y3d(i)-y3d(i-1))*(y3d(i)-y3d(i-1))
zz=(z3d(i)-z3d(i-1))*(z3d(i)-z3d(i-1))
sum=sum+sqrt(xx+yy+zz)
distances[i]=sum
}
for (x) {
// Amoung the various pt3d's find which one matches the distance of
// current x closely
distn=distance(x)
match=distn-distn0
matchptdist=100000
for i=0,n3d()-1 {
matptdist=(match-distances[i])*(match-distances[i])
if(matchptdist>matptdist){
matchptdist=matptdist
matchi=i
}
}
//print "Match for ", x, " is ", matchi, " XDIST ", match, " MATCH ", distances[matchi], " ERROR ", sqrt(matchptdist)
// Find the distance of the closely matched point to the somatic
// centroid and use that as the distance for this BPAP measurement
xx=(x3d(matchi)-somax)*(x3d(matchi)-somax)
yy=(y3d(matchi)-somay)*(y3d(matchi)-somay)
zz=(z3d(matchi)-somaz)*(z3d(matchi)-somaz)
raddist=sqrt(xx+yy+zz)
if (ampvec[count].size()>0){
fprint("%s\t%f\t%f\n", secname(), raddist, \
ampvec[count].x[0]-v_init)
} else {
nlcount=nlcount+1
fprint("%s\t%f\t0\n", secname(), raddist)
}
count=count+1
}
}
print "Nilcount = ", nlcount
wopen()
}
*/
compute_distances()