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 *
                            
defaults;
npatterns=1;
actPpre= [];
actPpost = [];

histPpre = [];
histPpost = [];
histIpre = [];
histIpost = [];

prePop = [];;
postPop = [];


nruns=10;

brcase = [];
multiruns=1;
for ncase=1:4
    nbranches = ncase*10;
    brsynsH = zeros(nruns,10);
    brsynsK = zeros(nruns,10);
    nrnsyns = zeros(nruns,npyrs);

    nrnbins = [0:80];
    nrnsynsH = zeros(nruns, length(nrnbins));
    sumweights = zeros(nruns, 2);

    %%CONDITION='brtestL'

    brws = [];
    brsyns = zeros(nruns,npyrs*nbranches);
    nsbefore = [];
    nsafter= [];


    for run=1:nruns
        
 
        sfn=sprintf('./data/%s_%d_%d/spikes.dat', CONDITION, nbranches, run-1);
        fspk = fopen(sfn);
      
        nn =1;
        while ~feof(fspk)
           line = fgets(fspk);
           c = sscanf(line, '%d');

           for ns=1:multiruns
              tt= (ns-1)*stimduration;
              nsbefore(run, ns, nn) = length(find(c>tt & c<tt+stimduration));

              tt= (multiruns+ns)*stimduration;
              nsafter(run,  ns, nn)  = length(find(c>tt & c<tt+stimduration));
           end

           nn = nn + 1;
           if (nn>nneurons) 
               break;
           end
        end
        fclose(fspk);

        npat=0;
        %tend = npat*stimduration;
        %actpre  = sum( raster(1:npyrs, tend+1:tend+stimduration),2)/2; % for 2000 msec

        actpre = nsbefore(run, 1, 1:npyrs)/(stimduration/1000);

        %tend = 2*npatterns*stimduration+npat*stimduration;
        %actpost = sum( raster(1:npyrs, tend+1:tend+stimduration),2)/2; % for 2000 msec
        actpost = nsafter(run, 1, 1:npyrs)/(stimduration/1000);

        actPpre(ncase, run,  :) = actpre;
        actPpost(ncase, run, :) = actpost;

        [bw, bs, nw, ns] = getsynstate2(sprintf('./data/%s_%d_%d/synstate.dat', CONDITION, nbranches, run-1), npyrs, nbranches, ninputs);

        brws(run,:) = bw(1,:);
        brsyns(run,:) = bs(1,:);
       
        brsynsH(run,:) = hist(bs(1,:), [0:9]);
        brsynsK(run,:) = hist(bs(1,:), [0:9]);
        brsynsH(run,:) = brsynsH(run,:)/sum(brsynsH(run,:));

        nrnsyns(run,:) = ns(1,:);
        nrnsynsH(run,:) = hist(ns(1,:), nrnbins);
        nrnsynsH(run,:) = nrnsynsH(run,:)/sum(nrnsynsH(run,:));
        
    end
    brcase(ncase) = mean(brsyns(find(brsyns>0)));
    brcases(ncase) = std(brsyns(find(brsyns>0)))/sqrt(10);
end


ba = (mean(actPpre>CUTOFF,3));
bb = (mean(actPpost>CUTOFF,3));

figure
errorbar(mean(ba,2),std(ba,0,2));

hold on
errorbar(mean(bb,2),std(bb,0,2));
title(sprintf('Active population - %s',CONDITION))
legend('Pre', 'Post');