load_file("nrngui.hoc") load_file ("fixnseg.hoc") load_file("CellDef.hoc") celsius = 35 tstart = 0 tstop = 10000 nprox = 11 ndist = 16 numstim = 16 numsyn = 16 weight = 1 s_comp = 1.325 Vrest = -65 objref stim[numstim], nmda[numsyn], ampa[numsyn], nc0[numstim], nc1[numstim], cvode objref soma_ap_count, soma_spikes, spikes_in_burst, firing_output objref syn_DA0, syn_DA1, nc2, nc3, DA_output objref rd soma_spikes = new Vector() spikes_in_burst = new Vector() firing_output = new File() DA_output = new File() cvode = new CVode(1) cvode.active(1) Vinit = Vrest soma area(.5) use_mcell_ran4(1) mcell_ran4_init() rd = new Random() rd.MCellRan4(657723357) rd.uniform(0,numsyn) forall { Cm = 1 Vrest = -65 Ra = 400 Rm = 9500 ion_style("na_ion", 2,2,0,0,0) na_cond = 550.0e-6 kdr_cond = 665.0e-6 ca_cond = 11.196e-6 kca_cond = 59.0e-6 a_cond_s = 570.0e-6 a_cond_p = 285.0e-6 a_cond_d = 266.0e-6 } soma { soma_ap_count = new APCount(.5) soma_ap_count.record(soma_spikes) insert nabalan insert pump insert cabalan {insert hd ghdbar_hd = 0.001325 } {insert hh3 gnabar_hh3 = na_cond*s_comp gkhhbar_hh3 = kdr_cond*s_comp gkabar_hh3 = a_cond_s*s_comp qs_hh3 = 56.0 qv_hh3 = 8.0 } {insert leak gnabar_leak = 2.375e-6*s_comp gkbar_leak = 5.5e-6*s_comp gcabar_leak = 0.6e-6*s_comp ggabaa_leak = 2750.0e-6*s_comp } {insert cachan gcalbar_cachan = ca_cond*s_comp gcanbar_cachan = 0.000171*s_comp gcatbar_cachan = 0.001044*s_comp} {insert kca gkbar_kca = kca_cond*s_comp } } for i=0, nprox-1 prox[i] { insert nabalan insert pump {insert hh3 gnabar_hh3 = na_cond gkhhbar_hh3 = kdr_cond gkabar_hh3 = a_cond_p qs_hh3 = 5.0 qv_hh3 = 60.0 } {insert leak gcabar_leak = 0.6e-6 ggabaa_leak = 275.0e-6 } } for j=0, ndist-1 dist[j] { insert nabalan insert pump {insert hh3 gnabar_hh3 = na_cond gkhhbar_hh3 = kdr_cond gkabar_hh3 = a_cond_d qs_hh3 = 5.0 qv_hh3 = 60.0 } {insert leak gcabar_leak = 0.6e-6 ggabaa_leak = 275.0e-6 } nmda[j]=new nmdanet(1) ampa[j]=new Exp2Syn(1) ampa[j].tau1 = 0.5 ampa[j].tau2 = 3 ampa[j].e = 0 stim[j]=new NetStimd(.5) stim[j].start=rd.repick() stim[j].number = 10000 stim[j].interv1 = 1000/20 stim[j].interv2 = 1000/50 stim[j].swd = 800 stim[j].swu = 200 stim[j].noise = 1 nc0[j]=new NetCon(stim[j],ampa[j],0,0,1.14*weight*1e-03) nc1[j]=new NetCon(stim[j],nmda[j],0,0,2.82*weight*1e-03) } gna = na_cond gkdr = kdr_cond gkas = a_cond_s gkap = a_cond_s gkad = a_cond_p gca = ca_cond gkca = kca_cond proc na() { soma gnabar_hh3 = gna*s_comp for i=0, nprox-1 prox[i] { gnabar_hh3 = gna} for j=0, ndist-1 dist[j] { gnabar_hh3 = gna} } proc kdel() { soma gkhhbar_hh3 = gkdr*s_comp for i=0, nprox-1 prox[i] { gkhhbar_hh3 = gkdr} for j=0, ndist-1 dist[j] { gkhhbar_hh3 = gkdr} } proc ka() { soma gkabar_hh3 = gkas for i=0, nprox-1 prox[i] { gkabar_hh3 = gkap} for j=0, ndist-1 dist[j] { gkabar_hh3 = gkad} } proc gcal() { soma gcalbar_cachan = gca soma gcanbar_cachan= gca soma gcatbar_cachan= gca } proc gkcal() { soma gkbar_kca = gkca } proc GABA() { local GABA_weight GABA_weight = $1 soma ggabaa_leak = GABA_weight*2750.0e-6*s_comp for i=0, nprox-1 prox[i] { ggabaa_leak = GABA_weight*275.0e-6} for j=0, ndist-1 dist[j] { ggabaa_leak = GABA_weight*275.0e-6} } xpanel ( "Model conductances" ) xvalue ( "gnabar", "gna", 1, "na()" ) xvalue ( "gkdrbar", "gkdr", 1, "kdel()" ) xvalue ( "soma_gkabar", "gkas", 1, "ka()" ) xvalue ( "prox_gkabar", "gkap", 1, "ka()" ) xvalue ( "dist_gkabar", "gkad", 1, "ka()" ) xvalue ( "gcabar", "gca", 1, "gcal()" ) xvalue ( "gkcabar", "gkca", 1, "gkcal()" ) xpanel() load_file("DA_release.ses") na() kdel() ka() gcal() gkcal() proc Rin_compute() { localobj r finitialize(-65) r = new Impedance() soma r.loc(.5) r.compute(1,1) Rin = r.input(.5) print Rin, "input resistance" } proc average() { soma_spikes.append(tstop) spikes_in_burst.resize(0) index = 1 spike_cnt = 0 burst_cnt = 0 flag = 0 indini = 0 number = 0 while (index < soma_spikes.size()) { interval = soma_spikes.x[index]-soma_spikes.x[index-1] if (interval < 160){ flag = 1 } else { if (flag > 0) { burst_cnt = burst_cnt+1 number = index-indini spikes_in_burst.append(number) indini = index flag = 0 } else { spike_cnt = spike_cnt+1 indini = index } } index = index+1 } print burst_cnt, spike_cnt, soma_ap_count.n, spikes_in_burst.mean() firing_output.printf ("%g %g %g %g\n", burst_cnt, spike_cnt, soma_ap_count.n, spikes_in_burst.mean()) } proc withdrawal() { soma { for z = 0, n3d()-1 { pt3dchange (z, x3d(z),y3d(z),z3d(z),diam3d(z)*0.7) } } } proc loop() { firing_output.wopen("firing_cnt.txt") k=1 for (k>0; k<=2; k=k+1){ run() print soma_ap_count.n average() } firing_output.close() } create acell acell { syn_DA0 = new dopnet(.5) syn_DA0.vmax = 5*1e-3 syn_DA1 = new dopnet(.5) syn_DA1.vmax = 0.5*1e-3 } nc2 = new NetCon(&v(.5), syn_DA0, -20, 0, 0.4) nc3 = new NetCon(&v(.5), syn_DA1, -20, 0, 0.046) proc release() { Graph[1].addexpr("syn_DA0.dop", 1, 1, 2.99, 2.99, 2) Graph[1].addexpr("syn_DA1.dop", 2, 1, 2.99, 2.99, 2) soma_spikes.resize(0) compare = 0 } proc init() { finitialize(v_init) fcurrent() t = tstart } init() release() withdrawal() //loop()