function output=assess_vec_CC_b(input,whichgenes) %output=assess_vec_CC_b(input,whichgenes) input=full(input); whichgenes=full(whichgenes); whichgenes=logical(whichgenes); path(path,'/home/jesse') load /home/jesse/psdstuff/GOgenemat load /home/jesse/psdstuff/genelist GOgenemat=GOgenemat(whichgenes,:); ranks=tiedrank(input); ROC_using_sorted=nan(size(GOgenemat,2),1); for m=1:10127 TF=logical(GOgenemat(:,m)); TF=full(TF'); if sum(TF)>=20 & sum(TF)<=1000 fulllabels=TF; badlabels=(fulllabels==0); numingoer=sum(fulllabels); its=full(floor(sum(badlabels)/numingoer)); badlabels=find(badlabels); goodlabels=find(fulllabels); badlabels=badlabels(randperm(length(badlabels))); labels=[ones(numingoer,1);zeros(numingoer,1)]; output=0; for i=1:its temp_input=input([goodlabels badlabels((1+(its-1)*numingoer):(its*numingoer))]); temp_gene_list_n=gene_list_n([goodlabels badlabels((1+(its-1)*numingoer):(its*numingoer))]); [r,k]=sort(temp_input,'descend'); sorted_gene_list_n=temp_gene_list_n(k); indices=TF([goodlabels badlabels((1+(its-1)*numingoer):(its*numingoer))]); fraction_estimate=labels(randperm(length(labels))); fraction_estimate=sum(fraction_estimate(1:round(end/2))); %not actually a fraction output1=(sum(indices(k(1:round(fraction_estimate*2))))+sum(~indices(k((round(fraction_estimate*2)+1):end))))/sum(indices)/2; output=output+output1; end output=output/its; ROC_using_sorted(m)=output; end end output=ROC_using_sorted;