########################################################################### # # Supplementary file 1: R codes for identifying differentially correlated edges for MS # ############################################################################ #read in the expression data: expMS (frma pre-processed) and the protein-to-protein intersection information downloaded fro the string database: protein.links.v110.txt. new.junk1<-read.table("~/Downloads/protein.links.v11.0.txt", header=TRUE) #try on string data g<-as.character(union(unique(new.junk1[,1]), unique(new.junk1[,2]))) PPI<-matrix(0,nrow=length(g),ncol=length(g),dimnames=list(g,g)) for(i in 1:dim(PPI)[1]){ tmp<-as.character(new.junk1[as.character(new.junk1[,1])==rownames(PPI)[i],2]) PPI[i,tmp]<-rep(1,length(tmp)) } # PPI.try<-matrix(0,nrow=length(g),ncol=length(g),dimnames=list(g,g)) for(i in 1:dim(PPI.try)[1]){ tmp<-as.character(new.junk1[as.character(new.junk1[,1])==rownames(PPI.try)[i],2]) PPI.try[i,tmp]<-as.double(new.junk1[new.junk1[,1]==g[i] & new.junk1[,2]%in%tmp, 3]) } subject<-rep(1:25, each=5) status<-rep(c(0,1,1,0,1,0,0,0,1, 0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,1), each=5) status1<-c(0,1,1,0,1,0,0,0,1, 0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,1) PPI.try.MS<-PPI.try[intersect(rownames(PPI.try), rownames(expMS)), intersect(rownames(PPI.try), rownames(expMS))] #for time 1 c=0.6 PPI.new<-apply(PPI.try.MS, 1, function(x){ifelse(x>600, 1, 0)}) rsum<-rowSums(PPI.new) PPI.new1<-PPI.new[which(rsum>0),which(rsum>0) ] status1<-status1[-c(1,4, 8, 10, 13, 18, 20)] time<-rep(1:5, 18) #time point 1 expMS.t1<-expMS[,which(time==1)] expMS.t1<-expMS.t1[,-c(1,4, 8, 10, 13, 18, 20) ] cor.t1.r<-cor(t(expMS.t1[, which(status1==1)]), method=”spearman”) cor.t1.nr<-cor(t(expMS.t1[, which(status1==0)]), method=”spearman”) diff.t1<-apply((cor.t1.r-cor.t1.nr)*PPI.new1, 1, function(x){ifelse(x>c, 1, ifelse(x<0-c, -1, 0))}) diff.t11<-diff.t1[which(rowSums(diff.t1)!=0), which(rowSums(diff.t1)!=0)] junk<-list() for(i in 1:dim(diff.t11)[1]){ junk[[i]]<-names(diff.t11[i,])[which(diff.t11[i,]!=0)] } names(junk)<-rownames(diff.t11) junk.length<-sapply(junk, length) junk1<-junk[which(junk.length!=0)] junk.length<-junk.length[which(junk.length!=0)] junk2<-NULL for (i in 1:length(junk1)){ junk2<-c(junk2, rep(names(junk1)[i], junk.length[i])) } junk3<-unlist(junk1) pair.t1<-paste(junk2, junk3, sep="_") #time point 2 expMS.t2<-expMS[,which(time==2)] expMS.t2<-expMS.t2[,-c(1,4, 8, 10, 13, 18, 20) ] cor.t2.r<-cor(t(expMS.t2[, which(status1==1)]), method=”spearman”) cor.t2.nr<-cor(t(expMS.t2[, which(status1==0)]), method=”spearman”) diff.t2<-apply((cor.t2.r-cor.t2.nr)*PPI.new1, 1, function(x){ifelse(x>c, 1, ifelse(x<0-c, -1, 0))}) diff.t11<-diff.t2[which(rowSums(diff.t2)!=0), which(rowSums(diff.t2)!=0)] junk<-list() for(i in 1:dim(diff.t11)[1]){ junk[[i]]<-names(diff.t11[i,])[which(diff.t11[i,]!=0)] } names(junk)<-rownames(diff.t11) junk.length<-sapply(junk, length) junk1<-junk[which(junk.length!=0)] junk.length<-junk.length[which(junk.length!=0)] junk2<-NULL for (i in 1:length(junk1)){ junk2<-c(junk2, rep(names(junk1)[i], junk.length[i])) } junk3<-unlist(junk1) pair.t2<-paste(junk2, junk3, sep="_") #time 3 expMS.t3<-expMS[,which(time==3)] expMS.t3<-expMS.t3[,-c(1,4, 8, 10, 13, 18, 20) ] cor.t3.r<-cor(t(expMS.t3[, which(status1==1)]), method=”spearman”) cor.t3.nr<-cor(t(expMS.t3[, which(status1==0)]) , method=”spearman”) diff.t3<-apply((cor.t3.r-cor.t3.nr)*PPI.new1, 1, function(x){ifelse(x>c, 1, ifelse(x<0-c, -1, 0))}) diff.t11<-diff.t3[which(rowSums(diff.t3)!=0), which(rowSums(diff.t3)!=0)] junk<-list() for(i in 1:dim(diff.t11)[1]){ junk[[i]]<-names(diff.t11[i,])[which(diff.t11[i,]!=0)] } names(junk)<-rownames(diff.t11) junk.length<-sapply(junk, length) junk1<-junk[which(junk.length!=0)] junk.length<-junk.length[which(junk.length!=0)] junk2<-NULL for (i in 1:length(junk1)){ junk2<-c(junk2, rep(names(junk1)[i], junk.length[i])) } junk3<-unlist(junk1) pair.t3<-paste(junk2, junk3, sep="_") #time 4 expMS.t4<-expMS[,which(time==4)] expMS.t4<-expMS.t4[,-c(1,4, 8, 10, 13, 18, 20) ] cor.t4.r<-cor(t(expMS.t4[, which(status1==1)]), method=”spearman”) cor.t4.nr<-cor(t(expMS.t4[, which(status1==0)]), method=”spearman”) diff.t4<-apply((cor.t4.r-cor.t4.nr)*PPI.new1, 1, function(x){ifelse(x>c, 1, ifelse(x<0-c, -1, 0))}) diff.t11<-diff.t4[which(rowSums(diff.t4)!=0), which(rowSums(diff.t4)!=0)] junk<-list() for(i in 1:dim(diff.t11)[1]){ junk[[i]]<-names(diff.t11[i,])[which(diff.t11[i,]!=0)] } names(junk)<-rownames(diff.t11) junk.length<-sapply(junk, length) junk1<-junk[which(junk.length!=0)] junk.length<-junk.length[which(junk.length!=0)] junk2<-NULL for (i in 1:length(junk1)){ junk2<-c(junk2, rep(names(junk1)[i], junk.length[i])) } junk3<-unlist(junk1) pair.t4<-paste(junk2, junk3, sep="_") #time 5 expMS.t5<-expMS[,which(time==5)] expMS.t5<-expMS.t5[,-c(1,4, 8, 10, 13, 18, 20) ] cor.t5.r<-cor(t(expMS.t5[, which(status1==1)]), method=”spearman”) cor.t5.nr<-cor(t(expMS.t5[, which(status1==0)]), method=”spearman”) diff.t5<-apply((cor.t5.r-cor.t5.nr)*PPI.new1, 1, function(x){ifelse(x>c, 1, ifelse(x<0-c, -1, 0))}) diff.t11<-diff.t5[which(rowSums(diff.t5)!=0), which(rowSums(diff.t5)!=0)] junk<-list() for(i in 1:dim(diff.t11)[1]){ junk[[i]]<-names(diff.t11[i,])[which(diff.t11[i,]!=0)] } names(junk)<-rownames(diff.t11) junk.length<-sapply(junk, length) junk1<-junk[which(junk.length!=0)] junk.length<-junk.length[which(junk.length!=0)] junk2<-NULL for (i in 1:length(junk1)){ junk2<-c(junk2, rep(names(junk1)[i], junk.length[i])) } junk3<-unlist(junk1) pair.t5<-paste(junk2, junk3, sep="_") comm.pair<-(unique(intersect(intersect(intersect(intersect(pair.t1, pair.t2), pair.t3), pair.t4), pair.t5))) junk1<-unlist(strsplit(comm.pair, "_")) #get the values for different time points junk.list<-NULL for (j in 1:(length(junk1)/2-1)){ junk.list<-rbind(junk.list, c(junk1[j*2+1], junk1[j*2+2], round(cor.t1.r[junk1[j*2+1],junk1[j*2+2] ],3), round(cor.t1.nr[junk1[j*2+1],junk1[j*2+2]],3), round(cor.t2.r[junk1[j*2+1],junk1[j*2+2] ],3), round(cor.t2.nr[junk1[j*2+1],junk1[j*2+2]],3), round(cor.t3.r[junk1[j*2+1],junk1[j*2+2] ],3), round(cor.t3.nr[junk1[j*2+1],junk1[j*2+2]],3), round(cor.t4.r[junk1[j*2+1],junk1[j*2+2] ],3), round(cor.t4.nr[junk1[j*2+1],junk1[j*2+2]],3), round(cor.t5.r[junk1[j*2+1],junk1[j*2+2] ],3), round(cor.t5.nr[junk1[j*2+1],junk1[j*2+2]],3))) } junk<-data.frame(p11=junk.list[,1], p21=junk.list[,2], stringsAsFactors=FALSE) junk<-transform(junk, T1=ifelse(p11<=p21, p11, p21)) junk<-transform(junk, T2=ifelse(p11>p21, p11, p21)) junk<-cbind(junk, junk.list[,-c(1:2)]) junk<-junk[,-c(1:2)] junk_dup<-junk[!duplicated(junk), ] write.csv(junk_dup, file="junk_dup_600_06_18samples.csv")