| 0 | 1 #!/usr/bin/env Rscript | 
|  | 2 | 
|  | 3 args = commandArgs(TRUE) | 
|  | 4 countDataPath = args[1] | 
|  | 5 statsDataPath = args[2] | 
|  | 6 logFC = args[3] | 
|  | 7 logCPM = args[4] | 
|  | 8 pValue = args[5] | 
|  | 9 fdr = args[6] | 
|  | 10 | 
|  | 11 require(preprocessCore) | 
|  | 12 require(gplots) | 
|  | 13 | 
|  | 14 #prepare counts data -------------------------------------------------------- | 
|  | 15 countData = read.table(countDataPath, comment = "", | 
|  | 16                        sep = "\t") | 
|  | 17 | 
|  | 18 groups = sapply(as.character(countData[1, -1]), strsplit, ":") | 
|  | 19 groups = as.vector(t(countData[1, -1])) | 
|  | 20 | 
|  | 21 names = as.vector(t(countData[2, -1])) | 
|  | 22 | 
|  | 23 countData = countData[-c(1,2), ] | 
|  | 24 rownames(countData) = countData[, 1] | 
|  | 25 countData = countData[, -1] | 
|  | 26 colnames(countData) = names | 
|  | 27 | 
|  | 28 countData = countData[, order(groups, names)] | 
|  | 29 | 
|  | 30 # prepare stats data ------------------------------------------------------ | 
|  | 31 | 
|  | 32 statsData = read.table(statsDataPath, sep = "\t", | 
|  | 33                        header = T) | 
|  | 34 | 
|  | 35 colnames(statsData)[-1] = sapply(colnames(statsData)[-1], function(x){ | 
|  | 36   unlist(strsplit(x, ".", fixed = T))[3] | 
|  | 37 }) | 
|  | 38 | 
|  | 39 wh = which(abs(statsData$logFC) >= logFC & statsData$logCPM >= logCPM & statsData$PValue <= pValue & statsData$FDR <= fdr) | 
|  | 40 | 
|  | 41 for(i in 1:ncol(countData)){ | 
|  | 42   countData[,i] = as.numeric(countData[,i]) | 
|  | 43 } | 
|  | 44 | 
|  | 45 countDataNorm = normalize.quantiles(as.matrix(countData), copy = T) | 
|  | 46 countDataNormLog = log(countDataNorm + 1, 2) | 
|  | 47 | 
|  | 48 colnames(countDataNormLog) = colnames(countData) | 
|  | 49 rownames(countDataNormLog) = rownames(countData) | 
|  | 50 | 
|  | 51 #svg("heatmap.svg", width = 3+length(names), height = 1/2*length(wh)) | 
|  | 52 pdf("heatmap.pdf") | 
|  | 53 | 
|  | 54 heatmap.2( | 
|  | 55   countDataNormLog[wh, ], | 
|  | 56   density.info=c("none"), | 
|  | 57   hclustfun = function(x) hclust(x, method = "average"), | 
|  | 58   distfun = function(x) as.dist(1-cor(t(x))), | 
|  | 59   col = bluered(50), | 
|  | 60   scale = 'row', | 
|  | 61   trace = "none", #lwid = c(1, length(names)),  lhei = c(1,1/3*length(wh)), | 
|  | 62 #  Rowv=NA, | 
|  | 63   Colv = NA, | 
|  | 64   margins = c(7, 8) | 
|  | 65 ) | 
|  | 66 | 
|  | 67 dev.off() | 
|  | 68 |