defaults close all npatterns=10 nruns =10 %CONDITION='multiL'; %ISI=60 spks = zeros(npatterns, npyrs, nruns); pops = zeros(npatterns, npyrs, nruns); corr_spk = zeros(npatterns, npatterns, nruns); corr_pop = zeros(npatterns, npatterns, nruns); branch_syns = zeros(ninputs, npyrs*nbranches, nruns); br_hists = zeros(ninputs, 12, nruns); clustering = zeros(ninputs, nruns); brstrengths = zeros(ninputs, npyrs*nbranches); brweights = zeros(ninputs, npyrs*nbranches, nruns); nrnweights = zeros(ninputs, npyrs, nruns); brweightcors = zeros(ninputs, ninputs, nruns); brsyncors= zeros(ninputs, ninputs, nruns); nrnweightcors = zeros(ninputs, ninputs, nruns); brcommon = zeros(ninputs, ninputs, nruns); clust_all = {}; clust_all = cell(9,1); for run = 1:nruns sprintf('./data/%s_%d_%d/spikesperpattern.dat', CONDITION, ISI,run-1) spk = load( sprintf('./data/%s_%d_%d/spikesperpattern.dat', CONDITION, ISI,run-1)); recallspikes = spk(:, 1:npyrs)/(stimduration/1000); % % figure() % imagesc(recallspikes'); % rsc = recallspikes' % rsc = diag(1./sum(rsc,2))*rsc % rsc(isnan(rsc)) =0 % % return; %hist(recallspikes(:),20); pop = recallspikes>CUTOFF; %Hz spks(:, :, run) = recallspikes; pops(:, :, run) = pop; corr_spk(:,:, run) = corrcoef(recallspikes'); %corr_pop(:,:, run) = corrcoef(pop'); %corr_pop(:,:, run) = corrcoef(pop'); for nk=1:10 for nl=1:10 corr_pop(nk,nl,run) = sum(pop(nk,:)&pop(nl,:)) / ((sum(pop(nk, :))+sum(pop(nl,:)) )/2); end end ff = sprintf('./data/%s_%d_%d/synstate.dat', CONDITION, ISI,run-1); ss = load(ff); for i=1:size(ss,1) bid=ss(i,2); nid=ss(i,3); srcid=ss(i,5); bstrength = ss(i,6); w=ss(i,7); if (srcid >= 0 && bid <= npyrs*nbranches) brweights(srcid+1, bid+1, run) = brweights(srcid+1, bid+1, run) + w; brstrengths(srcid+1, bid+1)=bstrength; nrnweights(srcid+1, nid+1,run) = nrnweights(srcid+1, nid+1,run) + w; end if (srcid >= 0 && bid <= npyrs*nbranches && w > 0.7) branch_syns(srcid+1, bid+1, run) = branch_syns(srcid+1, bid+1, run)+1; end end for i=1:npatterns bs = branch_syns(i, :, run); b = bs(bs>0); x = 1:12; [d, h] = hist(b, x); br_hists(i, :, run) = d; ss = sum(d(1:end)); if (ss>0) clustering(i,run) = sum(d(2:end))/ss; end end brweightcors(:, :, run) = corrcoef(brweights(:,:, run)'); brsyncors(:, :, run) = corrcoef(branch_syns(:,:, run)'); nrnweightcors(:, :, run) = corrcoef(nrnweights(:,:, run)'); brclust = branch_syns(:,:,run)>1; for nk=1:10 for nl=1:10 brcommon(nk,nl, run) = sum(brclust(nk,:)&brclust(nl,:))/(sum(brclust(nk,:)|(brclust(nl,:)))); end end brclust = branch_syns(:,:,run)>0; for nk=1:10 for nl=1:nk-1 brtot = branch_syns(nk, :, run) + branch_syns(nl, :, run); brl = brtot(find(brclust(nk,:)&brclust(nl,:))); clust_all{nk-nl} = [clust_all{nk-nl} brl]; %brcommon(nk,nl, run) = sum(brclust(nk,:)&brclust(nl,:))/(sum(brclust(nk,:)|(brclust(nl,:)))); end end end % figure(); % imagesc(pops(:,:,1)'); % colorbar() % %title('Firing rates per memory recall (Hz)'); % xlabel('Memory #'); % ylabel('Pyramidal Neuron #'); m = mean(corr_spk, 3); m_corr = m; s_corr = std(corr_spk, 0,3); figure(); imagesc(m, [-0.2, 1.0]); %colorbar() title('Similarity between population firing patterns'); axis off %xlabel('Memory #') %ylabel('Memory #') export_fig(sprintf('./figs/%s_ffsim.pdf',CONDITION), '-transparent') m = mean(corr_pop, 3)'; figure(); imagesc(m, [0, 1.0]); %colorbar(); axis off title('Population overlap between memories'); xlabel('Memory #') ylabel('Memory #') %colorbar() export_fig(sprintf('./figs/%s_popoverlap.pdf',CONDITION), '-transparent') b = zeros(npatterns, 2); for i=1:npatterns cors = sum(m .* tril(circshift(eye(npatterns), i))); cors = cors(1:npatterns-i); b(i,1) = mean(cors); b(i,2) = stderr(cors); end figure() bars_ovl = 100.0*b(1:end-2,1); bars_err = 100.0*b(1:end-2,2); barwitherr(100.0*b(1:end-2,2), 100.0*b(1:end-2,1), COL) xlabel('Hours between memories') ylabel('% Overlapping population') title('Overlap between populations') ylim([0,100]) export_fig(sprintf('./figs/%s_popsimbar.pdf',CONDITION), '-transparent') figure() m = mean(nrnweightcors, 3)'; imagesc(m, [-0.2, 1.0]); title('Similarity of synaptic projection patterns per neuron') axis off %colorbar() export_fig(sprintf('./figs/%s_nrnw.pdf',CONDITION), '-transparent') b = zeros(npatterns, 2); for i=1:npatterns cors = sum(m .* tril(circshift(eye(npatterns), i))); cors = cors(1:npatterns-i); b(i,1) = mean(cors); b(i,2) = stderr(cors); end figure() barwitherr(b(1:end-2,2), b(1:end-2,1), COL) xlabel('Hours between memories') ylabel('Average similarity') title('Similarity of synaptic projection patterns per neuron') %ylim([,0.8]) export_fig(sprintf('./figs/%s_nrnwbar.pdf',CONDITION), '-transparent') figure() m = mean(brweightcors, 3)'; imagesc(m, [-0.2, 1.0]); title('Similarity of synaptic projection patterns per branch') axis off %colorbar() export_fig(sprintf('./figs/%s_brw.pdf',CONDITION), '-transparent') b = zeros(npatterns, 2); for i=1:npatterns cors = sum(m .* tril(circshift(eye(npatterns), i))); cors = cors(1:npatterns-i); b(i,1) = mean(cors); b(i,2) = stderr(cors); end figure() barwitherr(b(1:end-2,2), b(1:end-2,1), COL) xlabel('Hours between memories') ylabel('Average similarity') title('Similarity of synaptic projection patterns per branch') %ylim([0,0.4]) export_fig(sprintf('./figs/%s_brwbar.pdf',CONDITION), '-transparent') figure() tp = sum(pops, 2)*100.0/npyrs; m_p = mean(tp, 3) s_p = std(tp, 0, 3) bar(m_p); hold on h=errorbar(m_p', s_p') set(h(1), 'color', 'red');set(h(1), 'LineStyle', 'None'); hold off; title('Active population per memory') %ylabel('Active Pyr. Neurons (%)') %xlabel('Memory #') figure() tp = sum(spks, 2)/npyrs; m_p = mean(tp, 3) s_p = std(tp, 0, 3) bar(m_p); hold on h=errorbar(m_p', s_p') set(h(1), 'color', 'red');set(h(1), 'LineStyle', 'None'); hold off; title('Avg Firing rate of pyramidal neurons') %ylabel('Firing Rate [Hz]') %xlabel('Memory #') if (0) figure() nmem =2 sb = mean(br_hists, 3); sbd = std(br_hists,0,3); bar(sb(nmem, :)) hold on h = errorbar(sb(nmem, :), sbd(nmem,:)); set(h(1), 'LineStyle', 'None'); title('Distribution of potentiated synapses per branch') xlabel('Number of potentiated synapses') ylabel('Number of branches') yl = ylim(); yl(1) = 0; ylim(yl); %saveas(gcf,'./figs/norep4.eps', 'epsc'); %imagesc(corrcoef(mp')); figure() m_clust = mean(clustering, 2) s_clust = std(clustering, 0, 2) bar(m_clust) hold on h = errorbar(m_clust, s_clust); set(h(1), 'LineStyle', 'None'); title('Clustered synapses per memory') xlabel('Memory number') ylabel('Percentage of clustered synapses') % figure() % m = mean(brweightcors, 3)'; % imagesc(m, [-0.2, 1.0]); % title('Correlation between branches') % colorbar() % %imagesc(corrcoef(mp')); figure() m = mean(brsyncors, 3)'; imagesc(m, [-0.2, 1.0]); %title('Correlation between branches') %colorbar() end figure() mm=sum(branch_syns(:,1:npyrs*nbranches,:)>0, 1); mean(mm(:)) std(mm(:)) xbins = [0:10]; mh = zeros(nruns,size(xbins,2)) for i=1:nruns [d,h] = hist(mm(:,:,i), xbins); mh(i, :) = d; end mh = mh/(npyrs*nbranches); barwitherr(std(mh,0,1), mean(mh, 1), COL) title(sprintf('Memories represented per branch')) ylabel('Probability') xlabel( 'Number of memories represented'); set(gca,'Xtick', [0:11], 'XTickLabel',[0 0:11]); export_fig(sprintf('./figs/%s_brr.pdf',CONDITION), '-transparent') figure() m = (mean(brcommon, 3)') ; imagesc(m, [0, 1.0]); title('% Branches with clusters of both memories') axis off %colorbar() export_fig(sprintf('./figs/%s_brcommon.pdf',CONDITION), '-transparent') b = zeros(npatterns, 2); for i=1:npatterns cors = sum(m .* tril(circshift(eye(npatterns), i))); cors = cors(1:npatterns-i); b(i,1) = mean(cors); b(i,2) = stderr(cors); end figure() barwitherr(100.*b(1:end-2,2), 100.*b(1:end-2,1), COL) xlabel('Hours between memories') ylabel('% branches with clusters') title('% Branches with clusters of both memories') %ylim([,0.8]) export_fig(sprintf('./figs/%s_brcommon_bar.pdf',CONDITION), '-transparent') brovl_err = 100.*b(1:end-2,2); brovl_mean = 100.*b(1:end-2,1); figure; cc=winter(12); nn = [1,2,3,4,5,6,7,8,9]; color = [0,0,1]; for i=1:length(nn) ncase = nn(i); %diff = diffs(ncase); %aa = mean(histCSUS(:,ncase,:)); %bb = stderr(histCSUS(:,ncase,:)); %aa = aa(:); %bb =bb(:); aa = histc(clust_all{i}, [1:20])/(10*(10-i)); plot(aa, 'Color', cc(ncase,:)); hold on end ylim([0,2000]); xlim([0,15]); ylabel('Number of clusters of both memories'); xlabel('Synapses per cluster'); legend({'1 hour', '2 hours', '3 hours', '4', '5','6','7','8', '9'}); export_fig(sprintf('./figs/%s_clustering2.pdf',CONDITION), '-transparent') hold off;