-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathFigureAttractorWeights.m
143 lines (118 loc) · 4.72 KB
/
FigureAttractorWeights.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
% weight matrices of the attractors
% eric zilli - 20111117 - v1.0
%
% This script prequires that the necessary weight matrices generated by
% FuhsTouretzky2006.m, GuanellaEtAl2007.m, and BurakFiete2009.m have all
% saved to disk to make this figure. See the commented code after the
% opening comments in those scripts for the code to save the variables
% needed by this script.
%
% arrangement:
% columns: single cell one bump full grid moving N
% rows:
% Fu06 activity
% Fu06 net syn. input
% Gu07 activity
% Gu07 net syn. input
% Bu09 activity
% Bu09 net syn. input
%% Load variables
load data/Fu06_WeightFigure_vars.mat;
load data/Gu07_WeightFigure_vars.mat;
load data/Bu09_WeightFigure_vars.mat;
plotVars = {'Bu09_n1_netsyn','Bu09_bump_netsyn','Bu09_full_netsyn','Bu09_north_netsyn',...
'Bu09_n1_act','Bu09_bump_act','Bu09_full_act','Bu09_north_act',...
'Gu07_n1_netsyn','Gu07_bump_netsyn','Gu07_full_netsyn','Gu07_north_netsyn',...
'Gu07_n1_act','Gu07_bump_act','Gu07_full_act','Gu07_north_act',...
'Fu06_n1_netsyn','Fu06_bump_netsyn','Fu06_full_netsyn','Fu06_north_netsyn'...
'Fu06_n1_act','Fu06_bump_act','Fu06_full_act','Fu06_north_act'};
modelNames = {{'Burak and','Fiete 2009'},...
{'Guanella','et al. 2007'},...
{'Fuhs and','Touretzky 2006'}};
columnLabels = {{'Single cell','active'},...
{'Single bump','active'},...
{'Full pattern','active'},...
{'Moving','north'}};
panelLabels = {'(A)','(B)','(C)'};
%% Make the colormap
len = 256; % resolution of color map
keyPoints = linspace(0,1,7);
redPoints = [0 0.3 0.55 1 202/255 166/255 0.53];
greenPoints = [0 0.45 0.62 1 132/255 94/255 0];
bluePoints = [0.3 0.6 0.7 1 40/255 0/255 0];
BCWYR2 = [interp1(keyPoints,redPoints,linspace(0,1,len),'linear','extrap'); ...
interp1(keyPoints,greenPoints,linspace(0,1,len),'linear','extrap'); ...
interp1(keyPoints,bluePoints,linspace(0,1,len),'linear','extrap')]';
% Shift+scale matrix so its zero is at 0.5 (so we can multiply it by the
% length of the colormap to get the 0 point of the input matrix at the 0
% point in the colormap, which is halfway through its length). The first
% function actually plots the matrix, the second just returns it.
imagepn = @(v)image(len*(v./2/abs(eps+max(abs([max(max(v)) min(min(v))])))+0.5));
imagepnc = @(v)(len*(v./2/abs(eps+max(abs([max(max(v)) min(min(v))])))+0.5));
%% Figure options:
set(0,'defaultAxesFontName', 'Arial')
set(0,'defaultTextFontName', 'Arial')
% size on paper:
widthOnPaper = 18; % cm
heightOnPaper = 18; % cm
figure('units','centimeters','position',[1 1 widthOnPaper heightOnPaper],'color','w');
set(gcf, 'renderer', 'painter')
set(gcf, 'PaperUnits', 'centimeters');
set(gcf, 'PaperSize', [widthOnPaper heightOnPaper]);
set(gcf, 'PaperPositionMode', 'manual');
set(gcf, 'PaperPosition', [0 0 widthOnPaper heightOnPaper]);
colormap(BCWYR2);
% Variables for positioning plots
nRows = 6;
nCols = 5;
leftMargin = 0.03;
bottomMargin = 0.005;
lefts = leftMargin + 0.9*(0:nCols-1)/nCols;
bottoms = bottomMargin + 0.93*(0:nRows-1)/nRows;
width = 0.9/nCols;
height = 0.9/nRows;
for r=1:nRows
% First column is row labels:
axes('position',[0 bottoms(r) width height]);
axis off
xlim([0 1])
ylim([0 1])
% Label rows
if mod(r,2)==0
text(1.1,.5,{'Neural','activities'},'horizontalalignment','right','fontsize',8)
text(0.5,0,modelNames{r/2},'horizontalalignment','center','verticalalignment','middle','fontsize',11)
else
text(1.1,.5,{'Net synaptic','input'},'horizontalalignment','right','fontsize',8)
end
% Every other row has a panel label
if mod(r,2)==1
text(0.1, 2,...
panelLabels{4-(r+1)/2},...
'FontSize',10,...
'FontWeight','bold',...
'HorizontalAlignment','center');
end
% Remaining columns are data:
for c=1:(nCols-1)
ind = sub2ind([nCols-1 nRows],c,r);
axes('position',[width+lefts(c) bottoms(r) width*0.9 height]);
% I know, eval is not the greatest way to do this:
eval(sprintf('imagepn(%s);',plotVars{ind}))
axis equal
set(gca,'box','on','xtick',[],'ytick',[])
if r==nRows
% Draw column labels in first row
text(32,-16,columnLabels{c},'horizontalalignment','center','fontsize',11)
end
if r==nRows && c==(nCols-1)
% Draw colorbar
axes('position',[width+lefts(c)+width bottoms(r) width*0.1 height]);
imagesc((1:length(BCWYR2))')
set(gca,'ydir','normal')
axis off
text(1.75,0,'-','fontsize',9,'verticalalignment','middle')
text(1.75,0.5*length(BCWYR2),'0','fontsize',9,'verticalalignment','middle')
text(1.75,length(BCWYR2),'+','fontsize',9,'verticalalignment','middle')
end
end
end