grabMRI.m 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. function [mNet,mNet_scrub,mNet_scrub_GSR,IOR] = grabMRI(TC_fullfile,GSR,scratch,rate_data)
  2. [matrix] = load(TC_fullfile);
  3. funcmat = double(matrix.matrix);
  4. ts.ts = funcmat;
  5. ts.tr = 2.48;
  6. ts.Nnodes = size(funcmat,2);
  7. ts.Ntimepoints = size(funcmat,1);
  8. ts.Nsubjects = 1;
  9. ts.NnodesOrig = ts.Nnodes;
  10. ts.NtimepointsPerSubject = size(funcmat,1);
  11. ts.DD = 1:ts.Nnodes;
  12. ts.UNK = [];
  13. netmats = nets_netmats_md(ts,1,0,'corr'); % correlation transformed 2 Z-scores
  14. mNet = reshape(netmats(1,:),[sqrt(length(netmats)) sqrt(length(netmats))]);
  15. [IOR_mNet] = InOutRatio(mNet);
  16. % Scrubbing
  17. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  18. ts_scrub = ts;
  19. if ~isempty(scratch)
  20. funcmat_scrub = ts_scrub.ts;
  21. funcmat_scrub(scratch,:) = [];
  22. ts_scrub.ts = funcmat_scrub;
  23. ts_scrub.Ntimepoints = size(funcmat_scrub,1);
  24. ts_scrub.NtimepointsPerSubject = size(funcmat_scrub,1);
  25. else
  26. funcmat_scrub = ts_scrub.ts;
  27. end
  28. netmats_scrub = nets_netmats_md(ts_scrub,1,0,'corr'); % correlation transformed 2 Z-scores
  29. mNet_scrub = reshape(netmats_scrub(1,:),[sqrt(length(netmats_scrub)) sqrt(length(netmats_scrub))]);
  30. IOR_mNet_scrub = InOutRatio(mNet_scrub);
  31. % Global signal regression
  32. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  33. if exist("GSR","var")
  34. if ~isempty(scratch)
  35. GSR(scratch)=[];
  36. end
  37. yadj = zeros(size(ts_scrub.ts));
  38. X = detrend(GSR,'constant');
  39. for v = 1:ts.Nnodes
  40. [Q, R]=qr(X,0);
  41. b = R\(Q'*funcmat_scrub(:,v));
  42. yvoxmodel = b(1)*X(:,1);
  43. % Adjust time-series
  44. yadj(:,v) = funcmat_scrub(:,v) - yvoxmodel;
  45. end
  46. ts_scrub.ts = double(yadj);
  47. end
  48. netmats_scrub_GSR = nets_netmats_md(ts_scrub,1,0,'corr'); % correlation transformed 2 Z-scores
  49. mNet_scrub_GSR = reshape(netmats_scrub_GSR(1,:),[sqrt(length(netmats_scrub_GSR)) sqrt(length(netmats_scrub_GSR))]);
  50. IOR_mNet_scrub_GSR = InOutRatio(mNet_scrub_GSR);
  51. IOR = IOR_mNet_scrub_GSR;
  52. if rate_data == 1
  53. % compute matrix plots
  54. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  55. figure('units','normalized','outerposition',[0 0 1 1])
  56. subplot(131)
  57. plotmat_values_rsfMRI(mNet,[],[-1 1],0,[]);
  58. hold on
  59. axis square;
  60. plot(get(gca,'xlim'),[mean(get(gca,'ylim')), mean(get(gca,'ylim'))],'k-','linewidth',2);
  61. plot([mean(get(gca,'xlim')), mean(get(gca,'xlim'))], get(gca,'ylim'),'k-','linewidth',2);
  62. title(strcat('raw mNet (IOR: ',num2str(round(IOR_mNet,2)),')'))
  63. subplot(132)
  64. plotmat_values_rsfMRI(mNet_scrub,[],[-1 1],0,[]);
  65. hold on
  66. axis square;
  67. plot(get(gca,'xlim'),[mean(get(gca,'ylim')), mean(get(gca,'ylim'))],'k-','linewidth',2);
  68. plot([mean(get(gca,'xlim')), mean(get(gca,'xlim'))], get(gca,'ylim'),'k-','linewidth',2);
  69. title({strcat('mNet scratched (IOR: ',num2str(round(IOR_mNet_scrub,2)),')')})
  70. subplot(133)
  71. plotmat_values_rsfMRI(mNet_scrub_GSR,[],[-1 1],0,[]);
  72. hold on
  73. axis square;
  74. plot(get(gca,'xlim'),[mean(get(gca,'ylim')), mean(get(gca,'ylim'))],'k-','linewidth',2);
  75. plot([mean(get(gca,'xlim')), mean(get(gca,'xlim'))], get(gca,'ylim'),'k-','linewidth',2);
  76. title(strcat('mNet scratched + GSR (IOR: ',num2str(round(IOR_mNet_scrub_GSR,2)),')'))
  77. end
  78. end