Impact of dendritic size and topology on pyramidal cell burst firing (van Elburg and van Ooyen 2010)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:114359
The code provided here was written to systematically investigate which of the physical parameters controlled by dendritic morphology underlies the differences in spiking behaviour observed in different realizations of the 'ping-pong'-model. Structurally varying dendritic topology and length in a simplified model allows us to separate out the physical parameters derived from morphology underlying burst firing. To perform the parameter scans we created a new NEURON tool the MultipleRunControl which can be used to easily set up a parameter scan and write the simulation results to file. Using this code we found that not input conductance but the arrival time of the return current, as measured provisionally by the average electrotonic path length, determines whether the pyramidal cell (with ping-pong model dynamics) will burst or fire single spikes.
Reference:
1 . van Elburg RA, van Ooyen A (2010) Impact of dendritic size and dendritic topology on burst firing in pyramidal cells. PLoS Comput Biol 6:e1000781 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Neocortex;
Cell Type(s): Neocortex V1 L6 pyramidal corticothalamic GLU cell;
Channel(s): I Na,t; I K; I M; I K,Ca; I Sodium; I Calcium; I Potassium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; MATLAB;
Model Concept(s): Activity Patterns; Bursting; Spatio-temporal Activity Patterns; Simplified Models; Active Dendrites; Influence of Dendritic Geometry; Detailed Neuronal Models; Methods;
Implementer(s): van Elburg, Ronald A.J. [R.van.Elburg at ai.rug.nl];
Search NeuronDB for information about:  Neocortex V1 L6 pyramidal corticothalamic GLU cell; I Na,t; I K; I M; I K,Ca; I Sodium; I Calcium; I Potassium;
% Filename: simplifiedTopologiesGKCaGActScanPanels.m
%
% Calculate burstmeasure from several pruned trees, and show trace from
% some example trees.
%
% Author: Ronald A.J. van Elburg ,(RonaldAJ at vanelburg eu)
% Affiliation:
%           Department of Artificial Intelligence
%           Groningen University
%
%

% Set path to location spike analysis script

close all
clear all

addpath(genpath('./../analysis'))


FilenameBase='SimplifiedTopologiesGKCaGActScan/Results/Sim';
FilenameBase2='SimplifiedTopologies/Results/IC';
FiguresNameBase='SimplifiedTopologiesGKCaGActScan/Figures/ScanPanel';

Filename='';
ISI_Cutoff=3000;
Analysis_Start=1000;

% Specify endianness
machineformat='l';

% Morphological parameter ranges
bStim =2:2; %bStim =1:2; used in paper

Length_step=500; %Length_step=25;used in paper
Length_start=1000;
Length_end=3500;
Length_simrange=Length_start:Length_step:Length_end;
Length_plotrange=1:1:length(Length_simrange);

Topology_step=11;%Topology_step=1; used in paper
Topology_start=1;
Topology_end=23;
Topology_simrange=Topology_start:Topology_step:Topology_end;
Topology_plotrange=1:3; %Topology_plotrange=1:23;; used in paper

x_plotrange=Length_plotrange;
x_simrange=Length_simrange;
x_plot_size=length(x_plotrange);

y_plotrange=Topology_plotrange;
y_simrange=Topology_simrange;
y_plot_size=length(y_plotrange);


% Meshing morphological parameter ranges ...
FirstVarMeshParams=Topology_simrange;
SecondVarMeshParams=Length_simrange;
[FirstVarMesh,SecondVarMesh] = meshgrid(FirstVarMeshParams, SecondVarMeshParams);

% Variables for storing simulation data
spikes=cell(bStim(end),x_plot_size,y_plot_size);
tvec=cell(bStim(end),x_plot_size,y_plot_size);
yvec=cell(bStim(end),x_plot_size,y_plot_size);

offset=-1;

f=zeros(bStim(end),x_plot_size,y_plot_size);
B2=zeros(bStim(end),x_plot_size,y_plot_size);
MeanISI=zeros(bStim(end),x_plot_size,y_plot_size);
IC=zeros(bStim(end),x_plot_size,y_plot_size);
MEP=zeros(bStim(end),x_plot_size,y_plot_size);
SCC=zeros(bStim(end),x_plot_size,y_plot_size);

DendArea=zeros(bStim(end),x_plot_size,y_plot_size);

fMat=zeros(x_plot_size,y_plot_size);
ICMat=zeros(x_plot_size,y_plot_size);
B2Mat=zeros(x_plot_size,y_plot_size);
SCCMat=zeros(x_plot_size,y_plot_size);

DendAreaMat=zeros(x_plot_size,y_plot_size);
MepMat=zeros(x_plot_size,y_plot_size);

Depth=zeros(bStim(end),y_plot_size);
B2Mean=zeros(bStim(end),y_plot_size);
B2SEM=zeros(bStim(end),y_plot_size);
fMean=zeros(bStim(end),y_plot_size);
fSEM=zeros(bStim(end),y_plot_size);

% Ion channel density factors
GKCaFactorRange=1:2;
GKCaFactorValues=0.7:0.6:1.3; % GKCaFactorValues=0.7:0.2:1.3; used in paper
NoOfRows=length(GKCaFactorRange);


GKmFactorRange =1:2;
GKmFactorValues=0.7:0.6:1.3; %GKmFactorValues=0.7:0.2:1.3; used in paper
NoOfCols=length(GKmFactorRange);



axes_handles=zeros(NoOfRows,NoOfCols);
%GNaFactorRange=1;
GNaFactorRange=1:2;

GNaFactorValues = 0.9:0.2:1.1; %GNaFactorValues=0.7:0.2:1.3; used in paper

bStim=[1,2]; % bStim=[1,2];used in paper

% Start figure
scrsz = get(0,'ScreenSize');
%figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])

for GNaFactor=GNaFactorRange;

   
   for somaStimulus=bStim
      FigureNo=600+100*(2-somaStimulus)+GNaFactor;
      
      figureHandle=figure(FigureNo);
      set(figureHandle,'PaperType','A4')
      set(figureHandle,'Position',[1 scrsz(4) scrsz(3)/2 scrsz(4)])
      
      FigureName=[FiguresNameBase,'GNa',num2str(10*GNaFactorValues(GNaFactor)),'somastim',num2str(somaStimulus)];
      
      clf
      myFigureTitle=['GKCa vs GKm Scan with ',num2str(100*GNaFactorValues(GNaFactor)), ' percent of original Na ionchannels'];
      

      for GKCaFactor=GKCaFactorRange
         for GKmFactor=GKmFactorRange
            
            ImageNo=GKCaFactor+NoOfRows*(GKmFactor-1);
            axes_handles(GKmFactor,GKCaFactor)=subplot(NoOfCols,NoOfRows,ImageNo);
            cla
            if(GKCaFactor==3 && GKmFactor==1)
                title(myFigureTitle)
            end
           if(GKCaFactor==1 )
                ylabel({['f_{Km}=',num2str(GKmFactorValues(GKmFactor))], 'Length (\mum)'})
            end
            
            if(GKmFactor==NoOfRows )
                xlabel({'Topology',['f_{KCa}=',num2str(GKCaFactorValues(GKCaFactor))]})
            end
            hold on
            % Read  subplot simulation data
            for y_coord=1:1:y_plot_size     % Topology
               for x_coord=1:1:x_plot_size % Length

                  Filename=[FilenameBase,'_',num2str(GNaFactor-1),'_',num2str(GKmFactor-1),'_',num2str(GKCaFactor-1),'_',num2str(y_plotrange(y_coord)+offset),'_',num2str(somaStimulus+offset),'_',num2str(x_plotrange(x_coord)+offset),'_spikes_spikes_soma.dat'];
                  j4a_spikes_soma=nrn_vread(Filename,machineformat);

                  Filename=[FilenameBase2,'_',num2str(y_plotrange(y_coord)+offset),'_',num2str(x_plotrange(x_coord)+offset),'_mep.dat'];
                  mep=nrn_vread(Filename,machineformat);
                  MEP(somaStimulus,x_coord,y_coord)=mep;

                  [B2(somaStimulus,x_coord,y_coord),MeanISI(somaStimulus,x_coord,y_coord)] = burstMeasure(j4a_spikes_soma(j4a_spikes_soma > Analysis_Start),ISI_Cutoff);
                  
                  if(isnan(B2(somaStimulus,x_coord,y_coord))==1)
                     %                 B2(somaStimulus,x_coord,y_coord)=-1;
                  end

                  spikes{somaStimulus,x_coord,y_coord}=j4a_spikes_soma;
                  
               end

               Depth(somaStimulus,y_coord)=y_simrange(y_plotrange(y_coord));
            end

            % Plot subplot
            B2Mat(:,:)=B2( somaStimulus,:,:);
            MepMat(:,:)=MEP( somaStimulus,:,:);

            image(FirstVarMeshParams,SecondVarMeshParams,B2Mat,'CDataMapping','scaled')
            [C,h] =contour(FirstVarMesh,SecondVarMesh,MepMat,0.18+(1-somaStimulus)*0.04:0.16:1,'w','Linewidth',2);
            clabel(C,h,'Color','w')
            set(gca, 'YTick',[1250,1750,2250,2750,3250])
            
            % Set the area to be plotted
            axis( [FirstVarMesh(1),FirstVarMesh(end),SecondVarMeshParams(1),SecondVarMeshParams(end)] )
            clabel(C,h,'Color','w')
            caxis([0,1])


         end
      end
   end
end


       


Loading data, please wait...