250 lines
4.9 KiB
Plaintext
250 lines
4.9 KiB
Plaintext
//----------
|
|
// 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%%%
|