// bAP_peak_vecs.hoc
// All that needs to be done to prepare the vecs for graphs
// of bAP peak vs distance is to store the x=0 to 1 vectors
// for each section
// The general strategy is to create as many vector pairs as
// are required to store the bAP peaks in the oblique subtrees
// For continuity these vectors contain as their first point the
// connecting point on previous dend.
num_obliques=128-53+1 // number of obliques in 91662
objref ob_dist_vec[num_obliques],ob_peak_vec[num_obliques]
objref ob_peak_ca_vec[num_obliques], ob_peak_optical_vec[num_obliques]
// the above two vec arrays store the peak calcium and the peak
// optical which is defined as the peak (F(t)-F_rest)/F_rest which in the linear
// aproximation of the flourescent molecule Ca binding is proportional to [Ca2+]i
// so peak optical= ([Ca2+]i,peak - [Ca2+]i,resting)/[Ca2+]i,resting
/*for i=0, num_obliques-1 {
ob_dist_vec[i] = new Vector()
ob_peak_vec[i] = new Vector()
}
*/
objref sect_list_2getparent
proc assign_dist_peak_vecs() {
for i=0, num_obliques-1 {
ob_dist_vec[i] = new Vector()
ob_peak_vec[i] = new Vector()
ob_peak_ca_vec[i] = new Vector()
ob_peak_optical_vec[i] = new Vector()
// the following adds the distance and peak bAP from
// the last point of the parent
apic[i+53] sect_list_2getparent = new SectionRef()
sect_list_2getparent.parent {
x=0.5*((nseg-1)/nseg+1) // finds last relative (0-1) point on parent
xdist=distance(x)
ob_dist_vec[i].append(xdist)
ob_peak_vec[i].append(vmax_ds(x)-Vrest)
ob_peak_ca_vec[i].append(cmax_cacum(x))
ob_peak_optical_vec[i].append((cmax_cacum(x)-cai0_cacum(x))/cai0_cacum(x))
}
// now add all the distance and bAP peaks from the oblique section
apic[i+53] for (x,0) {
xdist = distance(x)
ob_dist_vec[i].append(xdist)
ob_peak_vec[i].append(vmax_ds(x)-Vrest)
ob_peak_ca_vec[i].append(cmax_cacum(x))
ob_peak_optical_vec[i].append((cmax_cacum(x)-cai0_cacum(x))/cai0_cacum(x))
}
}
}
proc graph_dist_peak_vecs() {
if (marker_graph) {
for i=0, num_obliques-1 {
ob_peak_vec[i].mark(d,ob_dist_vec[i],current_marker_style,current_marker_size+1,current_marker_color-alzheimers_flag,2)
ob_peak_ca_vec[i].mark(peak_ca_graph,ob_dist_vec[i],current_marker_style,current_marker_size+1,current_marker_color-alzheimers_flag,2)
ob_peak_optical_vec[i].mark(peak_optical_graph,ob_dist_vec[i],current_marker_style,current_marker_size+1,current_marker_color-alzheimers_flag,2)
}
primaryy.mark(d,primaryx,"s",current_marker_size+1,7+alzheimers_flag,2)
primaryca.mark(peak_ca_graph,primaryx,"s",current_marker_size+1,7+alzheimers_flag,2)
primaryoptical.mark(peak_optical_graph,primaryx,"s",current_marker_size+1,7+alzheimers_flag,2)
tufty.mark(d,tuftx,"t",current_marker_size+1,4+alzheimers_flag,2)
tuftca.mark(peak_ca_graph,tuftx,"t",current_marker_size+1,4+alzheimers_flag,2)
tuftoptical.mark(peak_optical_graph,tuftx,"t",current_marker_size+1,4+alzheimers_flag,2)
}
if (line_graph) {
// if line graph then make line graphs for bAPs if abeta (alzheimers_flag) shift color
for i=0, num_obliques-1 {
color_choice=1+alzheimers_flag // black or red if abeta present
ob_peak_vec[i].line(d,ob_dist_vec[i], color_choice,1)
ob_peak_ca_vec[i].line(peak_ca_graph,ob_dist_vec[i], color_choice,1)
ob_peak_optical_vec[i].line(peak_optical_graph,ob_dist_vec[i], color_choice,1)
}
// the primary is a special case where there are no branches and
// only apic[25] has nseg different than 1
tmp_vecx=new Vector()
tmp_vecy=new Vector()
forsec primary {
color_choice=7+alzheimers_flag // purple or yellow if abeta present
for (x) if (x>0 && x<1) {
if (diam>=0.) {
tmp_vecx.append(distance(x))
tmp_vecy.append(vmax_ds(x)-Vrest)
}
}
}
tmp_vecy.line(d,tmp_vecx, color_choice,4)
forsec tuft {
color_choice=4+alzheimers_flag // if abeta present
tmp_vecx=new Vector()
tmp_vecy=new Vector()
for (x) if (x>0 && x<1) {
if (diam>=0.) {
tmp_vecx.append(distance(x))
tmp_vecy.append(vmax_ds(x)-Vrest)
}
}
tmp_vecy.line(d,tmp_vecx, color_choice,1)
}
}
// for model to Chen statistics comparison:
chen_c_bpAP_peaks=new Vector() // apic[15] through 19 have middles
// within Chen C 2005 range of 240-300 ums. It was found by hand that these
// compartments apic[15 through 19] correspond to the primary dendrite, the likely
// source of Chen C's electrical recordings.
/* oc>for i=14,19 {apic[i] print secname(),.5,distance(.5),v }
apic[14]0.5 233.72056 -46.048939
apic[15]0.5 253.83815 -41.003093
apic[16]0.5 264.45777 -38.230327
apic[17]0.5 276.62687 -34.690309
apic[18]0.5 284.63212 -32.181721
apic[19]0.5 295.92992 -28.539688
oc>
*/
for i=15,19 {
apic[i] chen_c_bpAP_peaks.append(vmax_ds(0.5)-Vrest)
}
soma chen_c_bpAP_soma_peak=vmax_ds(0.5)-Vrest
// c.flush()
doNotify()
}