%% Find anomalies based on the segmentations % Load the GM mask as well as the subject path list. In our case that would % be the 2 files in the repository, but of course you need to construct % yours first. load('find_the_anomalies_github.mat') parfor i = 1:11308 i V1 = spm_vol(check_subject_list{i}); dummy_subj = spm_read_vols(V1); dummy_subj = reshape(dummy_subj,1,[]); dummy_subj = dummy_subj(GM_2_0_mask_0_1_threshold); Xmean(i,1) = mean(dummy_subj); Xstd(i,1) = std(dummy_subj); end Xanom = [Xmean Xstd]; Xanom = (Xanom-mean(Xanom))./std(Xanom); for i = 1:2 anoms{i,1} = find(abs(Xanom(:,i))>3); anoms{i,2} = find(abs(Xanom(:,i))>4); anoms{i,3} = find(abs(Xanom(:,i))>5); anoms{i,4} = find(abs(Xanom(:,i))>6); end dummy3 = []; dummy4 = []; dummy5 = []; dummy6 = []; for i = 1:2 dummy3 = [dummy3; anoms{i,1}]; dummy4 = [dummy4; anoms{i,2}]; dummy5 = [dummy5; anoms{i,3}]; dummy6 = [dummy6; anoms{i,4}]; end anoms_tab{1,1} = tabulate(dummy3); anoms_tab{1,2} = tabulate(dummy4); anoms_tab{1,3} = tabulate(dummy5); anoms_tab{1,4} = tabulate(dummy6); anoms_tab{1,1}(anoms_tab{1,1}(:,2)==0,:) = []; anoms_tab{1,2}(anoms_tab{1,2}(:,2)==0,:) = []; anoms_tab{1,3}(anoms_tab{1,3}(:,2)==0,:) = []; anoms_tab{1,4}(anoms_tab{1,4}(:,2)==0,:) = []; [~,ZZ] = sort(anoms_tab{1,1}(:,2)); anoms_tab_sorted{1,1} = flip(anoms_tab{1,1}(ZZ,:)); [~,ZZ] = sort(anoms_tab{1,2}(:,2)); anoms_tab_sorted{1,2} = flip(anoms_tab{1,2}(ZZ,:)); [~,ZZ] = sort(anoms_tab{1,3}(:,2)); anoms_tab_sorted{1,3} = flip(anoms_tab{1,3}(ZZ,:)); [~,ZZ] = sort(anoms_tab{1,4}(:,2)); anoms_tab_sorted{1,4} = flip(anoms_tab{1,4}(ZZ,:)); lala = anoms_tab_sorted{1,2}(~ismember(anoms_tab_sorted{1,2}(:,1),anoms_tab_sorted{1,3}(:,1)),:); for i = 1:length(lala) i spm_image('display',check_subject_list{lala(i,1)}) pause end %%% FINALLY anom_ids1 = find(abs(Xmean-mean(Xmean))./std(Xmean)>6); anom_ids2 = find(abs(Xstd-mean(Xstd))./std(Xstd)>6); anom_ids = unique([anom_ids1; anom_ids2]); for i = 1:length(lala) spm_image('display',check_subject_list{anom_ids(i)}) pause end