//-------------------------------------------------------------------- // Simulation of a single GDP //--------------------------------------------------------------------- // Used to stimulate a GDp for display // ------------Definition of Parameters ------------------------------- // -------------------------------------------------------------------- // seed Values for random generator seed_AMPA = 0 // seed for random function seed_GABA = seed_AMPA+2 // Define Cl--Concentration Cli = 50 // Determining Parameters GABA --------------------------- G_GABA = 0.000789 // synaptic weight according to miniature events DECAY_GABA = 37 P_GABA = 0.18 ngabasyn = 534 gninputs = 1 // number of inputs per synapse // Determination Parameters AMPA ------------------------------------ G_AMPA = 0.000305 * 10 DECAY_AMPA = 11 nampasyn = 107 //Number of AMPA-Synapses // calculated was 107 aninputs = 1 // number of inputs per synapse // Definition of various runtime parameters -------------------------- ndend=56 // Number of dendrites tstop = 1500 // Duration v_init = -60 // Initial voltage dt = 0.01 // Step Interval in ms // ---------Definition of objects ------------------------------------- // -------------------------------------------------------------------- // Objects for Synapses --------------------------------------------------------- objref gabasyn[ngabasyn] // Definition of synapse objects objref ampasyn[nampasyn] // random function for localization of synapses objref rand_ampa_loc, rand_gaba_loc // random function for localization of synapses in which dendrite objref rand_ampa_dend, rand_gaba_dend // random function for synapses parameters objref rand_gaba_t, rand_gaba_g objref rand_ampa_t, rand_ampa_g // definition of Vectors for Gaba-Stimulation (t_vec = timestamps t_vecr = sorted timestamps, g_vec = rel conductance) objref gabastim[ngabasyn], gaba_t_vec[ngabasyn], gaba_t_vecr[ngabasyn], synpulsegaba[ngabasyn], gaba_g_vec[ngabasyn] // definition of Vectors for AMPA-Stimulation objref ampastim[nampasyn], ampa_t_vec[nampasyn], ampa_t_vecr[nampasyn], synpulseampa[nampasyn], ampa_g_vec[nampasyn] // Start of Input generation ------------------------------------------- // Initialize Random Functions ----------- rand_ampa_loc = new Random(seed_AMPA+1) rand_gaba_loc = new Random(seed_GABA+2) rand_ampa_dend = new Random(seed_AMPA+3) rand_gaba_dend = new Random(seed_GABA+4) rand_ampa_t = new Random(seed_AMPA+5) rand_ampa_g = new Random(seed_AMPA+6) rand_gaba_t = new Random(seed_GABA+7) rand_gaba_g = new Random(seed_GABA+8) //Define properties of random Function rand_gaba_t.normal(400, 9000) rand_gaba_g.normal(1, 0.28) //rel variance of GABA according to results rand_ampa_t.normal(500, 8500) rand_ampa_g.normal(1, 0.26) //rel variance of AMPA according to results // generate Vectors --- (gniputs, aninputs defines number of inputs per synapse) ------ for i = 0, ngabasyn-1 { gaba_t_vec[i] = new Vector(gninputs) gaba_t_vecr[i] = new Vector(gninputs) gaba_g_vec[i] = new Vector(gninputs) } for i = 0, nampasyn-1 { ampa_t_vec[i] = new Vector(aninputs) ampa_t_vecr[i] = new Vector(aninputs) ampa_g_vec[i] = new Vector(aninputs) } // Distribute GABA synapses ----------------------------------------------------------- for k=0, ngabasyn-1 { pos = rand_gaba_loc.uniform(0,ndend-1) pos2 = rand_gaba_dend.uniform (0.1, 0.5) dend_0[pos]{ gabasyn[k] = new gaba(pos2) gabasyn[k].tau1 = 0.1 gabasyn[k].tau2 = DECAY_GABA gabasyn[k].P = P_GABA } } // distribute AMPA synapses ------------------------------------------------------------------------ for k=0, nampasyn-1 { pos = rand_ampa_loc.uniform(0,ndend-1) pos3 = rand_ampa_dend.uniform (0.1, 0.5) dend_0[pos]{ ampasyn[k] = new Exp2Syn(pos3) ampasyn[k].tau1 = 0.1 ampasyn[k].tau2 = DECAY_AMPA } } //-- Simulation starts here ----------------------------------------------------------------- //------------------------------------------------------------------------------------------- forsec all { cli0_cldif_CA3_NKCC1_HCO3 = Cli cli_Start_cldif_CA3_NKCC1_HCO3 = Cli cli_cldif_CA3_NKCC1_HCO3 = Cli } // 2a. Generate timestamps/conductances for GABA synapses -------------------------------------- for f=0, ngabasyn-1 { for i=0, gninputs-1 { t = rand_gaba_t.repick() g = rand_gaba_g.repick() gaba_t_vec[f].x[i]=t gaba_g_vec[f].x[i]= abs(G_GABA*g) } } for f=0, ngabasyn-1 { gaba_t_vecr[f] = gaba_t_vec[f].sort() } // 2b. Generate timestamps/conductances for AMPA synapses -------------------------------------- for f=0, nampasyn-1 { for i=0, aninputs-1 { t = rand_ampa_t.repick() g = rand_ampa_g.repick() ampa_t_vec[f].x[i]=t ampa_g_vec[f].x[i]=G_AMPA } } for f=0, nampasyn-1 { ampa_t_vecr[f] = ampa_t_vec[f].sort() } // 3. generate Vecstim-vectors from the sorted timestamp-vectors ------------------------------- for i=0, ngabasyn-1 { gabastim[i] = new VecStim() gabastim[i].play(gaba_t_vecr[i]) // GABA stimulator } for i=0, nampasyn-1{ ampastim[i] = new VecStim() ampastim[i].play(ampa_t_vecr[i]) // AMPA stimulator } // 4. Play the Vecstim objects to the synapses --------------------------------------------- for i=0, ngabasyn-1 { synpulsegaba[i] = new NetCon(gabastim[i], gabasyn[i], 0, 0, gaba_g_vec[i].x[0]) } // GABA NetCon for i=0, nampasyn-1 { synpulseampa[i] = new NetCon(ampastim[i], ampasyn[i], 0, 0, ampa_g_vec[i].x[0]) } // Ampa NetCon // 6. Run Simulation -------------------------------------------------------- run()