plot_parameterEstimates.m 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. clear; clc
  2. load(fullfile(ottBari2020_root, 'Data', 'Modeling', 'ModelFits', 'intBlocks_MLEfits.mat'));
  3. int_task = [os.Blocks] == 0;
  4. os = os(int_task);
  5. VP_mask = contains({os.Region}, 'VP');
  6. myColors = importColors_bb;
  7. VP_color = myColors.bluishGreen;
  8. NAc_color = myColors.vermillion;
  9. %% get relevant behavior models
  10. modelCriterion = 'AIC';
  11. plotFlag = false;
  12. models_of_interest_RPE = {'base','curr','mean'};
  13. models_of_interest_V = {'base','mean'};
  14. timePeriod = 'RD';
  15. bm_RD = select_RPEmods(os, timePeriod,'scoreToUse',modelCriterion,...
  16. 'plotModels_Flag',plotFlag,...
  17. 'particularModel',models_of_interest_RPE);
  18. timePeriod = 'cue';
  19. bm_cue = select_RPEmods(os, timePeriod,'scoreToUse',modelCriterion,...
  20. 'plotModels_Flag',plotFlag,...
  21. 'particularModel',models_of_interest_V);
  22. %% fraction of neurons
  23. timePeriod = 'RD';
  24. switch timePeriod
  25. case 'RD'
  26. bm = bm_RD;
  27. mToPlot = models_of_interest_RPE;
  28. case 'cue'
  29. bm = bm_cue;
  30. mToPlot = models_of_interest_V;
  31. otherwise
  32. error('timePeriod not found')
  33. end
  34. s_VP = struct();
  35. s_NAc = struct();
  36. s_VP.n = sum(VP_mask);
  37. s_NAc.n = sum(~VP_mask);
  38. frac_VP = [];
  39. frac_NAc = [];
  40. for m = mToPlot
  41. m = m{:};
  42. s_VP.(m) = sum(bm.(['mask_' m]) & VP_mask);
  43. s_NAc.(m) = sum(bm.(['mask_' m]) & ~VP_mask);
  44. frac_VP = [frac_VP s_VP.(m)/s_VP.n];
  45. frac_NAc = [frac_NAc s_NAc.(m)/s_NAc.n];
  46. end
  47. h_frac = figure;
  48. bar([frac_VP; frac_NAc],'stacked')
  49. legend(mToPlot,'interpreter','none')
  50. set(gca,'tickdir','out','xtick',1:2,'xticklabel',{'VP','NAc'})
  51. ylabel('Proportion of neurons')
  52. title(['Activity at ' timePeriod])
  53. %% parameter estimates (asymm model)
  54. timePeriod = 'RD';
  55. model = 'base';
  56. switch model
  57. case 'base_asymm'
  58. alphaPPE = getParameters_ott(os,timePeriod,model,'alphaPPE');
  59. alphaNPE = getParameters_ott(os,timePeriod,model,'alphaNPE');
  60. asymmInd = alphaPPE ./ (alphaPPE + alphaNPE);
  61. case 'base'
  62. alpha = getParameters_ott(os,timePeriod,model,'alpha');
  63. end
  64. slope = getParameters_ott(os,timePeriod,model,'slope');
  65. int = getParameters_ott(os,timePeriod,model,'intercept');
  66. model_name = ['mask_' model];
  67. n_VP = VP_mask & bm_RD.(model_name);
  68. n_NAc = ~VP_mask & bm_RD.(model_name);
  69. h_parameters = figure;
  70. for i = 1:5
  71. h_sp(i) = subplot(2,3,i); hold on
  72. end
  73. alpha_bins = linspace(0,1,20);
  74. switch model
  75. case 'base_asymm'
  76. i = 1;
  77. % alphaPPE
  78. subplot(h_sp(i))
  79. histogram(alphaPPE(n_VP), alpha_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  80. histogram(alphaPPE(n_NAc), alpha_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  81. set(h_sp(1),'tickdir','out')
  82. xlabel('$\alpha_{PPE}$','Interpreter','latex')
  83. ylabel('Probability')
  84. legend('VP','NAc')
  85. i = 2;
  86. % alphaNPE
  87. subplot(h_sp(i))
  88. histogram(alphaNPE(n_VP), alpha_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  89. histogram(alphaNPE(n_NAc), alpha_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  90. set(h_sp(2),'tickdir','out')
  91. xlabel('$\alpha_{NPE}$','Interpreter','latex')
  92. ylabel('Probability')
  93. legend('VP','NAc')
  94. % asymmetry
  95. i = 3;
  96. subplot(h_sp(i))
  97. histogram(asymmInd(n_VP), alpha_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  98. histogram(asymmInd(n_NAc), alpha_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  99. set(h_sp(2),'tickdir','out')
  100. xlabel('Asymmetry $(\frac{\alpha_{PPE}}{\alpha_{PPE} + \alpha_{NPE}})$','Interpreter','latex')
  101. ylabel('Probability')
  102. legend('VP','NAc')
  103. case 'base'
  104. i = 1;
  105. % alpha
  106. subplot(h_sp(i))
  107. histogram(alpha(n_VP), alpha_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  108. histogram(alpha(n_NAc), alpha_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  109. set(h_sp(1),'tickdir','out')
  110. xlabel('$\alpha$','Interpreter','latex')
  111. ylabel('Probability')
  112. legend('VP','NAc')
  113. i = 3;
  114. end
  115. i = i + 1;
  116. % slope
  117. subplot(h_sp(i))
  118. slope_bins = floor(min([slope(n_VP) slope(n_NAc)])) - 1:0.5:ceil(max([slope(n_VP) slope(n_NAc)])) + 1;
  119. histogram(slope(n_VP), slope_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  120. histogram(slope(n_NAc), slope_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  121. set(gca,'tickdir','out')
  122. xlabel('Slope','Interpreter','latex')
  123. ylabel('Probability')
  124. legend('VP','NAc')
  125. i = i + 1;
  126. % intercept
  127. subplot(h_sp(i))
  128. int_bins = floor(min([int(n_VP) int(n_NAc)])) - 1:0.5:ceil(max([int(n_VP) int(n_NAc)])) + 1;
  129. histogram(int(n_VP), int_bins, 'Normalization', 'probability', 'FaceColor', VP_color, 'EdgeColor', 'none')
  130. histogram(int(n_NAc), int_bins, 'Normalization', 'probability', 'FaceColor', NAc_color, 'EdgeColor', 'none')
  131. set(gca,'tickdir','out')
  132. xlabel('Intercept','Interpreter','latex')
  133. ylabel('Probability')
  134. legend('VP','NAc')
  135. sgtitle(strrep(['Model: ' model ' at ' timePeriod],'_',' '))