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 L5/6 pyramidal 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 L5/6 pyramidal GLU cell; I Na,t; I K; I M; I K,Ca; I Sodium; I Calcium; I Potassium;
% Filename: simplifiedTopologies.m
%
% Calculate burstmeasure for all 23 simplified toplogies over a range of
% lengths, with both dendritic and somatic stimulation.
%
% Author:   Ronald A.J. van Elburg ,(RonaldAJ at vanelburg eu)
% Affiliation:
%           Department of Artificial Intelligence
%           Groningen University
%
%
close all
clear all

% Set path to location spike analysis script
addpath(genpath('./../analysis'))

FilenameBase='SimplifiedTopologies/Results/Sim';
FilenameBase2='SimplifiedTopologies/Results/IC';
FiguresNameBase='SimplifiedTopologies/Figures/';
offset=-1; % Offset 0 -> indices for .dat filenames start at 1, Offset -1 -> indices for .dat filenames start at 0
Filename='';
ISI_Cutoff=3000;
Analysis_Start=1000;

% Specify endianness
machineformat='l';

% Morphological parameter ranges
bStim =1:2;

% Morphological parameter ranges
Length_step=25;
Length_start=1000;
Length_end=3500;
Length_simrange=Length_start:Length_step:Length_end;
Length_plotrange=1:1:length(Length_simrange);

Topology_step=1;
Topology_start=1;
Topology_end=23;
Topology_simrange=Topology_start:Topology_step:Topology_end;
Topology_plotrange=1:23;

% Map ranges to reusable variables
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);

% Preallocate storage objects
spikes=cell(bStim(end),x_plot_size,y_plot_size);
tvec=cell(bStim(end),x_plot_size,y_plot_size);          %membrane potential vector: times
yvec=cell(bStim(end),x_plot_size,y_plot_size);          %membrane potential vector: membrane potential

f=zeros(bStim(end),x_plot_size,y_plot_size);             % frequency
B2=zeros(bStim(end),x_plot_size,y_plot_size);            % Burstmeasure
MeanISI=zeros(bStim(end),x_plot_size,y_plot_size);
IC=zeros(bStim(end),x_plot_size,y_plot_size);           % Input Conductance
MEP=zeros(bStim(end),x_plot_size,y_plot_size);          % Mean Electrotonic Pathlength
DendArea=zeros(bStim(end),x_plot_size,y_plot_size);

fMat=zeros(x_plot_size,y_plot_size);                     % frequency
ICMat=zeros(x_plot_size,y_plot_size);                   % Input Conductance
B2Mat=zeros(x_plot_size,y_plot_size);                   % Burstmeasure
DendAreaMat=zeros(x_plot_size,y_plot_size);
MepMat=zeros(x_plot_size,y_plot_size);                  % Mean Electrotonic Pathlength

Depth=zeros(bStim(end),y_plot_size);

for somaStimulus=bStim
    for y_coord=1:1:y_plot_size     % Topology
        for x_coord=1:1:x_plot_size % Length
            
            Filename=[FilenameBase,'_',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),'_ic.dat'];
            ic=nrn_vread(Filename,machineformat);
            IC(somaStimulus,x_coord,y_coord)=ic;
                        
            Filename=[FilenameBase2,'_',num2str(y_plotrange(y_coord)+offset),'_',num2str(x_plotrange(x_coord)+offset),'_da.dat'];
            da=nrn_vread(Filename,machineformat);
            DendArea(somaStimulus,x_coord,y_coord)=da;
            
            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);
           
            spikes{somaStimulus,x_coord,y_coord}=j4a_spikes_soma;
            
            f(somaStimulus,x_coord,y_coord)=spikeFrequency(j4a_spikes_soma(j4a_spikes_soma > Analysis_Start));
            
        end
        
        Depth(somaStimulus,y_coord)=y_simrange(y_plotrange(y_coord));
    end
end

%%
figure(6)
clf
bStim=2;

% Plot Membrane potential traces at fixed lengths (1750 um) and different topologies
tops4fig=[1,6,11,12,17,23];
for t=0:5
    subplot(11,10,2+t*5:5+t*5)
    Filename=[FilenameBase,'_VTraces_',num2str(tops4fig(t+1)-1),'_1_0_vtrace_soma_yvec.dat'];
    vm=nrn_vread(Filename,machineformat);
    Filename=[FilenameBase,'_VTraces_',num2str(tops4fig(t+1)-1),'_1_0_vtrace_soma_tvec.dat'];
    tsteps=nrn_vread(Filename,machineformat);
    plot(tsteps,vm)
    xlim([3000,4000])
    set(gca,'Visible','off')
end
scaleBar(3500,-70,100,100,'100 ms','100 mV');

% Plot Burstmeasure at fixed lengths (1750 um) and different topologies
subplot(22,3,24:3:39)
yvalues=zeros(23,1);
yvalues(:)=B2( bStim,31,:);
plot(1:23,yvalues,'k.')
xlim([0,24])
ylim([-0.1,1.1])


% Plot Membrane potential traces at fixed topology  (topology 1) and
% different lengths 1000:300:2900 um

subplot(22,5,[74:5:109,75:5:110])
% L_simrange=1000:100:4000;
L_plotrange=0:3:19;

hold on
for L_index=1:length(L_plotrange)
    Filename=[FilenameBase,'_T1_VTraces_0_1_',num2str(L_plotrange(L_index)),'_vtrace_soma_yvec.dat'];
    vm=nrn_vread(Filename,machineformat);
    Filename=[FilenameBase,'_T1_VTraces_0_1_',num2str(L_plotrange(L_index)),'_vtrace_soma_tvec.dat'];
    tsteps=nrn_vread(Filename,machineformat);
    plot(tsteps,vm-L_index*160)
    xlim([3000,4000])
    set(gca,'Visible','off')
end
scaleBar(3500,-470,100,100,'100 ms','100 mV');

% Plot B2 vs Length with Toplogy related offset 
subplot(11,5,[16+5:5:51,17+5:5:52,18+5:5:53])
hold on
NoOfColors=23;
vspace=0.05;

for y_coord=1:1:y_plot_size;
    ColorShift=mod(y_coord-1,NoOfColors)/(NoOfColors-1);
    plot(x_simrange(x_plotrange),B2( bStim,:,y_coord)+vspace*(23-y_simrange(y_plotrange(y_coord))),'-','Color',[1-ColorShift,ColorShift,ColorShift])
    
    set(gca,'Box','off')
    xlabel('Length')
    ylabel('Burstiness')
    ylim([-0.1,1.1+22*vspace])
end


%%
bStim=1;
figure(7)

clf

% Plot Membrane potential traces at fixed lengths (1900 um) and different topologies
tops4fig=[1,6,11,12,17,23];
for t=0:5
    subplot(11,10,2+t*5:5+t*5)
    Filename=[FilenameBase,'_VTraces_',num2str(tops4fig(t+1)-1),'_0_1_vtrace_soma_yvec.dat'];
    vm=nrn_vread(Filename,machineformat);
    Filename=[FilenameBase,'_VTraces_',num2str(tops4fig(t+1)-1),'_0_1_vtrace_soma_tvec.dat'];
    tsteps=nrn_vread(Filename,machineformat);
    plot(tsteps,vm)
    xlim([3000,4000])
    ylim([-80,70])
    set(gca,'Visible','off')
end
scaleBar(3500,-70,100,100,'100 ms','100 mV');

% Plot Burstmeasure at fixed lengths (1900 um) and different topologies
subplot(22,3,24:3:39)
    yvalues=zeros(23,1);
    yvalues(:)=B2( bStim,37,:);
    plot(1:23,yvalues,'k.')
    xlim([0,24])
    ylim([-0.1,1.1])

% Plot Membrane potential traces at fixed topology (topology 1) and
% different lengths 1000:400:3500 um
subplot(22,5,[74:5:109,75:5:110])
% L_simrange=1000:100:4000;
L_plotrange=0:4:25;

hold on
for L_index=1:length(L_plotrange)
    Filename=[FilenameBase,'_T1_VTraces_0_0_',num2str(L_plotrange(L_index)),'_vtrace_soma_yvec.dat'];
    vm=nrn_vread(Filename,machineformat);
    Filename=[FilenameBase,'_T1_VTraces_0_0_',num2str(L_plotrange(L_index)),'_vtrace_soma_tvec.dat'];
    tsteps=nrn_vread(Filename,machineformat);
    plot(tsteps,vm-L_index*160)
    xlim([2500,3500])
end
set(gca,'Visible','off')
scaleBar(3500,-470,100,100,'100 ms','100 mV');

% Plot B2 vs Length with Topology related offset 
subplot(11,5,[16+5:5:51,17+5:5:52,18+5:5:53])

hold on
NoOfColors=23;
vspace=0.05;

for y_coord=1:1:y_plot_size;
    ColorShift=mod(y_coord-1,NoOfColors)/(NoOfColors-1);
    plot(x_simrange(x_plotrange),B2( bStim,:,y_coord)+vspace*(23-y_simrange(y_plotrange(y_coord))),'-','Color',[1-ColorShift,ColorShift,ColorShift])

    set(gca,'Box','off')
    xlabel('Length')
    ylabel('Burstiness')
    xlim([1000,3500])
    ylim([-0.1,1.1+22*vspace])
end


%%
figure(10)
clf
bStim=[1,2];
titles={'Dendritic stimulation','Somatic stimulation'};
FirstVarMeshParams=Topology_simrange;
SecondVarMeshParams=Length_simrange;

% Meshing things up ...
[FirstVarMesh,SecondVarMesh] = meshgrid(FirstVarMeshParams, SecondVarMeshParams);

for somaStimulus=bStim
    startIndex=3*(3-somaStimulus)-2;
    endIndex=3*(3-somaStimulus);
    subplot(1,8,startIndex:endIndex)
    cla
    hold on
    fMat(:,:)=f( somaStimulus,:,:);
    ICMat(:,:)=IC( somaStimulus,:,:);
    B2Mat(:,:)=B2( somaStimulus,:,:);
    DendAreaMat(:,:)=DendArea( 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',3);
    clabel(C,h,'Color','w')
    
    % Set the area to be plotted
    axis( [FirstVarMesh(1),FirstVarMesh(end),SecondVarMeshParams(1),SecondVarMeshParams(end)] )
    clabel(C,h,'Color','w')
    caxis auto
    caxis([0,1])
    title(titles{somaStimulus})
    if(somaStimulus==2)
         ylabel('Length')
    else
        set(gca,'Ytick',[])
    end
end


subplot(2,8,7:8)
cla
hold on
fMat(:,:)=f( somaStimulus,:,:);
ICMat(:,:)=IC( somaStimulus,:,:);
B2Mat(:,:)=B2( somaStimulus,:,:);
DendAreaMat(:,:)=DendArea( somaStimulus,:,:);
MepMat(:,:)=MEP( somaStimulus,:,:);

image(FirstVarMeshParams,SecondVarMeshParams,B2Mat,'CDataMapping','scaled')

% Set the area to be plotted
axis( [FirstVarMesh(1),FirstVarMesh(end),SecondVarMeshParams(1),SecondVarMeshParams(end)] )
clabel(C,h,'Color','w')
caxis auto
caxis([0,1])
colorbar('EastOutside','YTicklabel',{'B=0.0','B=0.5','B=1.0'})
set(gca,'Ytick',[],'Xtick',[])

 
%%
figure(1001)
clf
bStim=[1,2];
for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus)
        hold on
        plot(DendArea( somaStimulus,:,y_coord),B2( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        set(gca,'Box','off')
        xlabel('Dendritic Surface Area')
        ylabel('Burstiness')
        
    end
    xlim([min(DendArea(:)),max(DendArea(:))])
end

for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus+2)
        hold on
        plot(IC( somaStimulus,:,y_coord),B2( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        set(gca,'Box','off')
        xlabel('Input Conductance')
        ylabel('Burstiness')
    end
     xlim([min(IC(:)),max(IC(:))])
end

for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus+4)
        hold on
        plot(MEP( somaStimulus,:,y_coord),B2( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        
        set(gca,'Box','off')
        xlabel('MEP')
        ylabel('Burstiness') 
    end
     xlim([min(MEP(:)),max(MEP(:))])
end

%%
figure(1002)
clf
bStim=[1,2];
for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus)
        hold on
        plot(DendArea( somaStimulus,:,y_coord),f( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        set(gca,'Box','off')
        xlabel('Dendritic Surface Area')
        ylabel('Frequency')
        
    end
    xlim([min(DendArea(:)),max(DendArea(:))])
end

for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus+2)
        hold on
        plot(IC( somaStimulus,:,y_coord),f( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        set(gca,'Box','off')
        xlabel('Input Conductance')
        ylabel('Frequency')
    end
     xlim([min(IC(:)),max(IC(:))])
end

for somaStimulus=bStim
    for y_coord=1:1:y_plot_size;
        
        subplot(3,2,somaStimulus+4)
        hold on
        plot(MEP( somaStimulus,:,y_coord),f( somaStimulus,:,y_coord) ,'-','Color',[1-y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23,y_simrange(y_plotrange(y_coord))/23])
        
        set(gca,'Box','off')
        xlabel('MEP')
        ylabel('Frequency') 
    end
     xlim([min(MEP(:)),max(MEP(:))])
end


Loading data, please wait...