// granule.tem // Template for granule cell model // Andrew Davison, The Babraham Institute, 2000 begintemplate Gran public soma, proxi, dist, gemm, ngemm, AMPAr, NMDAr, AMPArS, NMDArS, CaSyn, spiketimesS, spikecountS, spiketimes, spikecount//,r ndist = 5 //print "ndist=", ndist ngemm = 30 //valeur par defaut superieure a la realite. create soma, proxi, s2p, p2d[ndist], dist[ndist], d2g[ngemm], gemm[ngemm] objref AMPAr, NMDAr, AMPArS[ngemm], NMDArS[ngemm], CaSyn[ngemm], spiketimes, spikecount, spiketimesS[ngemm], spikecountS[ngemm], randspine, specspine proc init() { local Len, Erest, RM, p, q, Atotal, AMPAtau, NMDAalpha, NMDAbeta, Erev, k create soma, proxi, s2p, p2d[$1], dist[$1], d2g[$2], gemm[$2] ngemm = $2 spiketimes = new Vector() lastspikecount = 0 for i = 0, ngemm-1 { spiketimesS[i] = new Vector() } // attribution d'une specificite a chaque epine randspine = new Random() specspine = new Vector(ngemm) for k=0, ngemm-1 { specspine.x[k] = randspine.discunif(0,5) //print specspine.x[k] } ndist = $1 ngemm = $2 Erest = -65 // mV Atotal = 8353 // um2 RM = 4000//100000 //4000 // ohm.cm2 //Davison versus anton Granger Ri = 70 //ohm.cm Len = 50 p = 0.0136 q = 0.308 NMDAalpha = 0.0163 // ms-1 NMDAbeta = 0.00292 // ms-1 AMPAtau = 3 // ms Erev = 0 // mV // r = 0.4 soma { L = Len diam = p*Atotal/(PI*Len) Ra = 80 // ohm.cm Anton Granger 1993 insert pas e_pas = Erest // reversal potential mV g_pas = 1/RM // membrane conductance S/cm2 insert nagrantab insert kslowtab insert kM insert kA //inserer Canaux T, canaux N and P/Q. Egger, Pinato's, Isaacson98 gnabar_nagrantab = 0.1611 // S/cm2 gkbar_kslowtab = 0.1313 gkbar_kM = 0.1334 gkbar_kA = 0.0088 } s2p { diam = 1 Ra = 80 // ohm.cm Anton Granger 1993 L = 1 } proxi { L = 150 diam = q*Atotal/(PI*Len) Ra = PI/(4*Len*Atotal) insert pas e_pas = Erest g_pas = 1/RM insert nagrantab insert kslowtab gnabar_nagrantab = 0.1355 gkbar_kslowtab = 0.0243 } for i = 0, ndist-1 { p2d[i] { diam = 1 Ra = 8000000//80 // ohm.cm Anton Granger 1993 L = 1 } } for i = 0, ndist-1 { dist[i] { L = 50 // um Anton Granger 1993 diam = 1 // um Anton Granger 1993 Ra = 80 // ohm.um Anton Granger 1993 insert pas e_pas = Erest g_pas = 1/RM // insert nagrantab // insert kslowtab // gnabar_nagrantab = 0.1355 // gkbar_kslowtab = 0.0243 } } // spine neck for i = 0, ngemm-1 { d2g[i] { diam = 0.2 // um Anton Granger 1993 Ra = 150*10 // ohm.um Anton Granger 1993 L = 3 // um Anton Grnager 1993 } } // spine for k = 0, ngemm-1 { gemm[k] { r = 0.4 L = 1.747 * r //conversion sphere/cylindre diam = 2*r Ra = 80 // ohm.um Anton Grnager 1993 insert pas e_pas = Erest // g_pas = 1/RM // 1/specspine.x[k] // a rectifier insert nafast insert kfasttab insert kslowtab //insert lcafixed //insert cad //depth_cad = 8 //insert itGHK //insert N_Ca // lire Kerry/Delaney CAN //insert L_HVA_Ca // Halabisky // insert kA //relire Christie et Westbrook qui en parlent // inserer canaux P/Q, cad. Isaacson98 // IA Schoppa W 1999. gnabar_nafast = 0 //0.1532 gkbar_kfasttab = 0//0.1 //*specspine.x[k]//0.1956 gkbar_kslowtab = 0//0.243 //gcabar_lcafixed = 0 // 0.01 //0.0040 //pcabar_itGHK = 0 // 0.2e-3 //permeability cm/s //gcabar_N_Ca = 0 // 0.02 //This is the original value(mho/cm2) //gcabar_L_HVA_Ca = 0 // 0.0003 //original = 7e-05(mho/cm2) AMPArS[k] = new ExpSyn(0.5) //not taken into account but can be an option later AMPArS[k].tau = AMPAtau //idem AMPArS[k].e = Erev //idem NMDArS[k] = new NMDA(0.5) //idem NMDArS[k].Alpha = NMDAalpha //idem NMDArS[k].Beta = NMDAbeta //idem NMDArS[k].e = Erev //idem spikecountS[k] = new APCount(0.5) spikecountS[k].thresh = -35 spikecountS[k].record(spiketimesS[k]) } } // set reversal potentials, etc. forall if (ismembrane("na_ion")) { ena = 45 // mV } forall if (ismembrane("k_ion")) { ek = -70 // mV } forall if (ismembrane("ca_ion")) { eca = 70 // mV cai = 0.00001 // mM cao = 2 // mM ion_style("ca_ion",3,2,0,0,1) } // Connexion de toute la cellule connect s2p(0), soma(1) connect proxi(0), s2p(1) for i=0, ndist-1 connect p2d[i](0), proxi(1) for i=0, ndist-1 connect dist[i](0), p2d[i](1) // for i=0, ngemm-1 connect d2g[i](0), dist[int(i*ndist/ngemm)](1) //On peut choisir aussi de repartir les epines selon Woolf,G,S 1991 for i=0, ngemm-1 connect d2g[i](0), dist[0](1) for i=0, ngemm-1 connect gemm[i](0), d2g[i](1) } endtemplate Gran