annotate ChipSeqRatioAnalysis.R @ 5:378565f5a875 draft

Uploaded
author petr-novak
date Fri, 22 Nov 2019 07:56:48 -0500
parents e320ef2d105a
children f224513123a1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
1 #!/usr/bin/env Rscript
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
2 library(R2HTML, quietly=T)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
3 library(base64enc, quietly=T)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
4
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
5
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
6 htmlheader=
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
7 " <html xmlns:mml=\"http://www.w3.org/1998/Math/MathML\">
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
8 <head>
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
9 <title> ChIP-Seq Mapper Output </title>
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
10 <style>
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
11 html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
12
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
13 table {
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
14 border-collapse: collapse;
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
15 border: 1px solid black;
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
16 width: 1000pt
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
17 }
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
18 table, th, td {
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
19 border: 1px solid black;
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
20 }
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
21 </style>
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
22
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
23 </head>
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
24
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
25
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
26
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
27 "
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
28
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
29
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
30 #arguments
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
31 args <- commandArgs(trailingOnly = TRUE)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
32 input <- args[1]
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
33 HTMLfile <- args[2]
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
34 threshld <- 2/(2+1)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
35 inputN=as.numeric(args[3])
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
36 chipN=as.numeric(args[4])
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
37 #dataframe preprocessing and table creation
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
38 df <- read.delim(input, comment.char="#")
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
39
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
40 df$"Ratio Chip/Input"=df$Chip_Hits/df$Input_Hits
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
41 df$"Normalized ratio Chip/Input"=(df$Chip_Hits/chipN)/(df$Input_Hits/inputN)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
42
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
43 df$"Ratio Chip/(Chip+Input)"=df$Chip_Hits/(df$Chip_Hits + df$Input_Hits)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
44 df$"Normalized ratio Chip/(Chip+Input)"=(df$Chip_Hits/chipN)/((df$Input_Hits/inputN)+(df$Chip_Hits/chipN))
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
45
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
46 outputTable = df[df$"Normalized ratio Chip/(Chip+Input)" > threshld,
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
47 ]
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
48 outputTable = outputTable[!is.na(outputTable$Cluster),
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
49 c('Cluster', 'Chip_Hits', 'Input_Hits',
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
50 'Normalized ratio Chip/Input','Normalized ratio Chip/(Chip+Input)')]
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
51 save.image("tmp.RData") #Plot creation
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
52 pngfile <- tempfile()
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
53 png(pngfile, width = 1000, height = 1200, pointsize=20)
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
54 par(mfrow=c(2,1))
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
55 lims=range(df$"Normalized ratio Chip/Input"[df$"Normalized ratio Chip/Input">0], finite = TRUE)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
56 suppressWarnings(plot(df$Cluster,df$"Normalized ratio Chip/Input", log="y", xlab="Cluster Nr.", ylab="Normalized ChiP/Seq ratio", pch=20, ylim=lims))
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
57 abline(h=1,col='#00000080', lwd = 2)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
58 abline(h=2,col='#FF000080', lwd = 2)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
59
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
60
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
61 suppressWarnings(plot(df$Cluster,df$"Normalized ratio Chip/(Chip+Input)", xlab="Cluster Nr.", ylab="Normalized Chip/(Chip+Input)", pch=20))
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
62 abline(h=0.5,col='#00000080', lwd = 2)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
63 abline(h=threshld,col='#FF000080', lwd = 2)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
64
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
65
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
66 dev.off()
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
67 graph <- paste('<img src="data:image/png;base64 ,',
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
68 base64encode(pngfile),
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
69 '" alt="image" />'
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
70 )
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
71
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
72 #HMTL report creation + writing final output
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
73 directory=dirname(HTMLfile)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
74 filename=basename(HTMLfile)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
75 ## create HTML header
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
76 cat(htmlheader, file = filename)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
77
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
78
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
79 HTML(graph, file=filename)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
80 if (nrow(outputTable)>0){
5
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
81 HTML(outputTable, file=filename, classtable = "dataframe",
378565f5a875 Uploaded
petr-novak
parents: 3
diff changeset
82 row.names=FALSE, align='left', caption="Clusters with Normalized ChIP/Input ratio > 2", captionalign="top")
3
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
83 }
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
84 HTMLEndFile(filename)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
85 file.rename(from=filename, to=HTMLfile)
e320ef2d105a Uploaded
petr-novak
parents:
diff changeset
86 write.table(df, file=input, sep="\t", row.names = FALSE)