diff ChipSeqRatioAnalysis.R @ 3:e320ef2d105a draft

Uploaded
author petr-novak
date Thu, 05 Sep 2019 09:04:56 -0400
parents
children 378565f5a875
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ChipSeqRatioAnalysis.R	Thu Sep 05 09:04:56 2019 -0400
@@ -0,0 +1,140 @@
+#!/usr/bin/env Rscript
+library(R2HTML, quietly=T)
+library(base64enc, quietly=T)
+
+
+htmlheader="
+	 <html xmlns:mml=\"http://www.w3.org/1998/Math/MathML\">
+  <head>
+  <title> ChIP-Seq Mapper Output </title>
+  <style>
+  <!--
+  table { background:#FFFFFF;
+  border:1px solid gray;
+  border-collapse:collapse;
+  color:#fff;
+  font:normal 13px verdana, arial, helvetica, sans-serif;
+    width: 100%;
+
+  }
+  caption { border:1px solid #5C443A;
+  color:#5C443A;
+  font-weight:bold;
+  font-size:20pt
+  padding:6px 4px 8px 0px;
+  text-align:center;
+  
+  }
+  td, th { color:#363636;
+  padding:.4em;
+  }
+  tr { border:1px dotted gray;
+  }
+  thead th, tfoot th { background:#5C443A;
+  color:#FFFFFF;
+  padding:3px 10px 3px 10px;
+  text-align:left;
+  text-transform:uppercase;
+  }
+  tbody td a { color:#3636FF;
+  text-decoration:underline;
+  }
+  tbody td a:visited { color:gray;
+  text-decoration:line-through;
+  }
+  tbody td a:hover { text-decoration:underline;
+  }
+  tbody th a { color:#3636FF;
+  font-weight:normal;
+  text-decoration:none;
+  }
+  tbody th a:hover { color:#363636;
+  }
+  tbody td+td+td+td a { background-image:url('bullet_blue.png');
+  background-position:left center;
+  background-repeat:no-repeat;
+  color:#FFFFFF;
+  padding-left:15px;
+  }
+  tbody td+td+td+td a:visited { background-image:url('bullet_white.png');
+  background-position:left center;
+  background-repeat:no-repeat;
+  }
+  tbody th, tbody td { text-align:left;
+  vertical-align:top;
+  }
+  tfoot td { background:#5C443A;
+  color:#FFFFFF;
+  padding-top:3px;
+  }
+  .odd { background:#fff;
+  }
+  tbody tr:hover { background:#EEEEEE;
+  border:1px solid #03476F;
+  color:#000000;
+  }
+  -->
+  </style>
+  
+  </head>
+  
+  "
+
+
+                                        #arguments
+args <- commandArgs(trailingOnly = TRUE)
+input <- args[1]
+HTMLfile <- args[2]
+threshld <- 2/(2+1)
+inputN=as.numeric(args[3])
+chipN=as.numeric(args[4])
+                                        #dataframe preprocessing and table creation
+df <- read.delim(input, comment.char="#")
+
+df$"Ratio Chip/Input"=df$Chip_Hits/df$Input_Hits
+df$"Normalized ratio Chip/Input"=(df$Chip_Hits/chipN)/(df$Input_Hits/inputN)
+
+df$"Ratio Chip/(Chip+Input)"=df$Chip_Hits/(df$Chip_Hits + df$Input_Hits)
+df$"Normalized ratio Chip/(Chip+Input)"=(df$Chip_Hits/chipN)/((df$Input_Hits/inputN)+(df$Chip_Hits/chipN))
+
+outputTable = df[df$"Normalized ratio Chip/(Chip+Input)" > threshld,]
+outputTable = outputTable[!is.na(outputTable$Cluster),]
+save.image("tmp.RData")                                        #Plot creation
+pngfile <- tempfile()
+png(pngfile, width = 1000, height = 1200, pointsize=20)
+par(mfrow=c(3,1))
+lims=range(df$"Normalized ratio Chip/Input"[df$"Normalized ratio Chip/Input">0], finite = TRUE)
+suppressWarnings(plot(df$Cluster,df$"Normalized ratio Chip/Input", log="y", xlab="Cluster Nr.", ylab="Normalized ChiP/Seq ratio", pch=20, ylim=lims))
+abline(h=1,col='#00000080', lwd = 2)
+abline(h=2,col='#FF000080', lwd = 2)
+
+lims=range(df$"Normalized ratio Chip/Input", finite = TRUE)
+suppressWarnings(plot(df$Cluster,df$"Normalized ratio Chip/Input", xlab="Cluster Nr.", ylab="Normalize ChiP/Seq ratio", pch=20, ylim=lims))
+abline(h=1,col='#00000080', lwd = 2)
+abline(h=2,col='#FF000080', lwd = 2)
+
+suppressWarnings(plot(df$Cluster,df$"Normalized ratio Chip/(Chip+Input)", xlab="Cluster Nr.", ylab="Normalized Chip/(Chip+Input)", pch=20))
+abline(h=0.5,col='#00000080', lwd = 2)
+abline(h=threshld,col='#FF000080', lwd = 2)
+
+
+dev.off()
+graph <- paste('<img src="data:image/png;base64 ,',
+               base64encode(pngfile),
+               '" alt="image" />'
+)
+
+                                        #HMTL report creation + writing final output
+directory=dirname(HTMLfile)
+filename=basename(HTMLfile)
+## create HTML header
+cat(htmlheader, file = filename)
+
+
+HTML(graph, file=filename)
+if (nrow(outputTable)>0){
+    HTML(outputTable, file=filename, classtable = "dataframe", row.names=FALSE, Align='left')
+}
+HTMLEndFile(filename) 
+file.rename(from=filename, to=HTMLfile)
+write.table(df, file=input, sep="\t", row.names = FALSE)