function make_AMPA_channel_GHKCa(chanPath)
str chanPath
// Values from Wolfs model, original data Gotz et al 1997 (from NA),
// Chapman et al 2003
//float tau1 = 1.1e-3
//float tau2 = 5.75e-3
// Ding, Peterson, Surmeier 2008
if ({TEMPERATURE} == 35)
float tau1 = 1.9e-3
float tau2 = 4.8e-3
else
float tau1 = 1.9e-3*2
float tau2 = 4.8e-3*2
end
float gmax = 80e-12 // Calculated from Ding et al 2008, Wolf Old: 593e-12
float Ek = 0.0
create synchan {chanPath}
addfield {chanPath} gmax_satur
setfield {chanPath} tau1 {tau1} tau2 {tau2} gmax {gmax} Gk 0 Ek {Ek} z {setSynBoundary} // NOTE!!! I have modified the source code
// z = 1 , single synapse model
// Modification to account for AMPA Ca's reversal potential
echo "Using separate Erev (from GHK) for Ca-part of AMPA current"
create ghk {chanPath}/GHK
// Using lower Ca conc, when replicating experiment:
// BurnashevZhouNeherSakmann1995.pdf (Fig 9A)
// Fraction of AMPA current in range 0.58 - 5.8 %
setfield {chanPath}/GHK Cout 2 // Carter & Sabatini 2004 uses 2mM, wolf 5mM
// Kerr & Plenz 2004 uses 1.6mM
setfield {chanPath}/GHK valency 2.0
setfield {chanPath}/GHK T {temperature}
end
function addAMPAchannelGHKCa(compPath, chanType,chanName,caBuffer,gbar)
// chanType: proto type in the /library
// chanName: new Name
str compPath, chanName, caBuffer,chanType
float gbar
//str caBuffer = "CaTbuf"
// Use the following info to tune the fraction of Ca-current
// Carter and Sabatini 2004 (p 488)
// Ca_AMPA/Ca_NMDA = 2.4 +/- 0.6 (at 10 ms) for -80mV
// Ca_AMPA/Ca_NMDA = 0.4 +/- 0.2 (at 200ms) for -80mV
// Ca_AMPA/Ca_NMDA = 0.3 +/- 0.1 (at 10 ms) for -60mV
// Ca_AMPA/Ca_NMDA = 0.02 +/- 0.03 (at 200ms) for -60mV
//
// Also:
// BurnashevZhouNeherSakmann1995.pdf (Fig 9A)
// Fraction of AMPA current in range 0.58 - 5.8 %
// float fracCaAMPA = 0.016 //0.0035 //0.005
float fracCaAMPA = 0.032 // suggested by Johannes :-)
copy /library/MSsynaptic/{chanType} {compPath}/{chanName}
addmsg {compPath} {compPath}/{chanName} VOLTAGE Vm
addmsg {compPath}/{chanName} {compPath} CHANNEL Gk Ek
// Set the new conductance
float len = {getfield {compPath} len}
float dia = {getfield {compPath} dia}
float pi = 3.141592653589793
float surf = {len*dia*pi}
setfield {compPath}/{chanName} gmax {gbar*(1-fracCaAMPA)}
// GHK object needs conductance times surface area in Gk message
create table {compPath}/{chanName}/surfMultiplication
// Set up the table with one element, that contains surface area / 9
call {compPath}/{chanName}/surfMultiplication TABCREATE 1 1 1
// float magicFactorY = 3.78e-8 //47
float magicFactorY = 1.2e-8 // Fig 4-C,Cater and Sabatini, 2004. [Ca]_ampa = [Ca]_nmda at Vm = -80 mV
// GHK wants permeability scaled by surface area
setfield {compPath}/{chanName}/surfMultiplication \
table->table[0] {fracCaAMPA/(1-fracCaAMPA)*magicFactorY} \
step_mode TAB_IO
// We tuned it to soma-sized compartments, but made an error...
//
// // GHK wants permeability scaled by surface area
// setfield {compPath}/{chanName}/surfMultiplication \
// table->table[0] {surf*fracCaAMPA/(1-fracCaAMPA)*magicFactorY} \
// step_mode TAB_IO
addmsg {compPath}/{chanName} \
{compPath}/{chanName}/surfMultiplication PRD Gk
addmsg {compPath}/{chanName}/surfMultiplication \
{compPath}/{chanName}/GHK PERMEABILITY output
// addmsg {compPath}/{caBuffer} {compPath}/{chanName}/GHK CIN C
addmsg {compPath} {compPath}/{chanName}/GHK VOLTAGE Vm
// addmsg {compPath}/{chanName}/GHK {compPath}/{caBuffer} FINFLUX Ik 1
addmsg {compPath}/{chanName}/GHK {compPath} CHANNEL Gk Ek
if ({isa dif_shell {compPath}/{caBuffer}} ) // dif_shell
//echo spine calcium model is dif_shell
addmsg {compPath}/{chanName}/GHK {compPath}/{caBuffer} FINFLUX Ik 1
addmsg {compPath}/{caBuffer} {compPath}/{chanName}/GHK CIN C
elif ({isa Ca_concen {compPath}/{caBuffer}}) // Ca_conc
//echo spine calcium model is Ca_conc
addmsg {compPath}/{chanName}/GHK {compPath}/{caBuffer} fI_Ca Ik 1
addmsg {compPath}/{caBuffer} {compPath}/{chanName}/GHK CIN Ca
end
// If we decide to use hsolver then we need to add fix code here
// see nmda_channel_ghkCa.g for example.
end
|