| 
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 
 |