//genesis - Purkinje cell M9 genesis2.1 script
/* Copyright E. De Schutter (Caltech and BBF-UIA) */
/**********************************************************************
** Sets up active membrane Purkinje cell compartment prototypes
** and dendritic spine prototypes.
** E. De Schutter, Caltech, 1991-1992
** This version sets up active compartments with basket cell, climbing
** fiber and stellate cell synapses.
**********************************************************************/
/* References:
** E. De Schutter and J.M. Bower: An active membrane model of the
** cerebellar Purkinje cell. I. Simulation of current clamps in slice.
** Journal of Neurophysiology 71: 375-400 (1994).
** http://www.bbf.uia.ac.be/TNB/TNB_pub8.html
** E. De Schutter and J.M. Bower: An active membrane model of the
** cerebellar Purkinje cell: II. Simulation of synaptic responses.
** Journal of Neurophysiology 71: 401-419 (1994).
** http://www.bbf.uia.ac.be/TNB/TNB_pub7.html
** Consult these references for sources of experimental data.
*/
int include_Purk_cicomp
if ( {include_Purk_cicomp} == 0 )
include_Purk_cicomp = 1
function make_Purkinje_comps
/* separate function so we can have local variables */
float len, dia, surf, shell_vol, shell_dia
int i
echo making Purkinje compartment library...
/* make spherical soma prototype with sodium currents*/
len = 0.00e-6
dia = 20.0e-6
surf = dia*dia*{PI}
shell_dia = 2*{Shell_thick}
shell_vol = (3*dia*dia*shell_dia - 3*dia*shell_dia*shell_dia + shell_dia*shell_dia*shell_dia)*{PI}/6.0
if (!({exists Purk_soma}))
create compartment Purk_soma
end
setfield Purk_soma Cm {{CM}*surf} Ra {8.0*{RA}/(dia*{PI})} \
Em {ELEAK} initVm {EREST_ACT} Rm {{RMs}/surf} inject 0.0 \
dia {dia} len {len}
copy Purk_NaF Purk_soma/NaF
addmsg Purk_soma Purk_soma/NaF VOLTAGE Vm
addmsg Purk_soma/NaF Purk_soma CHANNEL Gk Ek
setfield Purk_soma/NaF Gbar {{GNaFs}*surf}
copy Purk_NaP Purk_soma/NaP
addmsg Purk_soma Purk_soma/NaP VOLTAGE Vm
addmsg Purk_soma/NaP Purk_soma CHANNEL Gk Ek
setfield Purk_soma/NaP Gbar {{GNaPs}*surf}
copy Purk_CaT Purk_soma/CaT
addmsg Purk_soma Purk_soma/CaT VOLTAGE Vm
addmsg Purk_soma/CaT Purk_soma CHANNEL Gk Ek
setfield Purk_soma/CaT Gbar {{GCaTs}*surf}
copy Purk_KA Purk_soma/KA
addmsg Purk_soma Purk_soma/KA VOLTAGE Vm
addmsg Purk_soma/KA Purk_soma CHANNEL Gk Ek
setfield Purk_soma/KA Gbar {{GKAs}*surf}
copy Purk_Kdr Purk_soma/Kdr
addmsg Purk_soma Purk_soma/Kdr VOLTAGE Vm
addmsg Purk_soma/Kdr Purk_soma CHANNEL Gk Ek
setfield Purk_soma/Kdr Gbar {{GKdrs}*surf}
copy Purk_KM Purk_soma/KM
addmsg Purk_soma Purk_soma/KM VOLTAGE Vm
addmsg Purk_soma/KM Purk_soma CHANNEL Gk Ek
setfield Purk_soma/KM Gbar {{GKMs}*surf}
copy Purk_h1 Purk_soma/h1
addmsg Purk_soma Purk_soma/h1 VOLTAGE Vm
addmsg Purk_soma/h1 Purk_soma CHANNEL Gk Ek
setfield Purk_soma/h1 Gbar {{Ghs}*surf}
copy Purk_h2 Purk_soma/h2
addmsg Purk_soma Purk_soma/h2 VOLTAGE Vm
addmsg Purk_soma/h2 Purk_soma CHANNEL Gk Ek
setfield Purk_soma/h2 Gbar {{Ghs}*surf}
create Ca_concen Purk_soma/Ca_pool
setfield Purk_soma/Ca_pool tau {CaTau} \
B {1.0/(2.0*96494*shell_vol)} Ca_base {CCaI} \
thick {Shell_thick}
addmsg Purk_soma/CaT Purk_soma/Ca_pool I_Ca Ik
copy GABA2 Purk_soma/basket
setfield Purk_soma/basket gmax {{GB_GABA}*surf}
addmsg Purk_soma/basket Purk_soma CHANNEL Gk Ek
addmsg Purk_soma Purk_soma/basket VOLTAGE Vm
/* make main dendrite prototype with fast Ca currents */
len = 200.00e-6
dia = 2.00e-6
surf = len*dia*{PI}
shell_vol = (2*dia*shell_dia - shell_dia*shell_dia)*len*{PI}/4.0
if (!({exists Purk_maind}))
create compartment Purk_maind
end
setfield Purk_maind Cm {{CM}*surf} Ra {4.0*{RA}*len/(dia*dia*{PI})} \
Em {ELEAK} initVm {EREST_ACT} Rm {{RMd}/surf} inject 0.0 \
dia {dia} len {len}
if (!({exists Purk_thickd})) // Lets copy before we add currents
copy Purk_maind Purk_thickd
end
if (!({exists Purk_spinyd})) // Lets copy before we add currents
copy Purk_maind Purk_spinyd
end
copy Purk_CaT Purk_maind/CaT
addmsg Purk_maind Purk_maind/CaT VOLTAGE Vm
addmsg Purk_maind/CaT Purk_maind CHANNEL Gk Ek
setfield Purk_maind/CaT Gbar {{GCaTm}*surf}
copy Purk_KA Purk_maind/KA
addmsg Purk_maind Purk_maind/KA VOLTAGE Vm
addmsg Purk_maind/KA Purk_maind CHANNEL Gk Ek
setfield Purk_maind/KA Gbar {{GKAm}*surf}
copy Purk_Kdr Purk_maind/Kdr
addmsg Purk_maind Purk_maind/Kdr VOLTAGE Vm
addmsg Purk_maind/Kdr Purk_maind CHANNEL Gk Ek
setfield Purk_maind/Kdr Gbar {{GKdrm}*surf}
copy Purk_KM Purk_maind/KM
addmsg Purk_maind Purk_maind/KM VOLTAGE Vm
addmsg Purk_maind/KM Purk_maind CHANNEL Gk Ek
setfield Purk_maind/KM Gbar {{GKMm}*surf}
copy Purk_CaP Purk_maind/CaP
addmsg Purk_maind Purk_maind/CaP VOLTAGE Vm
addmsg Purk_maind/CaP Purk_maind CHANNEL Gk Ek
setfield Purk_maind/CaP Gbar {{GCaPm}*surf}
copy Purk_KC Purk_maind/KC
addmsg Purk_maind Purk_maind/KC VOLTAGE Vm
addmsg Purk_maind/KC Purk_maind CHANNEL Gk Ek
setfield Purk_maind/KC Gbar {{GKCm}*surf}
copy Purk_K2 Purk_maind/K2
addmsg Purk_maind Purk_maind/K2 VOLTAGE Vm
addmsg Purk_maind/K2 Purk_maind CHANNEL Gk Ek
setfield Purk_maind/K2 Gbar {{GK2m}*surf}
create Ca_concen Purk_maind/Ca_pool
setfield Purk_maind/Ca_pool tau {CaTau} \
B {1.0/(2.0*96494*shell_vol)} Ca_base {CCaI} \
thick {Shell_thick}
addmsg Purk_maind/CaT Purk_maind/Ca_pool I_Ca Ik
addmsg Purk_maind/CaP Purk_maind/Ca_pool I_Ca Ik
addmsg Purk_maind/Ca_pool Purk_maind/KC CONCEN Ca
addmsg Purk_maind/Ca_pool Purk_maind/K2 CONCEN Ca
create nernst Purk_maind/Ca_nernst
setfield Purk_maind/Ca_nernst Cin {CCaI} Cout {CCaO} valency {2} \
scale {1.0} T {37}
addmsg Purk_maind/Ca_pool Purk_maind/Ca_nernst CIN Ca
addmsg Purk_maind/Ca_nernst Purk_maind/CaP EK E
addmsg Purk_maind/Ca_nernst Purk_maind/CaT EK E
copy non_NMDA2 Purk_maind/climb
setfield Purk_maind/climb gmax {{G_cli_syn}*surf/2}
addmsg Purk_maind/climb Purk_maind CHANNEL Gk Ek
addmsg Purk_maind Purk_maind/climb VOLTAGE Vm
copy GABA2 Purk_maind/basket
setfield Purk_maind/basket gmax {{GB_GABA}*surf/2}
addmsg Purk_maind/basket Purk_maind CHANNEL Gk Ek
addmsg Purk_maind Purk_maind/basket VOLTAGE Vm
/* make thick dendrite prototype with fast Ca current */
/* similar to main dendrite but has CaP and no Kdr */
/* passive prototype already copied from Purk_maind */
copy Purk_CaT Purk_thickd/CaT
addmsg Purk_thickd Purk_thickd/CaT VOLTAGE Vm
addmsg Purk_thickd/CaT Purk_thickd CHANNEL Gk Ek
setfield Purk_thickd/CaT Gbar {{GCaTt}*surf}
copy Purk_CaP Purk_thickd/CaP
addmsg Purk_thickd Purk_thickd/CaP VOLTAGE Vm
addmsg Purk_thickd/CaP Purk_thickd CHANNEL Gk Ek
setfield Purk_thickd/CaP Gbar {{GCaPt}*surf}
copy Purk_KM Purk_thickd/KM
addmsg Purk_thickd Purk_thickd/KM VOLTAGE Vm
addmsg Purk_thickd/KM Purk_thickd CHANNEL Gk Ek
setfield Purk_thickd/KM Gbar {{GKMt}*surf}
copy Purk_KC Purk_thickd/KC
addmsg Purk_thickd Purk_thickd/KC VOLTAGE Vm
addmsg Purk_thickd/KC Purk_thickd CHANNEL Gk Ek
setfield Purk_thickd/KC Gbar {{GKCt}*surf}
copy Purk_K2 Purk_thickd/K2
addmsg Purk_thickd Purk_thickd/K2 VOLTAGE Vm
addmsg Purk_thickd/K2 Purk_thickd CHANNEL Gk Ek
setfield Purk_thickd/K2 Gbar {{GK2t}*surf}
create Ca_concen Purk_thickd/Ca_pool
setfield Purk_thickd/Ca_pool tau {CaTau} \
B {1.0/(2.0*96494*shell_vol)} Ca_base {CCaI} \
thick {Shell_thick}
addmsg Purk_thickd/CaT Purk_thickd/Ca_pool I_Ca Ik
addmsg Purk_thickd/CaP Purk_thickd/Ca_pool I_Ca Ik
addmsg Purk_thickd/Ca_pool Purk_thickd/KC CONCEN Ca
addmsg Purk_thickd/Ca_pool Purk_thickd/K2 CONCEN Ca
create nernst Purk_thickd/Ca_nernst
setfield Purk_thickd/Ca_nernst Cin {CCaI} Cout {CCaO} \
valency {2} scale {1.0} T {37}
addmsg Purk_thickd/Ca_pool Purk_thickd/Ca_nernst CIN Ca
addmsg Purk_thickd/Ca_nernst Purk_thickd/CaP EK E
addmsg Purk_thickd/Ca_nernst Purk_thickd/CaT EK E
for (i=1; i<=2; i = i+1)
copy GABA Purk_thickd/stell{i}
setfield Purk_thickd/stell{i} gmax {{G_GABA}/5*surf}
addmsg Purk_thickd/stell{i} Purk_thickd CHANNEL Gk Ek
addmsg Purk_thickd Purk_thickd/stell{i} VOLTAGE Vm
end
copy non_NMDA2 Purk_thickd/climb
setfield Purk_thickd/climb gmax {{G_cli_syn}*surf}
addmsg Purk_thickd/climb Purk_thickd CHANNEL Gk Ek
addmsg Purk_thickd Purk_thickd/climb VOLTAGE Vm
/* make spiny dendrite prototype with high threshold Ca current \
*/
/* passive prototype already copied from Purk_maind */
copy Purk_CaT Purk_spinyd/CaT
addmsg Purk_spinyd Purk_spinyd/CaT VOLTAGE Vm
addmsg Purk_spinyd/CaT Purk_spinyd CHANNEL Gk Ek
setfield Purk_spinyd/CaT Gbar {{GCaTd}*surf}
copy Purk_CaP Purk_spinyd/CaP
addmsg Purk_spinyd Purk_spinyd/CaP VOLTAGE Vm
addmsg Purk_spinyd/CaP Purk_spinyd CHANNEL Gk Ek
setfield Purk_spinyd/CaP Gbar {{GCaPd}*surf}
copy Purk_KM Purk_spinyd/KM
addmsg Purk_spinyd Purk_spinyd/KM VOLTAGE Vm
addmsg Purk_spinyd/KM Purk_spinyd CHANNEL Gk Ek
setfield Purk_spinyd/KM Gbar {{GKMd}*surf}
copy Purk_KC Purk_spinyd/KC
addmsg Purk_spinyd Purk_spinyd/KC VOLTAGE Vm
addmsg Purk_spinyd/KC Purk_spinyd CHANNEL Gk Ek
setfield Purk_spinyd/KC Gbar {{GKCd}*surf}
copy Purk_K2 Purk_spinyd/K2
addmsg Purk_spinyd Purk_spinyd/K2 VOLTAGE Vm
addmsg Purk_spinyd/K2 Purk_spinyd CHANNEL Gk Ek
setfield Purk_spinyd/K2 Gbar {{GK2d}*surf}
create Ca_concen Purk_spinyd/Ca_pool
setfield Purk_spinyd/Ca_pool tau {CaTau} \
B {1.0/(2.0*96494*shell_vol)} Ca_base {CCaI} \
thick {Shell_thick}
addmsg Purk_spinyd/CaP Purk_spinyd/Ca_pool I_Ca Ik
addmsg Purk_spinyd/CaT Purk_spinyd/Ca_pool I_Ca Ik
addmsg Purk_spinyd/Ca_pool Purk_spinyd/KC CONCEN Ca
addmsg Purk_spinyd/Ca_pool Purk_spinyd/K2 CONCEN Ca
create nernst Purk_spinyd/Ca_nernst
setfield Purk_spinyd/Ca_nernst Cin {CCaI} Cout {CCaO} \
valency {2} scale {1.0} T {37}
addmsg Purk_spinyd/Ca_pool Purk_spinyd/Ca_nernst CIN Ca
addmsg Purk_spinyd/Ca_nernst Purk_spinyd/CaP EK E
addmsg Purk_spinyd/Ca_nernst Purk_spinyd/CaT EK E
copy GABA Purk_spinyd/stell
setfield Purk_spinyd/stell gmax {{G_GABA}*surf}
addmsg Purk_spinyd/stell Purk_spinyd CHANNEL Gk Ek
addmsg Purk_spinyd Purk_spinyd/stell VOLTAGE Vm
end
/*********************************************************************/
function make_Purkinje_spines
/* separate function so we can have local variables */
/* one standard format, may be rescaled in attach_spines */
/* Reference: Harris KM, Stevens JK: Dendritic spines of rat
** cerebellar Purkinje cells: serial electron microscopy with
** reference to their biophysical characteristics. J Neurosci 8: p
** 4455-4469, 1988. */
float len, dia, surf, vol
/* make spine with average length and diameter */
/* make spine neck */
len = 0.66e-6
dia = 0.20e-6
surf = len*dia*{PI}
vol = len*dia*dia*{PI}/4.0
if (!({exists Purk_spine}))
create compartment Purk_spine
end
setfield Purk_spine Cm {{CM}*surf} \
Ra {4.0*{RA}*len/(dia*dia*{PI})} Em {ELEAK} \
initVm {EREST_ACT} Rm {{RMd}/surf} inject 0.0 x {len} dia {dia} \
len {len}
/* make spine head */
len = 0.00e-6
// derived from average surface
dia = 0.54e-6
surf = dia*dia*{PI}
create compartment Purk_spine/head
setfield Purk_spine/head Cm {{CM}*surf} Ra {8.0*{RA}/(dia*{PI})} \
Em {ELEAK} initVm {EREST_ACT} Rm {{RMd}/surf} inject 0.0 \
x {dia} dia {dia} len {len}
/* make a combined prototype: neck+head */
addmsg Purk_spine/head Purk_spine RAXIAL Ra Vm
addmsg Purk_spine Purk_spine/head AXIAL Vm
copy Purk_spine Purk_spine2
/* put non-NMDA channel on combined prototype */
copy non_NMDA Purk_spine/head/par
setfield Purk_spine/head/par gmax {{G_par_syn}*surf}
addmsg Purk_spine/head Purk_spine/head/par VOLTAGE Vm
addmsg Purk_spine/head/par Purk_spine/head CHANNEL Gk Ek
/* put non-NMDA channel on combined prototype */
copy non_NMDA2 Purk_spine2/head/par2
setfield Purk_spine2/head/par2 gmax {{G_par_syn}*surf}
addmsg Purk_spine2/head Purk_spine2/head/par2 VOLTAGE Vm
addmsg Purk_spine2/head/par2 Purk_spine2/head CHANNEL Gk Ek
end
/*********************************************************************/
end
|