edge_randomization =函数(path2genrev (g, te),a, keep.random.file=FALSE, nperm = 1000, n=NA, L=NA, it=NA, search_d=NA, search_r=NA, s=NA, cl=NA, output.dir=NA, output.RData = NA){ ### initialization of parameters path2generev = NA network.file = NA seed.file = NA method = NA node.score.file = NA walk_len = NA walk_iterN = NA shrink_d = NA mcl_status = NA if(!is.na(g)) { network.file = g } else {print("Please provide ");} if(!is.na(te)) { seed.file = te } else {print("Please provide ”);} if(!is.na(a)){method = a} else {print(“请指定方法,'hearistic','steiner','steiner','kwalk'));} if(!is.na(n)){node.score.file = n} if(!is.na(l)){walk_len = l} if(!is.na(is.na(it)){walk_itern = it} if(!.na(s)){shink_d = s} if(!是。if(!是。。,“ -s”,shink_d,sep =“”)} if(method ==“ steiner”){basic.cmd = paste(basic.cmd,“ -a”,method,sep =“”)} else方法==“ hearistic”){basic.cmd = paste(basic.cmd,“ -a”,method,sep =“”)if(!is.na(search_d)){basic.cmd = paste(basic.cmd),“ -d”,search_d,sep =“”)} if(!is.na(search_r)){basic.cmd = paste(basic.cmd,“ -r”,search_r,search_r,sep =“”)}}}}}}if(方法==“ hearistic”){basic.cmd = paste(basic.cmd,“ -a”,method,sep =“”)if(!is.na(walk_len)){basic.cmd = paste(basic。} if(!是。cmd,“ -g”,network.file,sep =“”)if(!is.na(output.dir)){real.cmd = paste(real.cmd,“ -o”,oftuct.dir,sep =“”)if(grepl(“/$”,output.dir)){output.dir = substr(output.dir,0,nchar(output.dir)-1)} ###of ourput.dir} else {output.dir = paste(getwd(),“/”,格式(sys.time(),“%y%y%b%d%h%m”),sep =“”)真实。cmd = paste(real.cmd,“ -o”,output.dir,sep =“”)} print(real.cmd)system(real.cmd)real.gene.gene.ranks = read.table(paste.dir.dir(output.dir), "/gene_rank.txt", sep="")) real.gene.ranks = as.character(real.gene.ranks[,1]) ### randomization library(igraph) network = read.table(network.file) G = graph.data.frame(network, directed=F) G = simplify(G) edge.list = get.edgelist(G) if(keep.random.file==FALSE) { random.gene.rank = list() print(paste("Warning: intermediate files of randomization process will be lost! However, the randomized reference network files are saved!")) for(ii in 1:nperm) { if(file.exists(paste(output.dir, "_random/", sep="")))unlink(paste(output.dir, "_random/", sep=""), recursive=T) edges.random = edge.list apply(edges.random, 1, function(u){paste(u[1], u[2], sep="--")}) -> edges.str seq(1:dim(edges.random)[[1]]) -> all.idx edges.random = cbind(edge.list[,1], edge.list[sample(all.idx),2]) random.network.file = paste(output.dir, "/random",ii,".network.txt", sep="") write.table(edges.random, file=random.network.file, row.names=F, col.names=F, quote=F, sep="\t") ### cmd for random case random.cmd = paste(basic.cmd, " -g ", random.network.file, sep="") random.output.dir = paste(output.dir, "_random/", sep="") random.cmd = paste(random.cmd, " -o ", random.output.dir, sep="") print(random.cmd) system(random.cmd) random.term = read.table(file=paste(output.dir, "_random/gene_rank.txt", sep="")) random.gene.rank[[ii]] = as.character(random.term[,1]) cat(paste("finish round ", ii, "\n", sep="")) } } else if(keep.random.file==TRUE) { print(paste("Warning: a large number of folders will be generated for randomization purpose!")) random.gene.rank = list() for(ii in 1:nperm) { if(file.exists(paste(output.dir, "_random_", ii, sep="")))unlink(paste(output.dir, "_random_", ii, sep=""), recursive=T) edges.random = edge.list apply(edges.random, 1, function(u){paste(u[1], u[2], sep="--")}) -> edges.str seq(1:dim(edges.random)[[1]]) -> all.idx edges.random = cbind(edge.list[,1], edge.list[sample(all.idx),2]) random.network.file = paste(output.dir, "/random",ii,".network.txt", sep="") write.table(edges.random, file=random.network.file, row.names=F, col.names=F, quote=F, sep="\t") random.cmd = paste(basic.cmd, " -g ", random.network.file, sep="") random.output.dir = paste(output.dir, "_random_", ii, sep="") random.cmd = paste(random.cmd, " -o ", random.output.dir, sep="") print(random.cmd) system(random.cmd) random.term = read.table(file=paste(output.dir, "_random_", ii, "/gene_rank.txt", sep="")) random.gene.rank[[ii]] = as.character(random.term[,1]) cat(paste("finish round ", ii, "\n", sep="")) } } if(is.na(output.RData)){ save(random.gene.rank, file="random.test.RData") } else { save(random.gene.rank, file=output.RData) } } #randomization(getwd(), network.file="/mnt/BSBL_2T/home/pjia/DATA/pina_symbol11242010.ppi", seed.file="Aaron/priorGenes151_pureGene.txt", method="steiner")
Baidu