CA1 pyramidal neuron: dendritic Ca2+ inhibition (Muellner et al. 2015)

 Download zip file 
Help downloading and running models
Accession:206244
In our experimental study, we combined paired patch-clamp recordings and two-photon Ca2+ imaging to quantify inhibition exerted by individual GABAergic contacts on hippocampal pyramidal cell dendrites. We observed that Ca2+ transients from back-propagating action potentials were significantly reduced during simultaneous activation of individual nearby GABAergic synapses. To simulate dendritic Ca2+ inhibition by individual GABAergic synapses, we employed a multi-compartmental CA1 pyramidal cell model with detailed morphology, voltage-gated channel distributions, and calcium dynamics, based with modifications on the model of Poirazi et al., 2003, modelDB accession # 20212.
Reference:
1 . Müllner FE, Wierenga CJ, Bonhoeffer T (2015) Precision of Inhibition: Dendritic Inhibition by Individual GABAergic Synapses on Hippocampal Pyramidal Cells Is Confined in Space and Time. Neuron 87:576-89 [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: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell;
Channel(s): I Calcium; I Sodium; I Potassium; I h;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s): Gaba;
Simulation Environment: NEURON;
Model Concept(s): Action Potentials; Dendritic Action Potentials; Active Dendrites; Calcium dynamics;
Implementer(s): Muellner, Fiona E [fiona.muellner at gmail.com];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; I h; I Sodium; I Calcium; I Potassium; Gaba;
% Compare length constants of simulated Ca2+-inhibition depending on
% distance from branchpoint
% ---
% Fiona Müllner, MPI Neurobiology
% Email: fiona.muellner at gmail.com

clearvars -except rootfolder
cd(sprintf('%s\\CA1_multi\\experiment\\branchpoint+',rootfolder))
load('BranchpointPositions.mat')
list=dir('simulationRes*');
branchn=size(dir('simulationRes*a1.mat'),1);
figure

cmap(1,:)=[0 1 0];
cmap(2,:)=[1 0 0];
cmap(3,:)=[0 0 1];

maxinh = 0.3;
AllLambda = zeros(size(list,1),3);
for ci=1:size(list,1)
    clearvars -except list ci maxinh tag cmap a AllLambda branchn rootfolder
    load(list(ci,1).name);
    
    distv1 = [distv(1:n/2)',distv(1:n/2)'];
    posv1 = posv;
    fbp=find(branchid(1:n/2-1)>1,1,'first')+1;
    if isempty(fbp)
        chan=n/2+1:n;
    else
        chan=n/2+1:n/2+fbp-1;
    end
    dist = distv1(chan);
    [~,s]=sort(dist);
    pos1=1; 
    yvect = dist(s)-posv1(pos1);
    conds = NaN;
    cond1 = 2;
    mv=0;
    ix=NaN;
    iy=NaN;
    while cond1<=length(condv) && mv<=maxinh
        time=1:length(timev);
        temp=1-squeeze(M(pos1,cond1,time,chan(s))./M(pos1,1,time,chan(s)));
        [mv,mp]=max(temp(:));
        if mv<=maxinh
            Inh = temp/mv;
            [ix,iy] = ind2sub(size(Inh),mp);
            conds = cond1;
        elseif maxinh==0 && cond1==2
            Inh = temp/mv;
            [ix,iy] = ind2sub(size(Inh),mp);
            conds = cond1;
        end
        cond1=cond1+1;
    end
    if ~isnan(iy)
        fa = find(a(:,1)==str2double(list(ci,1).name(15)));
        distbp = posv(pos1) - a(fa,2);
        newx = yvect;
        resultv = Inh(ix,:);
        sel1=(~isnan(resultv)).*(newx>=0)==1;
        [estimates1] = exp_nooffset(newx(sel1),resultv(sel1));
        sel1=(~isnan(resultv)).*(newx<=0).*(newx>=-distbp)==1;
        hold off
        plot(newx,resultv,'*-')
        if sum(sel1)>1
            [estimates2] = exp_nooffset(newx(sel1),resultv(sel1));
            hold all
            plot(newx(newx<=0),exp(-newx(newx<=0)*estimates2),'-k');
            line(-distbp*[1 1],[0 1])
        else
            estimates2=NaN;
        end
        AllLambda(ci,:)=[distbp,1/estimates1,1/estimates2];
    else
        disp(filen);
    end
end

v1 = reshape(AllLambda(:,1),size(AllLambda,1)/branchn,branchn);
v2 = reshape(AllLambda(:,2),size(AllLambda,1)/branchn,branchn);
v3 = reshape(AllLambda(:,3),size(AllLambda,1)/branchn,branchn);
for j=1:branchn
    [~,s]=sort(v1(:,j));
    subplot(2,1,1)
    plot(v1(s,j),v2(s,j),'-')
    hold all
    subplot(2,1,2)
    plot(v1(s,j),-v3(s,j),'-')
    hold all
end
subplot(2,1,1)
set(gca,'box','off')
xlabel('Distance from branchpoint [um]')
ylabel('Length constant distal [um]')
legend('terminal','terminal','terminal','oblique','Location','NorthWest')
legend 'boxoff'
set(gca,'ylim',[10 2000])
set(gca,'YScale','log')

subplot(2,1,2)
set(gca,'box','off')
xlabel('Distance from branchpoint [um]')
ylabel('Length constant proximal [um]')
legend('267','157','358','229','Location','SouthEast')
legend 'boxoff'
set(gca,'ylim',[10 2000])
set(gca,'YScale','log')


Loading data, please wait...