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;
% 1. readTenFSGJscanDataSquare  
% 2. makeTenFS3dGJscanPlots
% 3. makeTenFSJPSTH

close all

clear JPSTH

uNumGaps = unique(numGaps);

for iGap = 1:length(uNumGaps)
  % Hitta all data som har rätt antal GJ
  iMask = find(numGaps == uNumGaps(iGap));
  
  uGJres{iGap} = unique(gapResistance(iMask));
  
  for iRes = 1:length(uGJres{iGap})
    % Gå igenom varje resistans som finns för aktuella antal GJ
    iGJres = iMask(find(gapResistance(iMask) == uGJres{iGap}(iRes)));
    
    runIdx1 = iGJres;
    runIdx2 = iGJres;
    
    nCells = numCells(iGJres(1));

    % Gör en check som kollar alla kombos

    % combCtr = 1;
    
    Jflag = 0;
    
    for i=1:nCells
      for j=(i+1):nCells
        
        cellIdx1 = i;
        cellIdx2 = j;

        for k=1:length(runIdx1)
          a = makeJPST(savedSpikeTimes{runIdx1(k)}{cellIdx1}, ...
                         savedSpikeTimes{runIdx2(k)}{cellIdx2}, ...
                         maxTime(1));

          if(Jflag)
            JPSTH{iGap}{iRes} = JPSTH{iGap}{iRes} + a;
          else
            JPSTH{iGap}{iRes} = a;
            Jflag = 1;
          end
                     
          % combCtr = combCtr + 1;
        end
      end
    end
  end
end


for i=1:length(JPSTH)
  for iRes = 1:length(uGJres{i})  
    p = figure;
    spy(JPSTH{i}{iRes}(end:-1:1,:));
    title(['All FS, num Gaps: ' num2str(uNumGaps(i)) ...
           ' GJcond ' num2str(1/uGJres{i}(iRes))])
   
    saveas(p, ['FIGS/AllFScon-numGaps-' num2str(uNumGaps(i)) ...
               '-GJcond' num2str(1/uGJres{i}(iRes)) '.fig'], 'fig')
  end
end



%%% Do same but only with connected cells this time


clear JPSTHneigh

for iGap = 1:length(uNumGaps)
  % Hitta all data som har rätt antal GJ
  iMask = find(numGaps == uNumGaps(iGap));
  
  uGJres{iGap} = unique(gapResistance(iMask));
  
  for iRes = 1:length(uGJres{iGap})
    % Gå igenom varje resistans som finns för aktuella antal GJ
    iGJres = iMask(find(gapResistance(iMask) == uGJres{iGap}(iRes)));
    
    runIdx1 = iGJres;
    runIdx2 = iGJres;
    
    nCells = numCells(iGJres(1));

    % Gör en check som kollar alla kombos

    % combCtr = 1;
    
    Jflag = 0;
    
    
    for i=1:length(iGJres)
      for j=1:max(conMat{iGJres(i)}(:))
        [x,y] = find(conMat{iGJres(i)} == j);

        runIdx1 = iGJres(i);
        runIdx2 = iGJres(i);

        cellIdx1 = x(1);
        cellIdx2 = y(1);

        for k=1:length(runIdx1)
          a = makeJPST(savedSpikeTimes{runIdx1(k)}{cellIdx1}, ...
                         savedSpikeTimes{runIdx2(k)}{cellIdx2}, ...
                         maxTime(1));

          if(Jflag)
            JPSTHneigh{iGap}{iRes} = JPSTHneigh{iGap}{iRes} + a;
          else
            JPSTHneigh{iGap}{iRes} = a;
            Jflag = 1;
          end
                     
          % combCtr = combCtr + 1;
        end
      end
    end
  end
end

for i=1:length(JPSTHneigh)
  for iRes = 1:length(uGJres{i})  
    p = figure;
    spy(JPSTHneigh{i}{iRes}(end:-1:1,:));
    title(['Only connected FS, num Gaps: ' num2str(uNumGaps(i)) ...
           ' GJcond ' num2str(1/uGJres{i}(iRes))])

    saveas(p, ['FIGS/NeighFScon-numGaps-' num2str(uNumGaps(i)) ...
               '-GJcond' num2str(1/uGJres{i}(iRes)) '.fig'], 'fig')
  end
end



%%%%%%%%%%%%%%%%%%%%%
%
% Show the height of the bins also


if(0)

  for i=1:length(JPSTH)
    for iRes = 1:length(uGJres{i})  
      figure    
      surf(full(JPSTH{i}{iRes}))
      title(['All FS, num Gaps: ' num2str(uNumGaps(i)) ...
             ' GJcond ' num2str(1/uGJres{i}(iRes))])
    end
  end

  for i=1:length(JPSTHneigh)
    for iRes = 1:length(uGJres{i})  
      figure    
      surf(full(JPSTHneigh{i}{iRes}))
      title(['Only connected FS, num Gaps: ' num2str(uNumGaps(i)) ...
             ' GJcond ' num2str(1/uGJres{i}(iRes))])
    end
  end
end


if(0)
  % Histogram over # spikes in a bin, CODE NOT DONE
  clear SPhist

  for i=1:length(JPSTH)
    for j = 1:length(JPSTH{i})
      figure    
      
      for k = 1:full(max(max(JPSTH{i}{j})))
        % First index number of GJ
        % Second index GJ resistance
        % Third index is number of bins with k spikes in it
        SPhist{i}(j,k) = length(find(JPSTH{i}{j}==k));
      end     
          
      title(['All FS, num Gaps: ' num2str(uNumGaps(i)) ...
             ' GJcond ' num2str(1/uGJres{i}(iRes))])
    end
  end

end