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

 Download zip file 
Help downloading and running models
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.
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]
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;
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];
Search NeuronDB for information about:  I A; I_K,Na; Gaba; Glutamate;
a_channel.g *
ampa_channel.g *
cellMorphology.g *
errorHandler.g *
fsConnect.g *
fsInhomogeneNeurons.g *
fsInputInject.g *
fsNeuron.g *
fsSomaOutput.g *
gaba_channel.g *
k13_channel.g *
k3132_channel.g *
na_channel.g *
// Simulation of a pair of FS neurons connected through gap junctions.
// Input is read from the INDATA directory.
// Usage: Use matlab script to generate indata
//        Call genesis code from matlab script
//        Parse outdata files and move them to storage directory
// Johannes Hjorth, Mars 2007

echo "### Start of script ###################"
echo "Johannes Hjorth ("
echo "Last updated: Mars 2007"
echo " "

// Read information about input data

str indataInfoFile = "INDATA/inputInfo.txt"
openfile {indataInfoFile} r

str indataType     = {readfile {indataInfoFile}}
float corrRudolph  = {readfile {indataInfoFile}}
float upFreq       = {readfile {indataInfoFile}}
float noiseFreq    = {readfile {indataInfoFile}}
float maxInputTime = {readfile {indataInfoFile}}
int allowVar       = {readfile {indataInfoFile}}
int randSeed       = {readfile {indataInfoFile}}
int numCellsInput  = {readfile {indataInfoFile}}
// Next data item is the gamma-shape of the curve, not used.

closefile {indataInfoFile}

// Read maxTime from parameter file!

str parFile = "INDATA/parameters.txt"
openfile {parFile} r

str outputName = {readfile {parFile}}
float maxTime  = {readfile {parFile}}
int numCells   = {readfile {parFile}}

if({numCells} != {numCellsInput})
  echo "Number of cells: "{numCells}, "Input generated for : "{numCellsInput}
  echo "Not enough input generated"

echo "Simulating "{numCells}" FS neurons for "{maxTime}" seconds"
echo "Indata used randSeed: "{randSeed}
echo "Writing output to "{outputName}

if({maxTime} > {maxInputTime})
  echo "ERROR: Only have input for "{maxInputTime}" seconds"

//simulation time and time steps
float spikeoutdt=1e-3
float vmOutDt=1e-4
float simDt=1e-5 //1e-6 needed for voltage clamp

// Number of synapse sites

int nAMPA = 127 // per cell
int nGABA = 93

//read in functions for creating and running simulations
include ../genesisScripts/protodefsInhomogene 
include ../genesisScripts/fsInputFromFile
include ../genesisScripts/fsSomaOutput
include ../genesisScripts/fsInputInject

setclock 1 {vmOutDt}
setclock 0 {simDt}

// Use the SPRNG random number generator
setrand -sprng
randseed {{randSeed} + 4711}

// Create neuron -- We use non-identical neurons, dont copy!
// echo "Creating "{numCells}" FS neurons"
// copyFsNeuron "/fs" {numCells}

// Connect input

int cellCtr

for(cellCtr = 0; cellCtr < numCells; cellCtr = cellCtr + 1)

  readInputFromFile "AMPAinsignal_"{cellCtr}"_" \
                    "INDATA/AMPAinsignal_"{{cellCtr}+1}"_" \

  readInputFromFile "GABAinsignal_"{cellCtr}"_" \
                    "INDATA/GABAinsignal_"{{cellCtr}+1}"_" \

  readInputFromFile "AMPAnoise_"{cellCtr}"_" \
                    "INDATA/AMPAnoise_"{{cellCtr}+1}"_" \

  readInputFromFile "GABAnoise_"{cellCtr}"_" \
                    "INDATA/GABAnoise_"{{cellCtr}+1}"_" \


for(cellCtr = 0; cellCtr < {numCells}; cellCtr = cellCtr + 1)
  connectFsInsignalToCell /fs[{cellCtr}] "/input/AMPAinsignal_"{cellCtr}"_" "AMPA"
  connectFsInsignalToCell /fs[{cellCtr}] "/input/GABAinsignal_"{cellCtr}"_" "GABA"
  connectFsInsignalToCell /fs[{cellCtr}] "/input/AMPAnoise_"{cellCtr}"_" "AMPA"
  connectFsInsignalToCell /fs[{cellCtr}] "/input/GABAnoise_"{cellCtr}"_" "GABA"

// Read location of gap junctions from parameter file

int numGaps = {readfile {parFile}}
int gapCtr

// Create gap junctions required in file

str readGapLine
str gapSrc
str gapDest
float gapRes

// Add normal somatic voltage recording
makeOutput "/fs" {outputName} {vmOutDt}

for(gapCtr = 0; gapCtr < numGaps; gapCtr = gapCtr + 1)
    readGapLine = {readfile {parFile} -linemode}

    gapSrc  = {getarg {arglist {readGapLine}} -arg 1}
    gapDest = {getarg {arglist {readGapLine}} -arg 2}
    gapRes  = {getarg {arglist {readGapLine}} -arg 3}

    if({gapRes} > 0)
      connectGap {gapSrc} {gapDest} {gapRes}

      echo {gapSrc}"-->"{gapDest}" res: "{gapRes}
      echo "WARNING: gapRes: "{gapRes}" ohm, no gap junction created"

    // Add extra recordings to calculate GJ current
    addCompartmentOutput {gapSrc} {outputName}
    addCompartmentOutput {gapDest} {outputName}


// TODO: Add GABA connections between FS neurons
// code by Lennart is available in fsConnect.g
// function: reciprocalGABAinhib

closefile {parFile}


// // 6 tertdend at 1.5e9 ohm --> 14.1% coupling
// float tertGapRes = 1.5e9
// // 1 soma-soma gapjunction at 2.6e9 ohm --> 14.1% coupling
// float somaGapRes = 2.6e9



step {maxTime} -t

clearOutput {outputName}

// close files

Loading data, please wait...