Mercurial > repos > dereeper > pangenome_explorer
view R/heatmap.R @ 14:5a5c9a6b047b draft
Uploaded
author | dereeper |
---|---|
date | Tue, 10 Dec 2024 16:20:53 +0000 |
parents | e42d30da7a74 |
children |
line wrap: on
line source
#!/usr/local/R-4.1.2/bin/R library(dendextend) library("optparse") library(reshape2) library(ape) #args = commandArgs(trailingOnly=TRUE) option_list = list( make_option(c("-f", "--file"), type="character", default=NULL, help="dataset file name", metavar="character"), make_option(c("-o", "--out"), type="character", default="out.txt", help="output file name [default= %default]", metavar="character") ); opt_parser = OptionParser(option_list=option_list); opt = parse_args(opt_parser); if (is.null(opt$file)){ print_help(opt_parser) stop("At least one argument must be supplied (input file).\n", call.=FALSE) } if (is.null(opt$out)){ print_help(opt_parser) stop("At least one argument must be supplied (out file).\n", call.=FALSE) } #svglite(opt$out,width = 31, height = 28) pdf(opt$out,width = 31,height = 28) mydata <- read.table(opt$file, header=TRUE,sep="\t", row.names="Gene") iris <- mydata #dend_r <- iris %>% dist(method = "man") %>% hclust(method = "ward.D") %>% as.dendrogram %>% ladderize #dend_r <- iris %>% dist(method = "man") %>% hclust(method = "com") %>% as.dendrogram %>% ladderize #dend_c <- t(iris) %>% dist(method = "man") %>% hclust(method = "com") %>% as.dendrogram %>% ladderize #dend_c <- t(iris) %>% dist(method = "man") %>% hclust(method = "ward.D") %>% as.dendrogram %>% ladderize #dend_c distance_matrix = t(iris) %>% dist(method = "man") h = distance_matrix %>% hclust(method = "ward.D") tree = as.phylo(h) dend_c = h %>% as.dendrogram write.tree(tree, file=paste(opt$out, "distance_matrix.hclust.newick", sep=".")) dist_df <- melt(as.matrix(distance_matrix), varnames = c("row", "col")) write.table( dist_df, paste(opt$out, "distance_matrix.txt", sep=".") ) mat <- as.matrix(t(iris-1)) out <- gplots::heatmap.2(mat, main = "", scale="none", srtCol=NULL, Rowv = dend_c, #Colv = dend_r, key = FALSE, margins =c(20,20), trace="row", hline = NA, tracecol = NA ) write.table( data.frame(gene = rownames(mat)[out$rowInd]), paste(opt$out, "rows.csv", sep="."), row.names = FALSE, quote = FALSE, sep = ',') write.table( data.frame(gene = colnames(mat)[out$colInd]), paste(opt$out, "cols.csv", sep="."), row.names = FALSE, quote = FALSE, sep = ',') dev.off()