/*--------------------------------------------------------------------- Written by Alessandro Limongiello University "Federico II" of Naples, 2012-2013 -----------------------------------------------------------------------*/ /*--------------------------------------------- STIMULATION ---------------------------------------------*/ gnabar_NaFSoma0 = 10 gcabar_CaP2Soma0 = 0.0005 gkbar_KhSoma0 = 0.0005 gcabar_CaP20 = 0.004 gcabar_CaT0 = 0.0015 gcabar_CaE0 = 0.008 gkbar_Khh0 = 0.0006 gkbar_KM0 = 0.00001 gkbar_KA0 = 0.08 gkbar_KD0 = 0.09 gkbar_KC30 = 0.06 proc channelsByMiyasho01(){ local ii,i forsec "soma.*" { insert NaF gnabar_NaF = gnabar_NaFSoma0 insert NaP gnabar_NaP = gnabar_NaP insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP2Soma0 insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = 0 insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = 0 insert Khh gkbar_Khh = gkbar_Khh insert KM gkbar_KM = gkbar_KM insert KA gkbar_KA = gkbar_KA insert KD gkbar_KD = 0 insert Kh gkbar_Kh = gkbar_KhSoma0 insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } forsec SmoothSectList{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20 insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0 insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0 insert Khh gkbar_Khh = gkbar_Khh0 insert KM gkbar_KM = gkbar_KM0 insert KA gkbar_KA = gkbar_KA0 insert KD gkbar_KD = gkbar_KD0 insert KC3 gkbar_KC3 = gkbar_KC30 insert K23 gkbar_K23 = gkbar_K23 insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } forsec TrunkSectList{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20 insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0 insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0 insert Khh gkbar_Khh = gkbar_Khh0 insert KM gkbar_KM = gkbar_KM0 insert KA gkbar_KA = gkbar_KA0 insert KD gkbar_KD = gkbar_KD0 insert KC3 gkbar_KC3 = gkbar_KC30 insert K23 gkbar_K23 = gkbar_K23 insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } forsec SpinySectList{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20 insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0 insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0 insert Khh gkbar_Khh = gkbar_Khh0 insert KM gkbar_KM = gkbar_KM0 insert KA gkbar_KA = gkbar_KA0 insert KD gkbar_KD = gkbar_KD0 insert KC3 gkbar_KC3 = gkbar_KC30 insert K23 gkbar_K23 = gkbar_K23 insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } for (i = 0; i < eqSomaVector.size(); i = i + 1){ ii = eqSomaVector.x(i) eqSection[ii] { insert NaF gnabar_NaF = gnabar_NaFSoma0*surfFact.x(ii) insert NaP gnabar_NaP = gnabar_NaP*surfFact.x(ii) insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP2Soma0*surfFact.x(ii) insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = 0*surfFact.x(ii) insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = 0*surfFact.x(ii) insert Khh gkbar_Khh = gkbar_Khh*surfFact.x(ii) insert KM gkbar_KM = gkbar_KM*surfFact.x(ii) insert KA gkbar_KA = gkbar_KA*surfFact.x(ii) insert KD gkbar_KD = 0*surfFact.x(ii) insert Kh gkbar_Kh = gkbar_KhSoma0*surfFact.x(ii) insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } } for (i = 0; i < eqTrunkVector.size(); i = i + 1){ ii = eqTrunkVector.x(i) eqSection[ii]{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20*surfFact.x(ii) insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0*surfFact.x(ii) insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0*surfFact.x(ii) insert Khh gkbar_Khh = gkbar_Khh0*surfFact.x(ii) insert KM gkbar_KM = gkbar_KM0*surfFact.x(ii) insert KA gkbar_KA = gkbar_KA0*surfFact.x(ii) insert KD gkbar_KD = gkbar_KD0*surfFact.x(ii) insert KC3 gkbar_KC3 = gkbar_KC30*surfFact.x(ii) insert K23 gkbar_K23 = gkbar_K23*surfFact.x(ii) insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } } for (i = 0; i < eqSmoothVector.size(); i = i + 1){ ii = eqSmoothVector.x(i) eqSection[ii]{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20*surfFact.x(ii) insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0*surfFact.x(ii) insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0*surfFact.x(ii) insert Khh gkbar_Khh = gkbar_Khh0*surfFact.x(ii) insert KM gkbar_KM = gkbar_KM0*surfFact.x(ii) insert KA gkbar_KA = gkbar_KA0*surfFact.x(ii) insert KD gkbar_KD = gkbar_KD0*surfFact.x(ii) insert KC3 gkbar_KC3 = gkbar_KC30*surfFact.x(ii) insert K23 gkbar_K23 = gkbar_K23*surfFact.x(ii) insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } } for (i = 0; i < eqSpinyVector.size(); i = i + 1){ ii = eqSpinyVector.x(i) eqSection[ii]{ insert CaP2 cai = 4e-5 cao = 2.4 gcabar_CaP2 = gcabar_CaP20*surfFact.x(ii) insert CaT cai = 4e-5 cao = 2.4 gcabar_CaT = gcabar_CaT0*surfFact.x(ii) insert CaE cai = 4e-5 cao = 2.4 gcabar_CaE = gcabar_CaE0*surfFact.x(ii) insert Khh gkbar_Khh = gkbar_Khh0*surfFact.x(ii) insert KM gkbar_KM = gkbar_KM0*surfFact.x(ii) insert KA gkbar_KA = gkbar_KA0*surfFact.x(ii) insert KD gkbar_KD = gkbar_KD0*surfFact.x(ii) insert KC3 gkbar_KC3 = gkbar_KC30*surfFact.x(ii) insert K23 gkbar_K23 = gkbar_K23*surfFact.x(ii) insert cad taur_cad = 2 cainf_cad = 4e-5 kt_cad = 4e-5 kd_cad = 4e-5 } } } proc initMiyasho01(){ t=0 finitialize(-65) fcurrent() } objref stimApp,synApp,netConApp,stimEqApp,synEqApp,netConEqApp tau10 = 0.5 //0.4 tau20 = 1.2 //0.6 freqSyn = 80 syn_asyn = 1 //0 gmaxSynSeed = 0 poissonSeed = 987651119 objref randNum,randInterval,randGmax0,randPoss objectvar StimList,Exp2SynList,NetConList,StimEqList,Exp2SynEqList,NetConEqList objref distanceVect distanceVect = new Vector(2000) objref forbiddenVect gmax00 = 5 gmaxSynDiv = 10 //2 objref rslist,rs rslist = new List() //random list proc insertPurkSyn(){ local sec, secApp, possApp, i, intervalApp gmax0 = gmax00*1e-3 interval_mean = 1000/freqSyn //interval_sd = interval_mean/interval_meanDiv gmax0_sd = gmax0/gmaxSynDiv clusterListApp = $o4 StimList = new List() rslist = new List() //random list Exp2SynList = new List() NetConList = new List() randNum = new Random($2) secApp = randNum.discunif(0,NSEC-1) randPoss = new Random($2) possApp = randPoss.uniform(0, 1) //randInterval = new Random(intervalSynSeed) //intervalApp = randInterval.normal(interval_mean,interval_sd^2) randGmax0 = new Random(gmaxSynSeed) gmax0App = randGmax0.normal(gmax0,(gmax0_sd)^2) access soma distance() sec = 0 forbiddenVect = new Vector() forall { if (issection("eqSection.*")||issection("soma.*")){ forbiddenVect.append(sec) } //if (diam>3.17) forbiddenVect.append(sec) if (StimulationTypePartial_Total == 0){ ifsec SmoothSectList forbiddenVect.append(sec) ifsec TrunkSectList forbiddenVect.append(sec) }else if (sec 2 && SURFFACT_PARTIAL_METHOD < 5){ if (orSurf2.x(i)!=0){ surfFact.set(i,surfFactVect.x(i)*orSurf2.x(i)/eqSurf.x(i)) }else{ surfFact.set(i,surfFactVect.x(i)*orSurf1.x(i)/eqSurf.x(i)) } }else if (SURFFACT_PARTIAL_METHOD == 5) { surfFact.set(i,surfFactVect.x(i)) surfFactRmCm.set(i,surfFactVect.x(i)) } if(optPrint) print surfFact.x(i) } } objref strobj strobj = new StringFunctions() objref removingList objref removingVector objref StimEqToSynList objref distVect proc findSyn(){ local sec,j,i,index,possApp clusterListApp = $o1 nCluster = clusterListApp.count strdef sname StimEqList = new List() Exp2SynEqList = new List() NetConEqList = new List() if(optPrint) {print "Synapsi\tSection number\tSection name\tCluster\tpathRi\tpathRi0\tRi(pathRi- pathRi0)\ \tposs\tpathRiEq\tpathRiEq0\tRiEq (pathRiEq - pathRiEq0)\tpossEq\tfactGmaxSyn"} nsyn = $3 if ($4==1){ nsyn= NSEC-2 } numNetStim = 0 if (syn_asyn==1) {numNetStim = 1 }else if (syn_asyn==2) { numNetStim = nStimulationClusterList1 }else if (syn_asyn==0) {numNetStim = nsyn} StimEqToSynList = new List() for (i = 0; i < numNetStim; i = i + 1){ StimEqList.append(StimList.o(i)) StimEqToSynList.append(new Vector(0,0)) } for (j = 0; j < nsyn; j = j + 1){ possApp=Exp2SynList.o(j).get_loc() sname = secname() sec = 0 forall if (!issection("eqSection.*")){ if (issection(sname)) {/*print "section number: ",sec*/ break} sec=sec+1 } for (i = 0; i < nCluster; i = i + 1){ if (clusterListApp.o(i).contains(sec)) {/*print "EqSection number: ",i*/ break} } if (withLocation==1){ locationSearch2(sec,possApp,i) possEq = eqPoss }else {possEq = possEq0} //print "corr: ","morf ",sec,"poss ",possApp,"eq ",i,"possEq ",possEq factGmaxSyn0 = 1 if ($2==0){ if (withLocation==0){ factGmaxSyn = factGmaxSyn0*eqsecpathri.x(i)/secpathri.x(sec) }else{ factGmaxSyn = factGmaxSyn0*eqLocalpathri/Localpathri if(optPrint) print "pappa: ",eqLocalpathri,Localpathri,eqLocalpathri/Localpathri,factGmaxSyn } factTauSyn = 1 } else if ($2==1){ if (withLocation==0){ factGmaxSyn = factGmaxSyn0*secpathri.x(sec)^(factGmaxSyn1) }else{ factGmaxSyn = factGmaxSyn0*Localpathri^(factGmaxSyn1) } factTauSyn = 1 } else if ($2==2){ factGmaxSyn = 1 factTauSyn = 1 } if(optPrint) {print j+1,sec,secname(),"\t",i,secpathri.x(sec),secpathri0.x(sec),\ secpathri.x(sec)-secpathri0.x(sec),possApp,eqsecpathri.x(i),eqsecpathri0.x(i),\ eqsecpathri.x(i)-eqsecpathri0.x(i),possEq,factGmaxSyn} synEqApp = new Exp2Syn(possEq) synEqApp.tau1 = tau10*factTau1Syn synEqApp.tau2 = tau20*factTau2Syn synEqApp.e = 0 Exp2SynEqList.append(synEqApp) ww = NetConList.o(j).weight if (syn_asyn==1) { netConEqApp = new NetCon(StimEqList.o(0),Exp2SynEqList.o(j),0,0,factGmaxSyn*ww) StimEqToSynList.o(0).append(j) }else if (syn_asyn==2) { // if (eqSmoothVector.contains(i)){ indexNetStim = 1 // }else{indexNetStim = 0} // netConEqApp = new NetCon(StimEqList.o(indexNetStim),Exp2SynEqList.o(j),0,0,factGmaxSyn*ww) // StimEqToSynList.o(indexNetStim).append(j) indexNetStim = stimulatedGroup1Vect.x(sec)-1 netConEqApp = new NetCon(StimEqList.o(indexNetStim),Exp2SynEqList.o(j),0,0,factGmaxSyn*ww) StimEqToSynList.o(indexNetStim).append(j) }else if (syn_asyn==0){ netConEqApp = new NetCon(StimEqList.o(j),Exp2SynEqList.o(j),0,0,factGmaxSyn*ww) } NetConEqList.append(netConEqApp) eqSection[i] synEqApp.loc(possEq) pop_section() possEqBis=Exp2SynEqList.o(j).get_loc() //print "possEqBis: ", possEqBis pop_section() } removingList = new List() removingVector = new Vector(0,0) if (syn_asyn==1 || syn_asyn==2) { i = 0 forsec "eqSection.*"{ sname = secname() for (x) if (x>0 && x<1){ poss = x for (jj = 0; jj < StimEqToSynList.count; jj = jj + 1){ removingList.append(new Vector()) for (j = 0; j < StimEqToSynList.o(jj).size(); j = j + 1){ possApp=Exp2SynEqList.o(StimEqToSynList.o(jj).x(j)).get_loc() if (issection(sname) && poss == possApp){ removingList.o(i).append(StimEqToSynList.o(jj).x(j)) } pop_section() } i = i + 1 } } } for (j = 0; j < removingList.count; j = j + 1){ if (removingList.o(j).size()>0) { for (i = 1; i < removingList.o(j).size(); i = i + 1){ NetConEqList.o(removingList.o(j).x(0)).weight = NetConEqList.o(removingList.o(j).x(0)).weight \ + NetConEqList.o(removingList.o(j).x(i)).weight removingVector.append(removingList.o(j).x(i)) } removingList.o(j).remove(0) } } removingVector.sort() for (j = removingVector.size()-1; j >=0; j = j - 1){ Exp2SynEqList.remove(removingVector.x(j)) NetConEqList.remove(removingVector.x(j)) } } } proc locationSearch2(){local nCluster,secNum,orPoss,j {secNum=$1 orPoss=$2 j=$3} if(optPrint) print "______locationSearch________" Localpathri=orPoss*secpathri.x(secNum)+(1-orPoss)*secpathri0.x(secNum) eqLocalpathri=(Localpathri-orMinpathri.x(j))*(eqsecpathri.x(j)-eqsecpathri0.x(j))\ /(orMaxpathri.x(j)-orMinpathri.x(j)) + eqsecpathri0.x(j) eqPoss = (eqLocalpathri-eqsecpathri0.x(j))/(eqsecpathri.x(j)-eqsecpathri0.x(j)) if (eqPoss<=0) eqPoss=0.001 if (eqPoss>=1) eqPoss=0.999 if(optPrint) print "EqSection number: ",j,"eqPoss: ",eqPoss }