//---------- // VARIABLES //---------- seed_x = 1 iter = 1 n_runs_total = 1 tstop = 2000 dt = 0.025 v_init = -65 celsius = 38 axon_soma_distance = 45 dend_n = 2 dend_n_syn = 10 dend_n_seg = 20 dend_length = 200 dend_syn_spread = 0.5 dend_syn_offset = 0.45 dend_0_exc_G = 11 dend_1_exc_G = 11 dend_0_inh_G = 0 dend_1_inh_G = 0 dend_0_exc_gain = 0.0008 dend_1_exc_gain = 0.0008 dend_0_inh_gain = 0.001 dend_1_inh_gain = 0.001 // Spike rate / threshold spk_thres_exc_contra = 0 spk_thres_exc_ipsi = 0 spk_thres_inh_contra = 1 spk_thres_inh_ipsi = 1 // Overrule variables using templating //%%%TEMPLATE%%% //---------------- // CELL DEFINITION //---------------- begintemplate Cell public soma, axon, dend create soma, axon, dend[1] proc init() { ndend = $1 dend_length = $2 axon_soma_distance = $3 create soma, axon, dend[ndend] soma { nseg = 1 diam = 20 // um L = 40 // um Ra = 200 // ohm.cm cm = 1 // uF/cm2 insert kHT_VCN2003 insert kLT_VCN2003 insert na_VCN2003 insert ih_VCN2003 ek = -70 // mV ena = 55 // mV eh = -43 // mV gkbar_kHT_VCN2003 = 0 // S/cm2 gkbar_kLT_VCN2003 = 0 // S/cm2 gnabar_na_VCN2003 = 0.1 // S/cm2 ghbar_ih_VCN2003 = 0 // S/cm2 gl_na_VCN2003 = 0.002 // S/cm2 } axon { nseg = 51 diam = 2 // um L = 400 // um^2 Ra = 200 // ohm.cm cm = 1 // uF/cm2 insert kHT_VCN2003 insert kLT_VCN2003 insert na_VCN2003 insert ih_VCN2003 ek = -70 // mV ena = 55 // mV eh = -43 // mV // total G[nS]=gkbar*area*10 gkbar_kHT_VCN2003 = 0.02 // S/cm2 gkbar_kLT_VCN2003 = 0.03 // S/cm2 gnabar_na_VCN2003 = 0.3 // S/cm2 ghbar_ih_VCN2003 = 0.0015 // S/cm2 gl_na_VCN2003 = 0.002 // S/cm2 } for i = 0, ndend-1 dend[i] { nseg = 20 diam = 3 // um L = 200 // um Ra = 200 // ohm.cm cm = 1 // uF/cm2 insert pas e_pas = -65 g_pas = 0.002 } connect dend[0](0), soma(0) connect dend[1](0), soma(1) connect axon(0), dend[1](axon_soma_distance/dend_length) } endtemplate Cell //-------------------- // CELL INITIALISATION //-------------------- objectvar maincell maincell = new Cell(dend_n, dend_length, axon_soma_distance) access maincell.soma //-------------------- // EXCITATORY SYNAPSES //-------------------- // Variables objectvar syn0[10], gen0[10], syn1[10], gen1[10] // Event generators for i = 0,9 { // Contra gen0[i] = new RelayStim(0.5) gen0[i].seed(seed_x+i) // Ipsi gen1[i] = new RelayStim(0.5) gen1[i].seed(seed_x+10+i) } // Contra synapses maincell.dend[0] { for i = 0,9 { syn0[i] = new Alpha(i/((dend_n_syn-1)/dend_syn_spread)+dend_syn_offset) syn0[i].tau1 = 0.1 // ms syn0[i].tau2 = 0.1 // ms syn0[i].con = dend_0_exc_G // nS-mho syn0[i].e = 0 // mV } } // Ipsi synapses maincell.dend[1] { for i = 0,9 { syn1[i] = new Alpha(i/((dend_n_syn-1)/dend_syn_spread)+dend_syn_offset) syn1[i].tau1 = 0.1 // ms syn1[i].tau2 = 0.1 // ms syn1[i].con = dend_1_exc_G // nS-mho syn1[i].e = 0 // mV } } // Connect generators and synapses objref netcon0[10], netcon1[10] e_delay = 0 // Synaptic delay (ms) for i = 0,9 { netcon0[i] = new NetCon(gen0[i], syn0[i], spk_thres_exc_contra, e_delay, dend_0_exc_gain) netcon1[i] = new NetCon(gen1[i], syn1[i], spk_thres_exc_ipsi, e_delay, dend_1_exc_gain) } //-------------------- // INHIBITORY SYNAPSES //-------------------- // Variables objectvar syn_inhi0[10], gen_inhi0[10], syn_inhi1[10], gen_inhi1[10] // Event generators for i = 0,9 { gen_inhi0[i]=new GaussStim(0.5) // contralateral inputs gen_inhi0[i].interval=2 gen_inhi0[i].start=0 gen_inhi0[i].number=10000 gen_inhi0[i].factor=10 gen_inhi0[i].seed(seed_x+30+i) gen_inhi1[i]=new GaussStim(0.5) // ipsilateral inputs gen_inhi1[i].interval=2 gen_inhi1[i].start=0 gen_inhi1[i].number=10000 gen_inhi1[i].factor=10 gen_inhi1[i].seed(seed_x+50+i) } // Somatic synapses maincell.soma { for i = 0,9 { syn_inhi0[i] = new Alpha(0.5) syn_inhi0[i].tau1 = 0.1 //ms syn_inhi0[i].tau2 = 2 //ms syn_inhi0[i].con = dend_0_inh_G //umho syn_inhi0[i].e = -70 // mV } for i = 0,9 { syn_inhi1[i] = new Alpha(0.5) syn_inhi1[i].tau1 = 0.1 //ms syn_inhi1[i].tau2 = 2 //ms syn_inhi1[i].con = dend_1_inh_G //umho syn_inhi1[i].e = -70 // mV } } // Connect generators and synapses objref netcon_inhi0[10],netcon_inhi1[10] I_delay0 = 0 // Synaptic delay I_delay1 = 0 // Synaptic delay for i = 0,9{ netcon_inhi0[i] = new NetCon(gen_inhi0[i], syn_inhi0[i], spk_thres_inh_contra, I_delay0, dend_0_inh_gain) netcon_inhi1[i] = new NetCon(gen_inhi1[i], syn_inhi1[i], spk_thres_inh_ipsi, I_delay1, dend_1_inh_gain) } //--------------------- // LOAD SIMULATION CODE //--------------------- load_file("msomodel_base.hoc") // Ending template (useful to quit automated runs) //%%%TEMPLATE_ENDING%%%