Gap junction coupled network of striatal fast spiking interneurons (Hjorth et al. 2009)

 Download zip file 
Help downloading and running models
Accession:118389
Gap junctions between striatal FS neurons has very weak ability to synchronise spiking. Input uncorrelated between neighbouring neurons is shunted, while correlated input is not.
Reference:
1 . Hjorth J, Blackwell KT, Kotaleski JH (2009) Gap junctions between striatal fast-spiking interneurons regulate spiking activity and synchronization as a function of cortical activity. J Neurosci 29:5276-86 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell; Synapse; Channel/Receptor; Dendrite;
Brain Region(s)/Organism: Basal ganglia;
Cell Type(s): Neostriatum fast spiking interneuron;
Channel(s): I A; I_K,Na;
Gap Junctions: Gap junctions;
Receptor(s):
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS; MATLAB;
Model Concept(s): Activity Patterns; Ion Channel Kinetics; Synchronization; Detailed Neuronal Models;
Implementer(s): Hjorth, Johannes [hjorth at csc.kth.se];
Search NeuronDB for information about:  I A; I_K,Na; Gaba; Glutamate;
/
FSGJ_Hjorth2009
genesisScripts
a_channel.g *
ampa_channel.g *
cellMorphology.g *
channels.g
errorHandler.g *
fsConnect.g *
fsInhomogeneNeurons.g *
fsInputFromFile.g
fsInputInject.g *
fsNeuron.g *
fsSomaOutput.g *
gaba_channel.g *
k13_channel.g *
k3132_channel.g *
na_channel.g *
protodefsInhomogene.g
simFsMultiInhomogene.g
simFsMultiInhomogeneCurrentInjection.g
simFsMultiInhomogeneMeasureGJcurrent.g
                            
////////////////////////////////////////////////////////////////////////////
//
// Creates different types of input that is injected into a FS-cell
//
// Based on Genesis Cable-tutorial 
//
// Johannes Hjorth, august 2005
// hjorth@nada.kth.se
//
////////////////////////////////////////////////////////////////////////////


function makeInjectInput (name, pulseStart, pulseEnd, current)
  str name
  float pulseStart
  float pulseEnd
  float current

  echo "makeInjectInput "{name}

  str path = "/input/"@{name}

  if(!{exists /input})
    create neutral /input
  end

  create pulsegen {path}
  setfield {path} level1 {current} \
           width1 {pulseEnd-pulseStart} \
           delay1 {pulseStart}  

end

////////////////////////////////////////////////////////////////////////////

function makeInjectInputNoRepeat (name, pulseStart, pulseEnd, current, maxTime)
  str name
  float pulseStart
  float pulseEnd
  float current

  echo "makeInjectInput "{name}

  str path = "/input/"@{name}

  if(!{exists /input})
    create neutral /input
  end

  create pulsegen {path}
  setfield {path} level1 {current} \
           width1 {pulseEnd-pulseStart} \
           delay1 {pulseStart} \
           delay2 {maxTime}

end

////////////////////////////////////////////////////////////////////////////


function connectInjectInput(name, target)
  str name, target

  echo "connectInjectInput "{name}" "{target}

  str path = "/input/"@{name}
  
  addmsg {path} {target} INJECT output

end


////////////////////////////////////////////////////////////////////////////

// Loads spiketrain from file for later connection to FS cell

function loadSpikeTrain(fileName, inputName)
  str fileName
  str inputName

  str inputPath = "/insignal/"@{inputName}

  if(!{exists /insignal})
    create neutral /insignal
  end

  echo "Creating "{inputPath}
  create timetable {inputPath}

  setfield {inputPath} maxtime {maxTime} act_val 1.0 \
           method 4 fname {fileName}

  call {inputPath} TABFILL

  // Create spikes from timetable
  create spikegen {inputPath}/spikes
  setfield {inputPath}/spikes output_amp 1 thresh 0.5 abs_refract 0.0001
  addmsg {inputPath} {inputPath}/spikes INPUT activation

end

////////////////////////////////////////////////////////////////////////////

function connectSpikeTrain(inputName, cellPath, compType, channel, pCon)

  str inputName
  str cellPath
  str compType
  str channel   // ie, AMPA, GABA, NMDA...
  float pCon    // Probability that a compartment will recieve connection

  str srcPath
  str destPath

  int conCtr = 0

  // echo "Use /fs[] instead of /fs if you want to connect input to ALL cells"

  srcPath = "/insignal/"@{inputName}@"/spikes"

  foreach destPath ({el {cellPath}/{compType}#/{channel}_channel} \
                    {el {cellPath}/{compType}#/{compType}#/{channel}_channel})

    if({rand 0 1} < {pCon})
      //echo "Connecting "{srcPath}" with "{destPath}
      addmsg {srcPath} {destPath} SPIKE
      conCtr = {conCtr + 1}
    end
  end


  echo "Total of "{conCtr}" connections: "{srcPath}"->"{cellPath}"("{compType}" "{channel}")"
end


////////////////////////////////////////////////////////////////////////////


function connectNamedSpikeTrain(inputName, compPath, channel)

  str inputName
  str compType
  str channel   // ie, AMPA, GABA, NMDA...

  str srcPath
  str destPath

  int conCtr = 0

  // echo "Use /fs[] instead of /fs if you want to connect input to ALL cells"

  srcPath = "/insignal/"@{inputName}@"/spikes"
  destPath = {compPath}@"/"@{channel}@"_channel"

  addmsg {srcPath} {destPath} SPIKE

end


////////////////////////////////////////////////////////////////////////////


function clearSpikeTrainConnections(inputName)

  str inputName
  str inputPath = "/insignal/"@{inputName}@"/spikes"
  int msgCtr
  int msgNum


  msgCtr = {getmsg {inputPath} -out -count}

  echo "Clearing connections from "{inputPath}

  for(msgNum = 0; msgNum < msgCtr; msgNum = msgNum + 1)
    deletemsg {inputPath} 0 -out 
  end

end

////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////