ModelDB is moving. Check out our new site at The corresponding page is

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;
% [gapSrc, gapDest, conMat] = makeFSrandomNetwork(numFS, numGJ)
% This function generates the random GJ connections for a FS network
% numFS is the number of FS connections
% numGJ is the number of GJ per FS
% Use showFSnetwork(conMat) to visualize connections.

function [gapSrc, gapDest, conMat] = makeFSrandomNetwork(numFS, numGJ)

validMatrix = 0;
randCtr = 0;

while(~validMatrix && randCtr < 100) 

  conMat = zeros(numFS,numFS);
  validCons = ones(numFS,numFS);
  validCons = validCons - diag(diag(validCons));

  conNum = 1;

  while(nnz(validCons) > 0)
    validId = find(validCons);
    id = ceil(length(validId)*rand);
    conMat(validId(id)) = conNum;
    validCons(validId(id)) = 0;
    [y,x] = find(conMat == conNum);

    % Connections are symmetrical
    conMat(x,y) = conNum;
    validCons(x,y) = 0;
    % Take away the connections that are no longer possible
    % No diagonal elements
    % Row sum must be numGJ, same with column sum

    if(nnz(conMat(:,y)) >= numGJ)
       validCons(:,y) = 0; 

    if(nnz(conMat(:,x)) >= numGJ)
      validCons(:,x) = 0; 

    if(nnz(conMat(x,:)) >= numGJ)
      validCons(x,:) = 0;

    if(nnz(conMat(y,:)) >= numGJ)
      validCons(y,:) = 0;
    conNum = conNum + 1;
    % conMat
    % validCons
    % keyboard

  if(nnz(conMat) == numFS*numGJ)
    validMatrix = 1; 
    randCtr = randCtr + 1;  


if(nnz(conMat) ~= numFS*numGJ)
  disp(['Warning, should have ' num2str(numFS*numGJ) ' connections ' ...
        'but only have ' num2str(nnz(conMat))])    

GJctr = zeros(numFS,1);

for i=1:max(conMat(:))
  % Symmetric matrix, since GJ are two way connections
  [x,y] = find(conMat == i);
  x = x(1);
  y = y(1);
  % We number the neurons 1 to n in matlab, but genesis uses 0 to (n-1)
  gapSrc{i} = ['/fs[' num2str(x-1) ']/primdend' num2str(GJctr(x)+1)];
  gapDest{i} = ['/fs[' num2str(y-1) ']/primdend' num2str(GJctr(y)+1)];
  GJctr(x) = mod(GJctr(x),3)+1;
  GJctr(y) = mod(GJctr(y),3)+1;

Loading data, please wait...