Fig_3.m~ 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. close all;
  2. % load('N:\kropff\analyisis\figs\fig2a\all open data_q95.db','-mat');
  3. % load('N:\kropff\analyisis\figs\fig2a\all car data_q95.db','-mat');
  4. % % % load('all open data.db','-mat');
  5. % % % load('all car data.db','-mat');
  6. % db_all.car=db_car;
  7. % db_all.open=db_open;
  8. % clear db_car; clear db_open;
  9. % addpath('/gpfs/work/kropff/common_functions/');
  10. dats={'ec', 'hc'};
  11. % Haccum={};
  12. w1=0; w2=3;
  13. jet2=interp1(1:64,jet,(1+w1:(64-w1-w2-1)/(64-1):64-w2));
  14. % load(['all ' dat ' data.db'],'-mat')
  15. dang=pi/50;
  16. dacc=20;%15;
  17. accbins=0:dacc:200; %350
  18. angbins=-pi:dang:pi; angbins(end)=[]; angbins=angbins+dang/2;
  19. cols=[ [1 0 0]; [255 175 3]/255];
  20. for d=1:2%1:2
  21. % dat='open';
  22. % dat='car';
  23. dat=dats{d};
  24. % close all;
  25. % close all;
  26. histlim=5*dacc;
  27. angbins=-pi:dang:pi; angbins(end)=[]; angbins=angbins+dang/2;
  28. Ha=zeros(numel(angbins),numel(accbins)); Oa=Ha;
  29. Hva=Ha;
  30. myfl=['data_fig_3.db'];
  31. nr=numel(unique(who('-file',myfl)));
  32. L={};
  33. L.Fr=cell(1,-1+2*numel(accbins));
  34. L.BFr=cell(-1+2*numel(accbins),7);
  35. % L.Occ=zeros(1,21);
  36. % L.Fr=L.Occ; L.BFr=L.Occ;
  37. for i=[1 3:nr] %2 hippocampal drive not in hippocampus
  38. rat=['rat' num2str(i)];
  39. db_all.(dat)=load(myfl,rat,'-mat');
  40. db_all.(dat)=db_all.(dat).(rat);
  41. sel=true(size(db_all.(dat).accel));
  42. if isempty(sel)
  43. warning([num2str(i) 'empty']);
  44. continue;
  45. end
  46. sel=sel&db_all.(dat).t_dist>5;
  47. sel1=conv(double(sel), ones(25,1)/25,'same');
  48. sel=sel1>.99;
  49. selx=abs(cos(db_all.(dat).anga-db_all.(dat).angv))>.9;
  50. xxx=db_all.(dat).accel.*sign(cos(db_all.(dat).anga-db_all.(dat).angv));
  51. frw=50*5;
  52. % [Hs,Occs,Hv]=freq_hist(db_all.(dat).accel(sel),mod(db_all.(dat).anga(sel)-db_all.(dat).angv(sel)+pi,2*pi)-pi,db_all.(dat).freq(sel)-fr_baseline(sel),accbins,angbins);
  53. [Hs,Occs,Hv]=freq_hist(db_all.(dat).accel(sel),mod(db_all.(dat).anga(sel)-db_all.(dat).angv(sel)+pi,2*pi)-pi,db_all.(dat).freq(sel),accbins,angbins);
  54. % Linear results
  55. rxxx=round(xxx/dacc);
  56. % L.Occ=arrayfun(@(x) sum(rxxx(sel & selx)==x),-10:10);
  57. ws=50*[1 2 5 10 20 50 200];
  58. aend=accbins(end)/dacc;
  59. for w=1:numel(ws)
  60. fr_baseline=nanconv(db_all.(dat).freq,ones(ws(w),1)/ws(w)); %10 s window
  61. for x=-aend:aend
  62. xj=aend+1+x;
  63. if w==1
  64. L.Fr{xj}=[L.Fr{xj}; db_all.(dat).freq(rxxx==x & sel & selx)];
  65. end
  66. L.BFr{xj,w}=[L.BFr{xj,w}; fr_baseline(rxxx==x & sel & selx)];
  67. end
  68. end
  69. Ha=Ha+Hs.*Occs; Oa=Oa+Occs; Hva=Hva+Hv.*Occs;
  70. Haccum{d}=Ha;
  71. Oaccum{d}=Oa;
  72. Laccum{d}=L;
  73. end
  74. end
  75. %%
  76. close all
  77. for d=1:2
  78. angbins(101)=angbins(1)+2*pi;
  79. f=figure;
  80. hold off;
  81. H=Haccum{d}; O=Oaccum{d};
  82. H(O>0)=H(O>0)./O(O>0);
  83. histlim=max(O(:))/10000;
  84. H(O<histlim)=nan;
  85. Hs=gauss_smoothing_2D(repmat(H,3,1),[1.5 3]);
  86. h1=size(H,1);
  87. Hs=Hs(h1+(1:h1),:);
  88. polar3d(flipud(Hs'),angbins(1),angbins(end),accbins(1),accbins(size(Hs,2)),1,'surf'); shading flat;view(2);
  89. axis equal; view([-90,90]); axis tight;
  90. hold on;
  91. colormap(jet2);
  92. cc=colorbar;
  93. set(cc,'YTick',7.5:.5:10);
  94. name=['fig2a_' dat];
  95. plot3([0 100],200*[1 1],[15 15],'k')
  96. caxis([8.1 9.7])
  97. name=['colormap_' dats{d}];
  98. end
  99. %%
  100. f=figure;
  101. accbins2=[fliplr(-accbins(2:end)) accbins];
  102. for d=2
  103. L=Laccum{d};
  104. sel=cellfun(@numel,L.Fr);
  105. sel=sel>max(sel)/10000;
  106. mn=cellfun(@mean,L.Fr);
  107. eom=cellfun(@std,L.Fr)./sqrt(cellfun(@numel,L.Fr));
  108. errorbar(accbins2(sel),mn(sel),eom(sel),'Color',cols(d,:));
  109. hold on;
  110. plot(accbins2(sel),mn(sel),'Color',cols(d,:),'LineWidth',3);
  111. dat_acc=arrayfun(@(x) accbins2(x)*ones(size(L.Fr{x})),1:numel(L.Fr),'UniformOutput',0);
  112. end
  113. axis([-220 240 7.95 10]);
  114. set(gca,'YTick',6:.5:12)
  115. %%
  116. f=figure;
  117. accbins2=[fliplr(-accbins(2:end)) accbins];
  118. for d=2
  119. subplot(1,2,d)
  120. for j=[3 ]
  121. L=Laccum{d};
  122. L.Fr2=arrayfun(@(x) L.Fr{x}-L.BFr{x,j},1:numel(L.Fr),'UniformOutput',0);
  123. sel=cellfun(@numel,L.Fr2);
  124. sel=sel>max(sel)/10000 & abs(accbins2)<210;
  125. mn=cellfun(@mean,L.Fr2);
  126. eom=cellfun(@std,L.Fr2)./sqrt(cellfun(@numel,L.Fr2));
  127. errorbar(accbins2(sel),mn(sel),eom(sel),'Color',cols(d,:)*(j-1)/6);
  128. hold on;
  129. plot(accbins2(sel),mn(sel),'Color',cols(d,:)*(j-1)/6,'LineWidth',3);
  130. end
  131. axis([-220 240 -.25 2]);
  132. golden(2.5)
  133. set(gca,'YTick',-2:.5:12)
  134. dat_acc=arrayfun(@(x) accbins2(x)*ones(size(L.Fr2{x})),1:numel(L.Fr2),'UniformOutput',0);
  135. % [cr_neg,p_neg]=corr(cell2mat(dat_acc(sel & accbins2<0)'),cell2mat(L.Fr2(sel & accbins2<0)'))
  136. % [cr_neg,p_neg]=corr(accbins2(sel & accbins2<0)',mn(sel & accbins2<0)');
  137. lneg_bas = fitlm(accbins2(sel & accbins2<0)',mn(sel & accbins2<0)','linear')
  138. lpos_bas = fitlm(accbins2(sel & accbins2>0)',mn(sel & accbins2>0)','linear')
  139. end