Mercurial > repos > petr-novak > re_utils
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)