create soma,dend,neck[nSpine],head[nSpine] connect soma(0),dend(0) connect neck[0](0),dend(dendLoc1) connect head[0](0),neck[0](1) connect neck[1](0),dend(dendLoc2) connect head[1](0),neck[1](1) dendD = 1 dendL = 50 dendN = 35 somaD=65 somaL=somaD // for "spherical" cecll somaN=1 soma{ pt3dadd(0,0,0,somaD) pt3dadd(0,somaL,0,somaD) nseg = somaN } dend{ pt3dadd(0,somaL,0,dendD) pt3dadd(0,(somaL+dendL),0,dendD) nseg = dendN dendTar = new SectionRef() } for ii=0,nSpine-1{ // if want to do on-dendrite simulations: // for one synapse on dendrite, make onDend=1 // for two synapses on dendrite, make onDend=2 onDend=0 if(onDend>0.1){ print "Placing one synapse onto dendrite (effectively)" if(abs(onDend-1)<0.1){ if(abs(ii-1)<0.1){ print "Spine geometry switched" // switch only on second loop neckL = 0.001 neckD = 0.5 } }else{ print "Placing two synapses onto dendrite (effectively)" if(abs(ii)<0.1){ print "Spine geometry switched" // switch on first loop neckL = 0.001 neckD = 0.5 } } } neck[ii]{ pt3dadd(0,(somaL+dendL),0,neckD) pt3dadd(cos(2*PI*ii/nSpine)*neckL,(somaL+dendL),sin(2*PI*ii/nSpine)*neckL,neckD) nseg=neckN } head[ii]{ pt3dadd(cos(2*PI*ii/nSpine)*neckL,(somaL+dendL),sin(2*PI*ii/nSpine)*neckL,headD) pt3dadd(cos(2*PI*ii/nSpine)*(neckL+headL),(somaL+dendL),sin(2*PI*ii/nSpine)*(neckL+headL),headD) nseg=headN } } // print surface area. bloss' 2016 AT model has 13551.206 um2 saSum = 0 forall { for (x,0) {saSum += area(x) }} print "total surface area = ", saSum, " um2" // move two spines to new locations, as specified by user. // $1: x location for spine 1 // $2: x location for spine 2 proc moveSpines(){ connect neck[0](0),dend($1) connect neck[1](0),dend($2) }