pricklypear/neuron/msomodel_default.hoc

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%%%