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
|
3
|
11 clusterRow = args[7]
|
|
12 clusterCol = args[8]
|
|
13 hclustMethod = args[9]
|
|
14
|
|
15 mgColumnNm = as.numeric(args[10])
|
|
16 mgRowNm = as.numeric(args[11])
|
|
17
|
|
18 pdfWidth = as.numeric(args[12])
|
|
19 pdfHeight = as.numeric(args[13])
|
|
20
|
|
21
|
|
22 if(clusterRow == "Yes"){
|
|
23 clusterRow = TRUE
|
|
24 } else {
|
|
25 clusterRow = NA
|
|
26 }
|
|
27
|
|
28 if(clusterCol == "Yes"){
|
|
29 clusterCol = TRUE
|
|
30 } else {
|
|
31 clusterCol = NA
|
|
32 }
|
|
33
|
0
|
34 require(preprocessCore)
|
|
35 require(gplots)
|
|
36
|
|
37 #prepare counts data --------------------------------------------------------
|
|
38 countData = read.table(countDataPath, comment = "",
|
|
39 sep = "\t")
|
|
40
|
|
41 groups = sapply(as.character(countData[1, -1]), strsplit, ":")
|
|
42 groups = as.vector(t(countData[1, -1]))
|
|
43
|
|
44 names = as.vector(t(countData[2, -1]))
|
|
45
|
|
46 countData = countData[-c(1,2), ]
|
|
47 rownames(countData) = countData[, 1]
|
|
48 countData = countData[, -1]
|
|
49 colnames(countData) = names
|
|
50
|
|
51 countData = countData[, order(groups, names)]
|
|
52
|
|
53 # prepare stats data ------------------------------------------------------
|
|
54
|
|
55 statsData = read.table(statsDataPath, sep = "\t",
|
|
56 header = T)
|
|
57
|
|
58 colnames(statsData)[-1] = sapply(colnames(statsData)[-1], function(x){
|
|
59 unlist(strsplit(x, ".", fixed = T))[3]
|
|
60 })
|
|
61
|
|
62 wh = which(abs(statsData$logFC) >= logFC & statsData$logCPM >= logCPM & statsData$PValue <= pValue & statsData$FDR <= fdr)
|
|
63
|
|
64 for(i in 1:ncol(countData)){
|
|
65 countData[,i] = as.numeric(countData[,i])
|
|
66 }
|
|
67
|
|
68 countDataNorm = normalize.quantiles(as.matrix(countData), copy = T)
|
|
69 countDataNormLog = log(countDataNorm + 1, 2)
|
|
70
|
|
71 colnames(countDataNormLog) = colnames(countData)
|
|
72 rownames(countDataNormLog) = rownames(countData)
|
|
73
|
|
74 #svg("heatmap.svg", width = 3+length(names), height = 1/2*length(wh))
|
3
|
75 pdf("heatmap.pdf", width = pdfWidth, height = pdfHeight)
|
0
|
76
|
|
77 heatmap.2(
|
|
78 countDataNormLog[wh, ],
|
|
79 density.info=c("none"),
|
3
|
80 hclustfun = function(x) hclust(x, method = hclustMethod),
|
0
|
81 distfun = function(x) as.dist(1-cor(t(x))),
|
|
82 col = bluered(50),
|
3
|
83 scale = "row",
|
|
84 trace = "none",
|
|
85 Rowv = clusterRow,
|
|
86 Colv = clusterCol,
|
|
87 margins = c(mgColumnNm, mgRowNm)
|
0
|
88 )
|
|
89
|
|
90 dev.off()
|
|
91
|