Model of memory linking through memory allocation (Kastellakis et al. 2016)

 Download zip file 
Help downloading and running models
Accession:206249
Here, we present a simplified, biophysically inspired network model that incorporates multiple plasticity processes and explains linking of information at three different levels: (a) learning of a single associative memory (b) rescuing of a weak memory when paired with a strong one and (c) linking of multiple memories across time. By dissecting synaptic from intrinsic plasticity and neuron-wide from dendritically restricted protein capture, the model reveals a simple, unifying principle: Linked memories share synaptic clusters within the dendrites of overlapping populations of neurons
Reference:
1 . Kastellakis G, Silva AJ, Poirazi P (2016) Linking Memories across Time via Neuronal and Dendritic Overlaps in Model Neurons with Active Dendrites. Cell Rep 17:1491-1504 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron with dendritic subunits;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program; C or C++ program (web link to model);
Model Concept(s): Active Dendrites;
Implementer(s): Kastellakis, George [gkastel at gmail.com];
/
stdmodel
distributionPlot
exportfig
figs
mtrand
README
allgraphs.m
allrun.m
an_brtest.m
an_stats.m
anmulti.py
ansims.py
barwitherr.m *
btagstats.m *
CImg.h *
constructs.cpp
constructs.h
defaults.m
dir2.m *
getspikedata.m *
getsynstate.m *
getsynstate2.m *
graphs.m *
hist_percents.m *
hist_with_errs.m *
interact.m *
intexp_constructs.cpp
job_sims.sh
kurtos.m *
lamodel.cpp
LICENSE *
make_graphs.m *
Makefile *
matlab.mat *
mtest.py
mtrand.cpp *
mtrand.h *
multi.py
multistats.m *
nextplot.m *
pairstrong.m *
repeated.m *
rotateXLabels.m *
run_1.sh
run_2strong.sh
run_2weak.sh
run_3.sh
run_all.sh
run_brov.sh
run_brtest.sh
run_btag.sh
run_dir.sh
run_ep.sh
run_gp.sh
run_gp2.sh
run_mult.sh
run_Nsparse.sh
run_pairstrong.sh
run_rep.sh
run_sims.sh
run_sparse.sh
run_sparseS2.sh
runloc.sh
runmany.sh
S2sparse.m *
savefig.m *
scratch.m *
sensitivity.m *
stats.m *
stats.py *
stderr.m *
strong2.m *
strongstrong.m *
submit_lamodel.sh *
three.m *
trevrolls.m *
vis.py *
weastrong.m *
wxglmodel *
wxglmodel.cpp *
wxglmodel.h *
wxmodel.cpp *
wxmodel.h *
                            
close all
clear all
set(0,'DefaultAxesFontSize', 18)
set(0,'DefaultTextFontSize', 18)

nruns = 10
itvls = [60, 120, 180, 240]
pops = zeros(2, length(itvls), nruns);

conds = {'w1c','w2c','w1n', 'w2n', 'w1cL','w2cL'}

for cond = 1:length(conds)

    scond = conds{cond}
    for run = 1:10  
        for d = 1:length(itvls)
            itvl = itvls(d)
            fn=sprintf('N100.B40.I10.i6.P2.p1.T%d.S%d.%s', itvl, 1980+run-1,scond)

            stimduration = 2000;

            ar = sscanf(fn, 'N%d.B40.I10.i6.P%d.p1.T%d.S%d.w%d');

            nneurons = ar(1);
            npatterns = ar(2);
            interval = ar(3);
            seed = ar(4);
            weakmem = ar(5);
            npyrs = nneurons*0.8;

            ff = sprintf('./data/%s/spikes.dat', fn);
            f = fopen(ff);
            t = fgets(f);
            raster = zeros(nneurons, stimduration*npatterns*2);
            nid = 1;
            while (ischar(t))
               times = str2num(t);
               raster(nid, times) = 1;
               t = fgets(f);
               nid=nid+1;
            end
            fclose(f)

            %figure()
            %imagesc(raster)

            trainingspikes = zeros(npyrs, npatterns);
            recallspikes = zeros(npyrs, npatterns);

            for n=1:npyrs
                for j=1:npatterns
                    tstart = (j-1)*stimduration;
                    tend = tstart + stimduration;
                    trainingspikes(n,j) = sum(raster(n, tstart+1:tend));

                    tstart = npatterns*stimduration + (j-1)*stimduration;
                    tend = tstart + stimduration;
                    recallspikes(n,j) = sum(raster(n, tstart+1:tend));
                end
            end

            pop = sum(recallspikes > 30)/npyrs;

            ff = sprintf('./data/%s/synstate.dat', fn);
            ss = load(ff);
            for n=1:npatterns
                sb = ss(find(ss(:,5)==n & ss(:,7) > 1.4) , 2); % branch ids array
                sun = unique(sb);
                zz = [];
                for k=1:length(sun)
                    zz(end+1) = length(find(sb(:) == sun(k)));
                end
            end


            pops(:, d, run) = pop';

        end
    end

    figure()
    %title('Strong before weak')
    pops = pops*100.0
    mpop = mean(pops, 3)
    stdpop = std(pops, 0, 3)
    errorbar(mpop', stdpop')
    ylim([0,40])
    xlabel('Interval between memories (minutes)')
    ylabel('% of recruited pyramidal neurons')
    if (mod(cond ,2)==0)
        legend('Strong memory', 'Weak memory');
    else
        legend('Weak memory', 'Strong memory');
    end
    set(gca, 'XTick',[1:length(itvls)]);
    set(gca, 'XTickLabel',itvls);
    saveas(gcf, sprintf('./figs/BTAG_%s.eps', scond), 'epsc')


end