i_Figure4_DecodingSucroseVersusAlcohol.m 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. %Plotting decoding analysis
  2. clear all;
  3. load('UnitMdlDSSucrose.mat')
  4. load('UnitMdlDSShuffSucrose.mat')
  5. load('UnitMdlPavSucrose.mat')
  6. load('UnitMdlPavShuffSucrose.mat')
  7. if ~exist('RPPSall'),load('RPPSall.mat'); end
  8. if ~exist('RPSall'),load('RPSall.mat'); end
  9. load('UnitMdlDSAlcohol.mat')
  10. load('UnitMdlDSShuffAlcohol.mat')
  11. load('UnitMdlPavAlcohol.mat')
  12. load('UnitMdlPavShuffAlcohol.mat')
  13. if ~exist('RvppaALL'),load('RvppaALL.mat'); end
  14. if ~exist('RvpppaALL'),load('RvpppaALL.mat'); end
  15. sucrose=[1 0.6 0.1];
  16. maltodextrin=[.9 0.3 .9];
  17. water=[0.00 0.75 0.75];
  18. total=[0.3 0.1 0.8];
  19. DS=[0 0.4470 0.7410];
  20. Pav=[0.8500 0.3250 0.0980];
  21. DSAlcohol=[0.4940 0.1840 0.5560];
  22. PavAlcohol=[0.9290 0.6940 0.1250];
  23. DSShuff=[0 0 0];
  24. PavShuff=[0 0 0];
  25. xaxis=linspace(-0.75,3.15,13);
  26. selection1=RPPSall.Structure==10 & RPPSall.CSPlusRatio>=.5 & (RPPSall.CSPlusRatio./(RPPSall.CSPlusRatio+RPPSall.CSMinusRatio))>=.7;
  27. selection2=RPSall.Structure==10 & RPSall.CSPlusRatio>=.5 & (RPSall.CSPlusRatio./(RPSall.CSPlusRatio+RPSall.CSMinusRatio))>=.7;
  28. selection3=RvpppaALL.Structure==10 & RvpppaALL.CSPlusRatio>=.5 & (RvpppaALL.CSPlusRatio./(RvpppaALL.CSPlusRatio+RvpppaALL.CSMinusRatio))>=.7;
  29. selection4=RvppaALL.Structure==10 & RvppaALL.CSPlusRatio>=.5 & (RvppaALL.CSPlusRatio./(RvppaALL.CSPlusRatio+RvppaALL.CSMinusRatio))>=.7;
  30. %% Figure code
  31. figure;
  32. %get average accuracy for each bin
  33. for i = 1:13
  34. AvgAccDSSucrose(1,i)=nanmean(UnitMdlAccDSSucrose(selection1,i)); %average accuracy DS
  35. SEMAccDSSucrose(1,i)=nanste(UnitMdlAccDSSucrose(selection1,i),1); %SEM
  36. AvgAccDSShuffSucrose(1,i)=nanmean(UnitMdlAccDSShuffSucrose(selection1,i)); %average accuracy DSShuff
  37. SEMAccDSShuffSucrose(1,i)=nanste(UnitMdlAccDSShuffSucrose(selection1,i),1); %SEM
  38. AvgAccPavSucrose(1,i)=nanmean(UnitMdlAccPavSucrose(selection2,i)); %average accuracy DSShuff
  39. SEMAccPavSucrose(1,i)=nanste(UnitMdlAccPavSucrose(selection2,i),1); %SEM
  40. AvgAccPavShuffSucrose(1,i)=nanmean(UnitMdlAccPavShuffSucrose(selection2,i)); %average accuracy DSShuff
  41. SEMAccPavShuffSucrose(1,i)=nanste(UnitMdlAccPavShuffSucrose(selection2,i),1); %SEM
  42. DSSigSucrose(1,i) = ttest2(UnitMdlAccDSSucrose(:,i),UnitMdlAccDSShuffSucrose(selection1,i),'Vartype','unequal'); %welch's t-test
  43. PavSigSucrose(1,i) = ttest2(UnitMdlAccPavSucrose(:,i),UnitMdlAccPavShuffSucrose(selection2,i),'Vartype','unequal'); %welch's t-test
  44. end
  45. %get normalized accuracy increase over shuffled for each neuron, then take
  46. %average and find SEM
  47. for i = 1:13
  48. for j = 1:length(UnitMdlAccDSSucrose)
  49. NormAccDSSucrose(j,i) = UnitMdlAccDSSucrose(j,i)-nanmean(nanmean(UnitMdlAccDSShuffSucrose(:,i)));
  50. end
  51. for k = 1:length(UnitMdlAccPavSucrose)
  52. NormAccPavSucrose(k,i) = UnitMdlAccPavSucrose(k,i)-nanmean(nanmean(UnitMdlAccPavShuffSucrose(:,i)));
  53. end
  54. AvgNormDSSucrose(1,i)=nanmean(NormAccDSSucrose(selection1,i)); %average norm accuracy DS
  55. SEMNormDSSucrose(1,i)=nanste(NormAccDSSucrose(selection1,i),1); %SEM
  56. AvgNormPavSucrose(1,i)=nanmean(NormAccPavSucrose(selection2,i)); %average norm accuracy DS
  57. SEMNormPavSucrose(1,i)=nanste(NormAccPavSucrose(selection2,i),1); %SEM
  58. %NormSig(1,i) = ttest2(NormAccDS(:,i),NormAccPav(:,i),'Vartype','unequal'); %welch's t-test
  59. [~,NormSig(1,i)] = ranksum(NormAccDSSucrose(selection1,i),NormAccPavSucrose(selection2,i)); %wilcoxon's ranksum test
  60. end
  61. %prepare shading
  62. upSEMDS=AvgAccDSSucrose+SEMAccDSSucrose;
  63. downSEMDS=AvgAccDSSucrose-SEMAccDSSucrose;
  64. upSEMPav=AvgAccPavSucrose+SEMAccPavSucrose;
  65. downSEMPav=AvgAccPavSucrose-SEMAccPavSucrose;
  66. upSEMDSShuff=AvgAccDSShuffSucrose+SEMAccDSShuffSucrose;
  67. downSEMDSShuff=AvgAccDSShuffSucrose-SEMAccDSShuffSucrose;
  68. upSEMPavShuff=AvgAccPavShuffSucrose+SEMAccPavShuffSucrose;
  69. downSEMPavShuff=AvgAccPavShuffSucrose-SEMAccPavShuffSucrose;
  70. upSEMNormDS=AvgNormDSSucrose+SEMNormDSSucrose;
  71. downSEMNormDS=AvgNormDSSucrose-SEMNormDSSucrose;
  72. upSEMNormPav=AvgNormPavSucrose+SEMNormPavSucrose;
  73. downSEMNormPav=AvgNormPavSucrose-SEMNormPavSucrose;
  74. %plotting decoder accuracy over time
  75. subplot(3,4,1); %accumbens
  76. hold on;
  77. plot(xaxis,AvgAccDSSucrose(1:13),'Color', DS,'linewidth',3);
  78. plot(xaxis,AvgAccDSShuffSucrose(1:13),'Color', DSShuff,'linewidth',3);
  79. %plot(xaxis,DSSigSucrose-0.51,'*','Color', 'k');
  80. patch([xaxis,xaxis(end:-1:1)],[upSEMDS,downSEMDS(end:-1:1)],DS,'EdgeColor','none');alpha(0.5);
  81. patch([xaxis,xaxis(end:-1:1)],[upSEMDSShuff,downSEMDSShuff(end:-1:1)],DSShuff,'EdgeColor','none');alpha(0.5);
  82. xlabel('Seconds post cue');
  83. legend('Sucrose DS','Shuffled','Location','best');
  84. %title('Sucrose DS single unit decoding accuracy');
  85. ylabel('Single Unit Decoding Accuracy');
  86. axis([-.75 3.15 0.45 0.75]);
  87. subplot(3,4,2); %Pav
  88. hold on;
  89. plot(xaxis,AvgAccPavSucrose(1:13),'Color', Pav,'linewidth',3);
  90. plot(xaxis,AvgAccPavShuffSucrose(1:13),'Color', PavShuff,'linewidth',3);
  91. %plot(xaxis,PavSig-0.51,'*','Color', 'k');
  92. patch([xaxis,xaxis(end:-1:1)],[upSEMPav,downSEMPav(end:-1:1)],Pav,'EdgeColor','none');alpha(0.5);
  93. patch([xaxis,xaxis(end:-1:1)],[upSEMPavShuff,downSEMPavShuff(end:-1:1)],PavShuff,'EdgeColor','none');alpha(0.5);
  94. xlabel('Seconds post cue');
  95. %title('Sucrose CS+ single unit decoding accuracy');
  96. legend('Sucrose CS+','Shuffled','Location','northeast');
  97. axis([-.75 3.15 0.45 0.75]);
  98. %get average accuracy for each bin
  99. for i = 1:13
  100. AvgAccDSAlcohol(1,i)=nanmean(UnitMdlAccDSAlcohol(selection3,i)); %average accuracy DS
  101. SEMAccDSAlcohol(1,i)=nanste(UnitMdlAccDSAlcohol(selection3,i),1); %SEM
  102. AvgAccDSShuffAlcohol(1,i)=nanmean(UnitMdlAccDSShuffAlcohol(selection3,i)); %average accuracy DSShuff
  103. SEMAccDSShuffAlcohol(1,i)=nanste(UnitMdlAccDSShuffAlcohol(selection3,i),1); %SEM
  104. AvgAccPavAlcohol(1,i)=nanmean(UnitMdlAccPavAlcohol(selection4,i)); %average accuracy DSShuff
  105. SEMAccPavAlcohol(1,i)=nanste(UnitMdlAccPavAlcohol(selection4,i),1); %SEM
  106. AvgAccPavShuffAlcohol(1,i)=nanmean(UnitMdlAccPavShuffAlcohol(selection4,i)); %average accuracy DSShuff
  107. SEMAccPavShuffAlcohol(1,i)=nanste(UnitMdlAccPavShuffAlcohol(selection4,i),1); %SEM
  108. DSSigAlcohol(1,i) = ttest2(UnitMdlAccDSAlcohol(:,i),UnitMdlAccDSShuffAlcohol(selection3,i),'Vartype','unequal'); %welch's t-test
  109. PavSigAlcohol(1,i) = ttest2(UnitMdlAccPavAlcohol(:,i),UnitMdlAccPavShuffAlcohol(selection4,i),'Vartype','unequal'); %welch's t-test
  110. end
  111. %get normalized accuracy increase over shuffled for each neuron, then take
  112. %average and find SEM
  113. for i = 1:13
  114. for j = 1:length(UnitMdlAccDSAlcohol)
  115. NormAccDSAlcohol(j,i) = UnitMdlAccDSAlcohol(j,i)-nanmean(nanmean(UnitMdlAccDSShuffAlcohol(:,i)));
  116. end
  117. for k = 1:length(UnitMdlAccPavAlcohol)
  118. NormAccPavAlcohol(k,i) = UnitMdlAccPavAlcohol(k,i)-nanmean(nanmean(UnitMdlAccPavShuffAlcohol(:,i)));
  119. end
  120. AvgNormDSAlcohol(1,i)=nanmean(NormAccDSAlcohol(selection3,i)); %average norm accuracy DS
  121. SEMNormDSAlcohol(1,i)=nanste(NormAccDSAlcohol(selection3,i),1); %SEM
  122. AvgNormPavAlcohol(1,i)=nanmean(NormAccPavAlcohol(selection4,i)); %average norm accuracy DS
  123. SEMNormPavAlcohol(1,i)=nanste(NormAccPavAlcohol(selection4,i),1); %SEM
  124. %NormSig(1,i) = ttest2(NormAccDS(:,i),NormAccPav(:,i),'Vartype','unequal'); %welch's t-test
  125. [~,NormSig(1,i)] = ranksum(NormAccDSAlcohol(selection3,i),NormAccPavAlcohol(selection4,i)); %wilcoxon's ranksum test
  126. end
  127. %prepare shading
  128. upSEMDS=AvgAccDSAlcohol+SEMAccDSAlcohol;
  129. downSEMDS=AvgAccDSAlcohol-SEMAccDSAlcohol;
  130. upSEMPav=AvgAccPavAlcohol+SEMAccPavAlcohol;
  131. downSEMPav=AvgAccPavAlcohol-SEMAccPavAlcohol;
  132. upSEMDSShuff=AvgAccDSShuffAlcohol+SEMAccDSShuffAlcohol;
  133. downSEMDSShuff=AvgAccDSShuffAlcohol-SEMAccDSShuffAlcohol;
  134. upSEMPavShuff=AvgAccPavShuffAlcohol+SEMAccPavShuffAlcohol;
  135. downSEMPavShuff=AvgAccPavShuffAlcohol-SEMAccPavShuffAlcohol;
  136. upSEMNormDS=AvgNormDSAlcohol+SEMNormDSAlcohol;
  137. downSEMNormDS=AvgNormDSAlcohol-SEMNormDSAlcohol;
  138. upSEMNormPav=AvgNormPavAlcohol+SEMNormPavAlcohol;
  139. downSEMNormPav=AvgNormPavAlcohol-SEMNormPavAlcohol;
  140. %plotting decoder accuracy over time
  141. subplot(3,4,5); %accumbens
  142. hold on;
  143. plot(xaxis,AvgAccDSAlcohol(1:13),'Color', DSAlcohol,'linewidth',3);
  144. plot(xaxis,AvgAccDSShuffAlcohol(1:13),'Color', DSShuff,'linewidth',3);
  145. %plot(xaxis,DSSigAlcohol-0.51,'*','Color', 'k');
  146. patch([xaxis,xaxis(end:-1:1)],[upSEMDS,downSEMDS(end:-1:1)],DSAlcohol,'EdgeColor','none');alpha(0.5);
  147. patch([xaxis,xaxis(end:-1:1)],[upSEMDSShuff,downSEMDSShuff(end:-1:1)],DSShuff,'EdgeColor','none');alpha(0.5);
  148. xlabel('Seconds post cue');
  149. legend('Alcohol DS','Shuffled','Location','northeast');
  150. %title('Alcohol DS single unit decoding accuracy');
  151. axis([-.75 3.15 0.45 0.75]);
  152. ylabel('Single Unit Decoding Accuracy');
  153. subplot(3,4,6); %Pav
  154. hold on;
  155. plot(xaxis,AvgAccPavAlcohol(1:13),'Color', PavAlcohol,'linewidth',3);
  156. plot(xaxis,AvgAccPavShuffAlcohol(1:13),'Color', PavShuff,'linewidth',3);
  157. %plot(xaxis,PavSig-0.51,'*','Color', 'k');
  158. patch([xaxis,xaxis(end:-1:1)],[upSEMPav,downSEMPav(end:-1:1)],PavAlcohol,'EdgeColor','none');alpha(0.5);
  159. patch([xaxis,xaxis(end:-1:1)],[upSEMPavShuff,downSEMPavShuff(end:-1:1)],PavShuff,'EdgeColor','none');alpha(0.5);
  160. xlabel('Seconds post cue');
  161. %title('Alcohol CS+ single unit decoding accuracy');
  162. legend('Alcohol CS+','Shuffled','Location','northeast');
  163. axis([-.75 3.15 0.45 0.75]);
  164. %plotting cdf plots for DS at time of max predictive power
  165. subplot(3,4,[3 4]);
  166. DSbin=4;
  167. [cdfDS,xDS] = ecdf(UnitMdlAccDSAlcohol(selection3,DSbin));
  168. [cdfPav,xPav] = ecdf(UnitMdlAccPavAlcohol(selection4,DSbin));
  169. [cdfDSsuc,xDSsuc] = ecdf(UnitMdlAccDSSucrose(selection1,DSbin));
  170. [cdfPavsuc,xPavsuc] = ecdf(UnitMdlAccPavSucrose(selection2,DSbin));
  171. %subplot(4,3,[3 6]);
  172. hold on;
  173. plot(xDSsuc,cdfDSsuc,'Color',DS,'linewidth',2);
  174. plot(xPavsuc,cdfPavsuc,'Color',Pav,'linewidth',2);
  175. plot(xDS,cdfDS,'Color',DSAlcohol,'linewidth',2);
  176. plot(xPav,cdfPav,'Color',PavAlcohol,'linewidth',2);
  177. plot([.5 .5], [0 1],'LineStyle',':','Color','k');
  178. plot([AvgAccDSSucrose(1,4) AvgAccDSSucrose(1,4)], [0 1],'Color',DS);
  179. plot([AvgAccDSAlcohol(1,4) AvgAccDSAlcohol(1,4)], [0 1],'Color',DSAlcohol);
  180. plot([AvgAccPavSucrose(1,4) AvgAccPavSucrose(1,4)], [0 1],'Color',Pav);
  181. plot([AvgAccPavAlcohol(1,4) AvgAccPavAlcohol(1,4)], [0 1],'Color',PavAlcohol);
  182. axis([0.25 1 0 1]);
  183. title(['Cumulative Distribution 0 to .3s']);
  184. xlabel('Decoding Accuracy')
  185. ylabel('Proportion of Population')
  186. legend('Sucrose DS','Sucrose CS+','Alcohol DS','Alcohol CS+','Location','best');
  187. %Plotting ensemble decoding
  188. clear all;
  189. DS=[0 0.4470 0.7410];
  190. Pav=[0.8500 0.3250 0.0980];
  191. DSAlcohol=[0.4940 0.1840 0.5560];
  192. PavAlcohol=[0.9290 0.6940 0.1250];
  193. NumNeurons=[1 5 10 25 50 100];
  194. load('PoolMdlAccDSSucrose.mat','PoolMdlAccDSSucrose')
  195. load('PoolMdlAccDSSucroseShuff.mat','PoolMdlAccDSSucroseShuff')
  196. load('PoolMdlAccPavSucrose.mat','PoolMdlAccPavSucrose')
  197. load('PoolMdlAccPavSucroseShuff.mat','PoolMdlAccPavSucroseShuff')
  198. load('PoolMdlAccDSAlcohol.mat','PoolMdlAccDSAlcohol')
  199. load('PoolMdlAccDSAlcoholShuff.mat','PoolMdlAccDSAlcoholShuff')
  200. load('PoolMdlAccPavAlcohol.mat','PoolMdlAccPavAlcohol')
  201. load('PoolMdlAccPavAlcoholShuff.mat','PoolMdlAccPavAlcoholShuff')
  202. for i=1:6
  203. AvgAccDSSucrose(i)=nanmean(PoolMdlAccDSSucrose{i,1}); %average accuracy
  204. SEMAccDSSucrose(i)=nanste(PoolMdlAccDSSucrose{i,1},1); %SEM
  205. AvgAccPavSucrose(i)=nanmean(PoolMdlAccPavSucrose{i,1}); %average accuracy
  206. SEMAccPavSucrose(i)=nanste(PoolMdlAccPavSucrose{i,1},1); %SEM
  207. AvgAccDSAlcohol(i)=nanmean(PoolMdlAccDSAlcohol{i,1}); %average accuracy
  208. SEMAccDSAlcohol(i)=nanste(PoolMdlAccDSAlcohol{i,1},1); %SEM
  209. AvgAccPavAlcohol(i)=nanmean(PoolMdlAccPavAlcohol{i,1}); %average accuracy
  210. SEMAccPavAlcohol(i)=nanste(PoolMdlAccPavAlcohol{i,1},1); %SEM
  211. AvgAccDSSucroseShuff(i)=nanmean(PoolMdlAccDSSucroseShuff{i,1}); %average accuracy
  212. SEMAccDSSucroseShuff(i)=nanste(PoolMdlAccDSSucroseShuff{i,1},1); %SEM
  213. AvgAccPavSucroseShuff(i)=nanmean(PoolMdlAccPavSucroseShuff{i,1}); %average accuracy
  214. SEMAccPavSucroseShuff(i)=nanste(PoolMdlAccPavSucroseShuff{i,1},1); %SEM
  215. AvgAccDSAlcoholShuff(i)=nanmean(PoolMdlAccDSAlcoholShuff{i,1}); %average accuracy
  216. SEMAccDSAlcoholShuff(i)=nanste(PoolMdlAccDSAlcoholShuff{i,1},1); %SEM
  217. AvgAccPavAlcoholShuff(i)=nanmean(PoolMdlAccPavAlcoholShuff{i,1}); %average accuracy
  218. SEMAccPavAlcoholShuff(i)=nanste(PoolMdlAccPavAlcoholShuff{i,1},1); %SEM
  219. end
  220. subplot(3,4,[7 8]);
  221. errorbar(NumNeurons, AvgAccDSSucrose,SEMAccDSSucrose,'Color',DS,'linewidth',2);
  222. hold on;
  223. errorbar(NumNeurons, AvgAccPavSucrose,SEMAccPavSucrose, 'Color',Pav,'linewidth',2);
  224. errorbar(NumNeurons, AvgAccDSAlcohol,SEMAccDSAlcohol, 'Color',DSAlcohol,'linewidth',2);
  225. errorbar(NumNeurons, AvgAccPavAlcohol,SEMAccPavAlcohol, 'Color',PavAlcohol,'linewidth',2);
  226. % errorbar(NumNeurons, AvgAccDSSucroseShuff,SEMAccDSSucroseShuff, 'Color','k');
  227. % errorbar(NumNeurons, AvgAccPavSucroseShuff,SEMAccPavSucroseShuff, 'Color','k');
  228. % errorbar(NumNeurons, AvgAccDSAlcoholShuff,SEMAccDSAlcoholShuff, 'Color','k');
  229. % errorbar(NumNeurons, AvgAccPavAlcoholShuff,SEMAccPavAlcoholShuff, 'Color','k');
  230. legend('Sucrose DS','Sucrose CS+','Alcohol DS','Alcohol CS+','Location','best');
  231. plot([-5 105], [.5 .5],'LineStyle',':','Color','k');
  232. xlabel('Neurons used');
  233. ylabel('Mean Accuracy (+/- SEM)');
  234. xticks([1 5 10 25 50 100])
  235. %xticklabels({'-3\pi','-2\pi','-\pi','0','\pi','2\pi','3\pi'})
  236. axis([-5 105 0.4 1]);
  237. %% STATS
  238. %Plotting single All decoding
  239. bins = 1; %number of bins
  240. binint = 0.3; %spacing of bins
  241. binstart = 0; %start time of first bin relative to event
  242. Dura=[0 0.3]; %size of bin used for decoding:
  243. NumNeurons=[1 5 10 25 50 100]; %matrix of how many neurons to use on each iteration
  244. repetitions=20; %how many times to run the analysis
  245. %make matrices that will include best bin at all levels
  246. A=[];
  247. B=[];
  248. C=[];
  249. D=[];
  250. A1=[];
  251. B1=[];
  252. C1=[];
  253. D1=[];
  254. for v=1:length(PoolMdlAccDSSucrose)
  255. A=cat(1,A,PoolMdlAccDSSucrose{v,1});
  256. B=cat(1,B,PoolMdlAccPavSucrose{v,1});
  257. C=cat(1,C,PoolMdlAccDSAlcohol{v,1});
  258. D=cat(1,D,PoolMdlAccPavAlcohol{v,1});
  259. A1=cat(1,A1,PoolMdlAccDSSucroseShuff{v,1});
  260. B1=cat(1,B1,PoolMdlAccPavSucroseShuff{v,1});
  261. C1=cat(1,C1,PoolMdlAccDSAlcoholShuff{v,1});
  262. D1=cat(1,D1,PoolMdlAccPavAlcoholShuff{v,1});
  263. end
  264. %ANOVA for effect of ensemble size, task and reward on accuracy 0-.3 sec
  265. size=[];
  266. for i=1:length(NumNeurons)
  267. size=cat(1,size,i*ones(repetitions,1));
  268. end
  269. size2=cat(1,size,size,size,size);
  270. %shuffd=cat(1,zeros(length(A),1),zeros(length(B),1),ones(length(C),1),zeros(length(D),1));
  271. reward=cat(1,ones(length(A)+length(B),1),zeros(length(C)+length(D),1));
  272. task=cat(1,ones(length(A),1),zeros(length(B),1),ones(length(C),1),zeros(length(D),1));
  273. [~,AccAnova,AccStats]=anovan(cat(1,A,B,C,D),{reward,task,size2},'varnames',{'reward','task','ens size'},'model','full');
  274. rewardtask=cat(1,zeros(length(A),1),ones(length(B),1),2*ones(length(C),1),3*ones(length(D),1));
  275. [~,AccAnova,AccStats]=anovan(cat(1,A,B,C,D),{rewardtask,size2},'varnames',{'reward and task','ens size'},'model','full');
  276. size=[];
  277. for i=1:length(NumNeurons)
  278. size=cat(1,size,i*ones(repetitions,1));
  279. end
  280. size1=cat(1,size,size,size,size,size,size,size,size);
  281. shuffd=cat(1,zeros(length(A)+length(B)+length(C)+length(D),1),ones(length(A)+length(B)+length(C)+length(D),1));
  282. reward=cat(1,ones(length(A)+length(B),1),zeros(length(C)+length(D),1),ones(length(A)+length(B),1),zeros(length(C)+length(D),1));
  283. task=cat(1,ones(length(A),1),zeros(length(B),1),ones(length(C),1),zeros(length(D),1),ones(length(A),1),zeros(length(B),1),ones(length(C),1),zeros(length(D),1));
  284. [~,AccAnova,AccStats]=anovan(cat(1,A,B,C,D,A1,B1,C1,D1),{reward,task,size1,shuffd},'varnames',{'reward','task','ens size','shuffled vs real'},'model','full');
  285. rewardtask=cat(1,zeros(length(A),1),ones(length(B),1),2*ones(length(C),1),3*ones(length(D),1));
  286. [~,AccAnova,AccStats]=anovan(cat(1,A,B,C,D),{rewardtask,size2},'varnames',{'reward and task','ens size'},'model','full');