// This code creates a MS spine that can be added on any dendrite
//
// The initial purpose is to test if GABA synapses on the neck of the spine
// can block a bAP depolarisation from reaching the spine head.
//
//
// There are reconstructed MS spines in the DATA/ccdb.ucsd.edu directory.
function createSpine(spineName, spineLoc, \
neckLen, neckDia, nNeck, \
HeadLen, HeadDia, nHead)
str spineName // Name of spine
str spineLoc // Location of spine (compartment it is attached to)
float neckLen // Length of the spine neck
float neckDia // Diameter of spine neck
int nNeck // Number of neck compartments (1 or more)
float HeadLen // Length of spine head
float HeadDia // Diameter of spine head
int nHead // Number of compartments in spine head (2 or more),
// ie submembrane shell + rest of head
pushe {spineLoc}
int i
str parentComp = {spineLoc}
for(i = 0; i < {nNeck}; i = i + 1)
create compartment spineNeck[{i}]
addmsg spineNeck[{i}] {parentComp} RAXIAL Ra previous_state
addmsg {parentComp} spineNeck[{i}] AXIAL previous_state
makeCaBuffer CaTbuf {spineLoc}/spineNeck[{i}]
parentComp = spineNeck[{i}]
end
// One compartment is dedicated to submembrane, has separate name
int nHeadRest = {{nHead}-1}
for(i = 0; i < {nHeadRest}; i = i + 1)
create compartment spineHead[{i}]
addmsg spineHead[{i}] {parentComp} RAXIAL Ra previous_state
addmsg {parentComp} spineHead[{i}] AXIAL previous_state
makeCaBuffer CaNQRbuf {spineLoc}/spineHead[{i}]
createCaChannelsFromList "CaN CaNNOINACT CaQ" \
{spineLoc}/spineHead[{i}] \
CaNQRbuf
float SKcond = 0.145e4
copyAndConnectSKKchannels {spineLoc}/spineHead[{i}] CaNQRbuf {SKcond}
parentComp = spineHead[{i}]
end
// Submembrane compartment added seperately
create compartment spineHeadEnd
addmsg spineHeadEnd {parentComp} RAXIAL Ra previous_state
addmsg {parentComp} spineHeadEnd AXIAL previous_state
makeCaBuffer CaTbuf {spineLoc}/spineHeadEnd
float AMPAcond = 80e-12
float NMDAcond = 220e-12
addAMPAchannelGHKCa {spineLoc}/spineHeadEnd {AMPAcond}
addNMDAchannelGHKCa {spineLoc}/spineHeadEnd {NMDAcond}
createCaChannelsFromList "CaL13 CaL12 CaL12NOINACT" \
{spineLoc}/spineHeadEnd \
CaTbuf
pope {spineLoc}
end
function addGabaToSpine(spineName, spineLoc, neckIdx)
str spineName
str spineLoc
int neckIdx
float GABAcond = 750e-12
addGABAchannel {spineLoc}/spineNeck[{neckIdx}] {GABAcond}
end