// Make a set of lists, each containing the oblique sections // that form a continuous path: starting from the section attached // to the trunk and ending at the apical tip section. // OLD CODE: ADJUSTED BY MARTINE ROSA GROEN (martine.groen@gmail.com) TO IMPLEMENT MULTIPLE MORPHOLOGIES, // this code refinement makes that the oblique path are traced automatically from an // ending to the trunk (Defined in apical-trunk-list), preventing the author to // manually type these paths with new morphologies (with the possible type errors) // It is checked with the origin code. The only differences found in the original // code are (between brackets the new version) // 26-109-111 (should be 25-109-111) // 26-109-110 (should be 26-109-110) // 104-105 (should be 103-105) // 62-63 (double in the opl list in the Poirazi original) // All these changes are due to typing errors in the original code. However in cell-setup // the first segment in the list (the trunk segment) is disregarded in the setting up of // ion channels, because the trunk is setup before. In this trunk setup, the ion channels // are distributed acording to distance or constants across the tree, making this // type errors without any effect. /* objref pl[150],opl[150] plcount=0 pl[plcount]=new SectionList() apical_dendrite[0] pl[plcount].append() apical_dendrite[1] pl[plcount].append() apical_dendrite[2] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[0] pl[plcount].append() apical_dendrite[1] pl[plcount].append() apical_dendrite[3] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[4] pl[plcount].append() apical_dendrite[5] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[6] pl[plcount].append() apical_dendrite[7] pl[plcount].append() apical_dendrite[8] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[6] pl[plcount].append() apical_dendrite[7] pl[plcount].append() apical_dendrite[9] pl[plcount].append() apical_dendrite[10] pl[plcount].append() apical_dendrite[11] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[6] pl[plcount].append() apical_dendrite[7] pl[plcount].append() apical_dendrite[9] pl[plcount].append() apical_dendrite[10] pl[plcount].append() apical_dendrite[12] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[6] pl[plcount].append() apical_dendrite[7] pl[plcount].append() apical_dendrite[9] pl[plcount].append() apical_dendrite[13] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[14] pl[plcount].append() apical_dendrite[116] pl[plcount].append() apical_dendrite[117] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[14] pl[plcount].append() apical_dendrite[116] pl[plcount].append() apical_dendrite[118] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[16] pl[plcount].append() apical_dendrite[17] pl[plcount].append() apical_dendrite[18] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[16] pl[plcount].append() apical_dendrite[17] pl[plcount].append() apical_dendrite[19] pl[plcount].append() apical_dendrite[20] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[16] pl[plcount].append() apical_dendrite[17] pl[plcount].append() apical_dendrite[19] pl[plcount].append() apical_dendrite[21] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[23] pl[plcount].append() apical_dendrite[24] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[29] pl[plcount].append() apical_dendrite[30] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[29] pl[plcount].append() apical_dendrite[31] pl[plcount].append() apical_dendrite[32] pl[plcount].append() apical_dendrite[33] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[29] pl[plcount].append() apical_dendrite[31] pl[plcount].append() apical_dendrite[32] pl[plcount].append() apical_dendrite[34] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[29] pl[plcount].append() apical_dendrite[31] pl[plcount].append() apical_dendrite[35] pl[plcount].append() apical_dendrite[36] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[29] pl[plcount].append() apical_dendrite[31] pl[plcount].append() apical_dendrite[35] pl[plcount].append() apical_dendrite[37] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[38] pl[plcount].append() apical_dendrite[39] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[27] pl[plcount].append() apical_dendrite[28] pl[plcount].append() apical_dendrite[38] pl[plcount].append() apical_dendrite[40] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[42] pl[plcount].append() apical_dendrite[43] pl[plcount].append() apical_dendrite[44] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[42] pl[plcount].append() apical_dendrite[43] pl[plcount].append() apical_dendrite[45] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[46] pl[plcount].append() apical_dendrite[47] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[48] pl[plcount].append() apical_dendrite[49] pl[plcount].append() apical_dendrite[50] pl[plcount].append() apical_dendrite[51] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[48] pl[plcount].append() apical_dendrite[49] pl[plcount].append() apical_dendrite[50] pl[plcount].append() apical_dendrite[52] pl[plcount].append() apical_dendrite[53] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[48] pl[plcount].append() apical_dendrite[49] pl[plcount].append() apical_dendrite[50] pl[plcount].append() apical_dendrite[52] pl[plcount].append() apical_dendrite[54] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[48] pl[plcount].append() apical_dendrite[49] pl[plcount].append() apical_dendrite[55] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[56] pl[plcount].append() apical_dendrite[57] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[58] pl[plcount].append() apical_dendrite[59] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[60] pl[plcount].append() apical_dendrite[61] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[62] pl[plcount].append() apical_dendrite[63] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[62] pl[plcount].append() apical_dendrite[63] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[65] pl[plcount].append() apical_dendrite[66] pl[plcount].append() apical_dendrite[67] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[65] pl[plcount].append() apical_dendrite[66] pl[plcount].append() apical_dendrite[68] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[69] pl[plcount].append() apical_dendrite[70] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[71] pl[plcount].append() apical_dendrite[72] pl[plcount].append() apical_dendrite[73] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[71] pl[plcount].append() apical_dendrite[72] pl[plcount].append() apical_dendrite[74] pl[plcount].append() apical_dendrite[75] pl[plcount].append() apical_dendrite[76] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[71] pl[plcount].append() apical_dendrite[72] pl[plcount].append() apical_dendrite[74] pl[plcount].append() apical_dendrite[75] pl[plcount].append() apical_dendrite[77] pl[plcount].append() apical_dendrite[78] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[71] pl[plcount].append() apical_dendrite[72] pl[plcount].append() apical_dendrite[74] pl[plcount].append() apical_dendrite[75] pl[plcount].append() apical_dendrite[77] pl[plcount].append() apical_dendrite[79] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[71] pl[plcount].append() apical_dendrite[72] pl[plcount].append() apical_dendrite[74] pl[plcount].append() apical_dendrite[80] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[81] pl[plcount].append() apical_dendrite[82] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[85] pl[plcount].append() apical_dendrite[86] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[85] pl[plcount].append() apical_dendrite[87] pl[plcount].append() apical_dendrite[88] pl[plcount].append() apical_dendrite[89] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[85] pl[plcount].append() apical_dendrite[87] pl[plcount].append() apical_dendrite[88] pl[plcount].append() apical_dendrite[90] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[85] pl[plcount].append() apical_dendrite[87] pl[plcount].append() apical_dendrite[91] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[92] pl[plcount].append() apical_dendrite[93] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[83] pl[plcount].append() apical_dendrite[84] pl[plcount].append() apical_dendrite[92] pl[plcount].append() apical_dendrite[94] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[95] pl[plcount].append() apical_dendrite[96] pl[plcount].append() apical_dendrite[97] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[95] pl[plcount].append() apical_dendrite[96] pl[plcount].append() apical_dendrite[98] pl[plcount].append() apical_dendrite[99] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[95] pl[plcount].append() apical_dendrite[96] pl[plcount].append() apical_dendrite[98] pl[plcount].append() apical_dendrite[100] pl[plcount].append() apical_dendrite[101] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[95] pl[plcount].append() apical_dendrite[96] pl[plcount].append() apical_dendrite[98] pl[plcount].append() apical_dendrite[100] pl[plcount].append() apical_dendrite[102] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[104] pl[plcount].append() apical_dendrite[105] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[41] pl[plcount].append() apical_dendrite[107] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[26] pl[plcount].append() apical_dendrite[108] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[26] pl[plcount].append() apical_dendrite[109] pl[plcount].append() apical_dendrite[110] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[26] pl[plcount].append() apical_dendrite[109] pl[plcount].append() apical_dendrite[111] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[22] pl[plcount].append() apical_dendrite[112] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[15] pl[plcount].append() apical_dendrite[113] pl[plcount].append() apical_dendrite[114] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[15] pl[plcount].append() apical_dendrite[113] pl[plcount].append() apical_dendrite[115] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) plcount=plcount+1 pl[plcount]=new SectionList() apical_dendrite[64] pl[plcount].append() apical_dendrite[106] pl[plcount].append() opl[plcount]=new ObliquePath(pl[plcount]) forsec pl[plcount] print secname() print plcount */ // START NEW CODE!! ///////////////////////////////////////////////////////////////// objref apical apical = new SectionList() forsec "apical_dendrite"{ apical.append() } //Define new variables objref currentsection,trunk_to_obliqueending, obliqueending_to_trunk strdef origintrunk trunk_to_obliqueending=new SectionList() obliqueending_to_trunk=new List() objref pl[150],opl[150] plcount=-1 // to make the first counter in list pl 0 func istrunk() { local x // return 1 if $o1.sec is the origin of the path //$o1.sec print secname() // if you want to see it working forsec apical_trunk_list{ origintrunk=secname() $o1.sec x=issection(origintrunk) if (x==1) { return x } } return x // In this case 0 because it has not forfilled the x==1 if statement } obfunc trace_to_trunk() { localobj path //path = new SectionList() path = new List() while (istrunk(this)!=1) { // The function isorigin is defined in apical-trunk-list.hoc path.append(this) this = parsr(this) // the new this is the parent of the previous this } //this.sec path.append() // to add the trunk segment path.append(this) return path } obfunc reverse_list(){ localobj revlist,reftemp revlist=new SectionList() for(i=$o1.count()-1;i>=0;i=i-1) { reftemp=$o1.o(i) reftemp.sec revlist.append() } return revlist } forsec apical { secname() currentsection=new SectionRef() if (currentsection.nchild==0){ //endsegment //printf("end segment is ") //print secname() currentsection this = new SectionRef() obliqueending_to_trunk=trace_to_trunk() if(obliqueending_to_trunk.count()!=1){ // Discard the endsegment of the trunk as being an oblique plcount=plcount+1 trunk_to_obliqueending=reverse_list(obliqueending_to_trunk) pl[plcount]=new SectionList() pl[plcount]=trunk_to_obliqueending opl[plcount]=new ObliquePath(pl[plcount]) // to visually check the list of segments print to command line //printf("new oblique \n") //print plcount //forsec pl[plcount]{ // print secname() //} //printf("trunk section \n") //opl2[plcount2].trunk_section.sec print secname() } } }