annotate hairpinTool.R @ 7:2c6bcbc1e76a draft default tip

Uploaded
author fubar
date Mon, 19 Jan 2015 22:14:10 -0500
parents e7922416086d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e7922416086d Uploaded
fubar
parents:
diff changeset
1 #!/usr/bin/env Rscript
e7922416086d Uploaded
fubar
parents:
diff changeset
2 # ARGS: 1.inputType -String specifying format of input (fastq or table)
e7922416086d Uploaded
fubar
parents:
diff changeset
3 # IF inputType is "fastq" or "pairedFastq:
e7922416086d Uploaded
fubar
parents:
diff changeset
4 # 2*.fastqPath -One or more strings specifying path to fastq files
e7922416086d Uploaded
fubar
parents:
diff changeset
5 # 2.annoPath -String specifying path to hairpin annotation table
e7922416086d Uploaded
fubar
parents:
diff changeset
6 # 3.samplePath -String specifying path to sample annotation table
e7922416086d Uploaded
fubar
parents:
diff changeset
7 # 4.barStart -Integer specifying starting position of barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
8 # 5.barEnd -Integer specifying ending position of barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
9 # ###
e7922416086d Uploaded
fubar
parents:
diff changeset
10 # IF inputType is "pairedFastq":
e7922416086d Uploaded
fubar
parents:
diff changeset
11 # 6.barStartRev -Integer specifying starting position of barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
12 # on reverse end
e7922416086d Uploaded
fubar
parents:
diff changeset
13 # 7.barEndRev -Integer specifying ending position of barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
14 # on reverse end
e7922416086d Uploaded
fubar
parents:
diff changeset
15 # ###
e7922416086d Uploaded
fubar
parents:
diff changeset
16 # 8.hpStart -Integer specifying startins position of hairpin
e7922416086d Uploaded
fubar
parents:
diff changeset
17 # unique region
e7922416086d Uploaded
fubar
parents:
diff changeset
18 # 9.hpEnd -Integer specifying ending position of hairpin
e7922416086d Uploaded
fubar
parents:
diff changeset
19 # unique region
e7922416086d Uploaded
fubar
parents:
diff changeset
20 # IF inputType is "counts":
e7922416086d Uploaded
fubar
parents:
diff changeset
21 # 2.countPath -String specifying path to count table
e7922416086d Uploaded
fubar
parents:
diff changeset
22 # 3.annoPath -String specifying path to hairpin annotation table
e7922416086d Uploaded
fubar
parents:
diff changeset
23 # 4.samplePath -String specifying path to sample annotation table
e7922416086d Uploaded
fubar
parents:
diff changeset
24 # ###
e7922416086d Uploaded
fubar
parents:
diff changeset
25 # 10.secFactName -String specifying name of secondary factor
e7922416086d Uploaded
fubar
parents:
diff changeset
26 # 11.cpmReq -Float specifying cpm requirement
e7922416086d Uploaded
fubar
parents:
diff changeset
27 # 12.sampleReq -Integer specifying cpm requirement
e7922416086d Uploaded
fubar
parents:
diff changeset
28 # 13.readReq -Integer specifying read requirement
e7922416086d Uploaded
fubar
parents:
diff changeset
29 # 14.fdrThresh -Float specifying the FDR requirement
e7922416086d Uploaded
fubar
parents:
diff changeset
30 # 15.lfcThresh -Float specifying the log-fold-change requirement
e7922416086d Uploaded
fubar
parents:
diff changeset
31 # 16.workMode -String specifying exact test or GLM usage
e7922416086d Uploaded
fubar
parents:
diff changeset
32 # 17.htmlPath -String specifying path to HTML file
e7922416086d Uploaded
fubar
parents:
diff changeset
33 # 18.folderPath -String specifying path to folder for output
e7922416086d Uploaded
fubar
parents:
diff changeset
34 # IF workMode is "classic" (exact test)
e7922416086d Uploaded
fubar
parents:
diff changeset
35 # 19.pairData[2] -String specifying first group for exact test
e7922416086d Uploaded
fubar
parents:
diff changeset
36 # 20.pairData[1] -String specifying second group for exact test
e7922416086d Uploaded
fubar
parents:
diff changeset
37 # ###
e7922416086d Uploaded
fubar
parents:
diff changeset
38 # IF workMode is "glm"
e7922416086d Uploaded
fubar
parents:
diff changeset
39 # 19.contrastData -String specifying contrasts to be made
e7922416086d Uploaded
fubar
parents:
diff changeset
40 # 20.roastOpt -String specifying usage of gene-wise tests
e7922416086d Uploaded
fubar
parents:
diff changeset
41 # 21.hairpinReq -String specifying hairpin requirement for gene-
e7922416086d Uploaded
fubar
parents:
diff changeset
42 # wise test
e7922416086d Uploaded
fubar
parents:
diff changeset
43 # 22.selectOpt -String specifying type of selection for barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
44 # plots
e7922416086d Uploaded
fubar
parents:
diff changeset
45 # 23.selectVals -String specifying members selected for barcode
e7922416086d Uploaded
fubar
parents:
diff changeset
46 # plots
e7922416086d Uploaded
fubar
parents:
diff changeset
47 # ###
e7922416086d Uploaded
fubar
parents:
diff changeset
48 #
e7922416086d Uploaded
fubar
parents:
diff changeset
49 # OUT: Bar Plot of Counts Per Index
e7922416086d Uploaded
fubar
parents:
diff changeset
50 # Bar Plot of Counts Per Hairpin
e7922416086d Uploaded
fubar
parents:
diff changeset
51 # MDS Plot
e7922416086d Uploaded
fubar
parents:
diff changeset
52 # BCV Plot
e7922416086d Uploaded
fubar
parents:
diff changeset
53 # Smear Plot
e7922416086d Uploaded
fubar
parents:
diff changeset
54 # Barcode Plots (If Genewise testing was selected)
e7922416086d Uploaded
fubar
parents:
diff changeset
55 # Top Expression Table
e7922416086d Uploaded
fubar
parents:
diff changeset
56 # Feature Counts Table
e7922416086d Uploaded
fubar
parents:
diff changeset
57 # HTML file linking to the ouputs
e7922416086d Uploaded
fubar
parents:
diff changeset
58 #
e7922416086d Uploaded
fubar
parents:
diff changeset
59 # Author: Shian Su - registertonysu@gmail.com - Jan 2014
e7922416086d Uploaded
fubar
parents:
diff changeset
60
e7922416086d Uploaded
fubar
parents:
diff changeset
61 # Record starting time
e7922416086d Uploaded
fubar
parents:
diff changeset
62 timeStart <- as.character(Sys.time())
e7922416086d Uploaded
fubar
parents:
diff changeset
63 options(bitmapType='cairo')
e7922416086d Uploaded
fubar
parents:
diff changeset
64 # needed to prevent missing x11 errors for png()
e7922416086d Uploaded
fubar
parents:
diff changeset
65 # Loading and checking required packages
e7922416086d Uploaded
fubar
parents:
diff changeset
66 library(methods, quietly=TRUE, warn.conflicts=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
67 library(statmod, quietly=TRUE, warn.conflicts=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
68 library(splines, quietly=TRUE, warn.conflicts=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
69 library(edgeR, quietly=TRUE, warn.conflicts=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
70 library(limma, quietly=TRUE, warn.conflicts=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
71
e7922416086d Uploaded
fubar
parents:
diff changeset
72 if (packageVersion("edgeR") < "3.7.17") {
e7922416086d Uploaded
fubar
parents:
diff changeset
73 stop("Please update 'edgeR' to version >= 3.7.17 to run this tool")
e7922416086d Uploaded
fubar
parents:
diff changeset
74 }
e7922416086d Uploaded
fubar
parents:
diff changeset
75
e7922416086d Uploaded
fubar
parents:
diff changeset
76 if (packageVersion("limma")<"3.21.16") {
e7922416086d Uploaded
fubar
parents:
diff changeset
77 message("Update 'limma' to version >= 3.21.16 to see updated barcode graphs")
e7922416086d Uploaded
fubar
parents:
diff changeset
78 }
e7922416086d Uploaded
fubar
parents:
diff changeset
79
e7922416086d Uploaded
fubar
parents:
diff changeset
80 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
81 ### Function declarations
e7922416086d Uploaded
fubar
parents:
diff changeset
82 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
83
e7922416086d Uploaded
fubar
parents:
diff changeset
84 # Function to load libaries without messages
e7922416086d Uploaded
fubar
parents:
diff changeset
85 silentLibrary <- function(...) {
e7922416086d Uploaded
fubar
parents:
diff changeset
86 list <- c(...)
e7922416086d Uploaded
fubar
parents:
diff changeset
87 for (package in list){
e7922416086d Uploaded
fubar
parents:
diff changeset
88 suppressPackageStartupMessages(library(package, character.only=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
89 }
e7922416086d Uploaded
fubar
parents:
diff changeset
90 }
e7922416086d Uploaded
fubar
parents:
diff changeset
91
e7922416086d Uploaded
fubar
parents:
diff changeset
92 # Function to sanitise contrast equations so there are no whitespaces
e7922416086d Uploaded
fubar
parents:
diff changeset
93 # surrounding the arithmetic operators, leading or trailing whitespace
e7922416086d Uploaded
fubar
parents:
diff changeset
94 sanitiseEquation <- function(equation) {
e7922416086d Uploaded
fubar
parents:
diff changeset
95 equation <- gsub(" *[+] *", "+", equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
96 equation <- gsub(" *[-] *", "-", equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
97 equation <- gsub(" *[/] *", "/", equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
98 equation <- gsub(" *[*] *", "*", equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
99 equation <- gsub("^\\s+|\\s+$", "", equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
100 return(equation)
e7922416086d Uploaded
fubar
parents:
diff changeset
101 }
e7922416086d Uploaded
fubar
parents:
diff changeset
102
e7922416086d Uploaded
fubar
parents:
diff changeset
103 # Function to sanitise group information
e7922416086d Uploaded
fubar
parents:
diff changeset
104 sanitiseGroups <- function(string) {
e7922416086d Uploaded
fubar
parents:
diff changeset
105 string <- gsub(" *[,] *", ",", string)
e7922416086d Uploaded
fubar
parents:
diff changeset
106 string <- gsub("^\\s+|\\s+$", "", string)
e7922416086d Uploaded
fubar
parents:
diff changeset
107 return(string)
e7922416086d Uploaded
fubar
parents:
diff changeset
108 }
e7922416086d Uploaded
fubar
parents:
diff changeset
109
e7922416086d Uploaded
fubar
parents:
diff changeset
110 # Function to change periods to whitespace in a string
e7922416086d Uploaded
fubar
parents:
diff changeset
111 unmake.names <- function(string) {
e7922416086d Uploaded
fubar
parents:
diff changeset
112 string <- gsub(".", " ", string, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
113 return(string)
e7922416086d Uploaded
fubar
parents:
diff changeset
114 }
e7922416086d Uploaded
fubar
parents:
diff changeset
115
e7922416086d Uploaded
fubar
parents:
diff changeset
116 # Function has string input and generates an output path string
e7922416086d Uploaded
fubar
parents:
diff changeset
117 makeOut <- function(filename) {
e7922416086d Uploaded
fubar
parents:
diff changeset
118 return(paste0(folderPath, "/", filename))
e7922416086d Uploaded
fubar
parents:
diff changeset
119 }
e7922416086d Uploaded
fubar
parents:
diff changeset
120
e7922416086d Uploaded
fubar
parents:
diff changeset
121 # Function has string input and generates both a pdf and png output strings
e7922416086d Uploaded
fubar
parents:
diff changeset
122 imgOut <- function(filename) {
e7922416086d Uploaded
fubar
parents:
diff changeset
123 assign(paste0(filename, "Png"), makeOut(paste0(filename,".png")),
e7922416086d Uploaded
fubar
parents:
diff changeset
124 envir=.GlobalEnv)
e7922416086d Uploaded
fubar
parents:
diff changeset
125 assign(paste0(filename, "Pdf"), makeOut(paste0(filename,".pdf")),
e7922416086d Uploaded
fubar
parents:
diff changeset
126 envir=.GlobalEnv)
e7922416086d Uploaded
fubar
parents:
diff changeset
127 }
e7922416086d Uploaded
fubar
parents:
diff changeset
128
e7922416086d Uploaded
fubar
parents:
diff changeset
129 # Create cat function default path set, default seperator empty and appending
e7922416086d Uploaded
fubar
parents:
diff changeset
130 # true by default (Ripped straight from the cat function with altered argument
e7922416086d Uploaded
fubar
parents:
diff changeset
131 # defaults)
e7922416086d Uploaded
fubar
parents:
diff changeset
132 cata <- function(..., file=htmlPath, sep="", fill=FALSE, labels=NULL,
e7922416086d Uploaded
fubar
parents:
diff changeset
133 append=TRUE) {
e7922416086d Uploaded
fubar
parents:
diff changeset
134 if (is.character(file))
e7922416086d Uploaded
fubar
parents:
diff changeset
135 if (file == "")
e7922416086d Uploaded
fubar
parents:
diff changeset
136 file <- stdout()
e7922416086d Uploaded
fubar
parents:
diff changeset
137 else if (substring(file, 1L, 1L) == "|") {
e7922416086d Uploaded
fubar
parents:
diff changeset
138 file <- pipe(substring(file, 2L), "w")
e7922416086d Uploaded
fubar
parents:
diff changeset
139 on.exit(close(file))
e7922416086d Uploaded
fubar
parents:
diff changeset
140 }
e7922416086d Uploaded
fubar
parents:
diff changeset
141 else {
e7922416086d Uploaded
fubar
parents:
diff changeset
142 file <- file(file, ifelse(append, "a", "w"))
e7922416086d Uploaded
fubar
parents:
diff changeset
143 on.exit(close(file))
e7922416086d Uploaded
fubar
parents:
diff changeset
144 }
e7922416086d Uploaded
fubar
parents:
diff changeset
145 .Internal(cat(list(...), file, sep, fill, labels, append))
e7922416086d Uploaded
fubar
parents:
diff changeset
146 }
e7922416086d Uploaded
fubar
parents:
diff changeset
147
e7922416086d Uploaded
fubar
parents:
diff changeset
148 # Function to write code for html head and title
e7922416086d Uploaded
fubar
parents:
diff changeset
149 HtmlHead <- function(title) {
e7922416086d Uploaded
fubar
parents:
diff changeset
150 cata("<head>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
151 cata("<title>", title, "</title>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
152 cata("</head>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
153 }
e7922416086d Uploaded
fubar
parents:
diff changeset
154
e7922416086d Uploaded
fubar
parents:
diff changeset
155 # Function to write code for html links
e7922416086d Uploaded
fubar
parents:
diff changeset
156 HtmlLink <- function(address, label=address) {
e7922416086d Uploaded
fubar
parents:
diff changeset
157 cata("<a href=\"", address, "\" target=\"_blank\">", label, "</a><br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
158 }
e7922416086d Uploaded
fubar
parents:
diff changeset
159
e7922416086d Uploaded
fubar
parents:
diff changeset
160 # Function to write code for html images
e7922416086d Uploaded
fubar
parents:
diff changeset
161 HtmlImage <- function(source, label=source, height=600, width=600) {
e7922416086d Uploaded
fubar
parents:
diff changeset
162 cata("<img src=\"", source, "\" alt=\"", label, "\" height=\"", height)
e7922416086d Uploaded
fubar
parents:
diff changeset
163 cata("\" width=\"", width, "\"/>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
164 }
e7922416086d Uploaded
fubar
parents:
diff changeset
165
e7922416086d Uploaded
fubar
parents:
diff changeset
166 # Function to write code for html list items
e7922416086d Uploaded
fubar
parents:
diff changeset
167 ListItem <- function(...) {
e7922416086d Uploaded
fubar
parents:
diff changeset
168 cata("<li>", ..., "</li>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
169 }
e7922416086d Uploaded
fubar
parents:
diff changeset
170
e7922416086d Uploaded
fubar
parents:
diff changeset
171 TableItem <- function(...) {
e7922416086d Uploaded
fubar
parents:
diff changeset
172 cata("<td>", ..., "</td>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
173 }
e7922416086d Uploaded
fubar
parents:
diff changeset
174
e7922416086d Uploaded
fubar
parents:
diff changeset
175 TableHeadItem <- function(...) {
e7922416086d Uploaded
fubar
parents:
diff changeset
176 cata("<th>", ..., "</th>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
177 }
e7922416086d Uploaded
fubar
parents:
diff changeset
178 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
179 ### Input Processing
e7922416086d Uploaded
fubar
parents:
diff changeset
180 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
181
e7922416086d Uploaded
fubar
parents:
diff changeset
182 # Grabbing arguments from command line
e7922416086d Uploaded
fubar
parents:
diff changeset
183 argv <- commandArgs(T)
e7922416086d Uploaded
fubar
parents:
diff changeset
184
e7922416086d Uploaded
fubar
parents:
diff changeset
185 inputType <- as.character(argv[1])
e7922416086d Uploaded
fubar
parents:
diff changeset
186 if (inputType == "fastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
187
e7922416086d Uploaded
fubar
parents:
diff changeset
188 fastqPath <- as.character(gsub("fastq::", "", argv[grepl("fastq::", argv)],
e7922416086d Uploaded
fubar
parents:
diff changeset
189 fixed=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
190
e7922416086d Uploaded
fubar
parents:
diff changeset
191 # Remove fastq paths
e7922416086d Uploaded
fubar
parents:
diff changeset
192 argv <- argv[!grepl("fastq::", argv, fixed=TRUE)]
e7922416086d Uploaded
fubar
parents:
diff changeset
193
e7922416086d Uploaded
fubar
parents:
diff changeset
194 fastqPathRev <- NULL
e7922416086d Uploaded
fubar
parents:
diff changeset
195 annoPath <- as.character(argv[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
196 samplePath <- as.character(argv[3])
e7922416086d Uploaded
fubar
parents:
diff changeset
197 barStart <- as.numeric(argv[4])
e7922416086d Uploaded
fubar
parents:
diff changeset
198 barEnd <- as.numeric(argv[5])
e7922416086d Uploaded
fubar
parents:
diff changeset
199 barStartRev <- NULL
e7922416086d Uploaded
fubar
parents:
diff changeset
200 barStartRev <- NULL
e7922416086d Uploaded
fubar
parents:
diff changeset
201 hpStart <- as.numeric(argv[8])
e7922416086d Uploaded
fubar
parents:
diff changeset
202 hpEnd <- as.numeric(argv[9])
e7922416086d Uploaded
fubar
parents:
diff changeset
203 } else if (inputType=="pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
204
e7922416086d Uploaded
fubar
parents:
diff changeset
205 fastqPath <- as.character(gsub("fastq::", "", argv[grepl("fastq::", argv)],
e7922416086d Uploaded
fubar
parents:
diff changeset
206 fixed=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
207
e7922416086d Uploaded
fubar
parents:
diff changeset
208 fastqPathRev <- as.character(gsub("fastqRev::", "",
e7922416086d Uploaded
fubar
parents:
diff changeset
209 argv[grepl("fastqRev::", argv)], fixed=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
210
e7922416086d Uploaded
fubar
parents:
diff changeset
211 # Remove fastq paths
e7922416086d Uploaded
fubar
parents:
diff changeset
212 argv <- argv[!grepl("fastq::", argv, fixed=TRUE)]
e7922416086d Uploaded
fubar
parents:
diff changeset
213 argv <- argv[!grepl("fastqRev::", argv, fixed=TRUE)]
e7922416086d Uploaded
fubar
parents:
diff changeset
214
e7922416086d Uploaded
fubar
parents:
diff changeset
215 annoPath <- as.character(argv[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
216 samplePath <- as.character(argv[3])
e7922416086d Uploaded
fubar
parents:
diff changeset
217 barStart <- as.numeric(argv[4])
e7922416086d Uploaded
fubar
parents:
diff changeset
218 barEnd <- as.numeric(argv[5])
e7922416086d Uploaded
fubar
parents:
diff changeset
219 barStartRev <- as.numeric(argv[6])
e7922416086d Uploaded
fubar
parents:
diff changeset
220 barEndRev <- as.numeric(argv[7])
e7922416086d Uploaded
fubar
parents:
diff changeset
221 hpStart <- as.numeric(argv[8])
e7922416086d Uploaded
fubar
parents:
diff changeset
222 hpEnd <- as.numeric(argv[9])
e7922416086d Uploaded
fubar
parents:
diff changeset
223 } else if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
224 countPath <- as.character(argv[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
225 annoPath <- as.character(argv[3])
e7922416086d Uploaded
fubar
parents:
diff changeset
226 samplePath <- as.character(argv[4])
e7922416086d Uploaded
fubar
parents:
diff changeset
227 }
e7922416086d Uploaded
fubar
parents:
diff changeset
228
e7922416086d Uploaded
fubar
parents:
diff changeset
229 secFactName <- as.character(argv[10])
e7922416086d Uploaded
fubar
parents:
diff changeset
230 cpmReq <- as.numeric(argv[11])
e7922416086d Uploaded
fubar
parents:
diff changeset
231 sampleReq <- as.numeric(argv[12])
e7922416086d Uploaded
fubar
parents:
diff changeset
232 readReq <- as.numeric(argv[13])
e7922416086d Uploaded
fubar
parents:
diff changeset
233 fdrThresh <- as.numeric(argv[14])
e7922416086d Uploaded
fubar
parents:
diff changeset
234 lfcThresh <- as.numeric(argv[15])
e7922416086d Uploaded
fubar
parents:
diff changeset
235 selectDirection <- as.character(argv[16])
e7922416086d Uploaded
fubar
parents:
diff changeset
236 workMode <- as.character(argv[17])
e7922416086d Uploaded
fubar
parents:
diff changeset
237 htmlPath <- as.character(argv[18])
e7922416086d Uploaded
fubar
parents:
diff changeset
238 folderPath <- as.character(argv[19])
e7922416086d Uploaded
fubar
parents:
diff changeset
239
e7922416086d Uploaded
fubar
parents:
diff changeset
240 if (workMode == "classic") {
e7922416086d Uploaded
fubar
parents:
diff changeset
241 pairData <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
242 pairData[2] <- as.character(argv[20])
e7922416086d Uploaded
fubar
parents:
diff changeset
243 pairData[1] <- as.character(argv[21])
e7922416086d Uploaded
fubar
parents:
diff changeset
244 } else if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
245 contrastData <- as.character(argv[20])
e7922416086d Uploaded
fubar
parents:
diff changeset
246 roastOpt <- as.character(argv[21])
e7922416086d Uploaded
fubar
parents:
diff changeset
247 hairpinReq <- as.numeric(argv[22])
e7922416086d Uploaded
fubar
parents:
diff changeset
248 selectOpt <- as.character(argv[23])
e7922416086d Uploaded
fubar
parents:
diff changeset
249 selectVals <- as.character(argv[24])
e7922416086d Uploaded
fubar
parents:
diff changeset
250 }
e7922416086d Uploaded
fubar
parents:
diff changeset
251
e7922416086d Uploaded
fubar
parents:
diff changeset
252 # Read in inputs
e7922416086d Uploaded
fubar
parents:
diff changeset
253
e7922416086d Uploaded
fubar
parents:
diff changeset
254 samples <- read.table(samplePath, header=TRUE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
255
e7922416086d Uploaded
fubar
parents:
diff changeset
256 anno <- read.table(annoPath, header=TRUE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
257
e7922416086d Uploaded
fubar
parents:
diff changeset
258 if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
259 counts <- read.table(countPath, header=TRUE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
260 }
e7922416086d Uploaded
fubar
parents:
diff changeset
261
e7922416086d Uploaded
fubar
parents:
diff changeset
262 ###################### Check inputs for correctness ############################
e7922416086d Uploaded
fubar
parents:
diff changeset
263 samples$ID <- make.names(samples$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
264
e7922416086d Uploaded
fubar
parents:
diff changeset
265 if ( !any(grepl("group", names(samples))) ) {
e7922416086d Uploaded
fubar
parents:
diff changeset
266 stop("'group' column not specified in sample annotation file")
e7922416086d Uploaded
fubar
parents:
diff changeset
267 } # Check if grouping variable has been specified
e7922416086d Uploaded
fubar
parents:
diff changeset
268
e7922416086d Uploaded
fubar
parents:
diff changeset
269 if (secFactName != "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
270 if ( !any(grepl(secFactName, names(samples))) ) {
e7922416086d Uploaded
fubar
parents:
diff changeset
271 tempStr <- paste0("Second factor specified as \"", secFactName, "\" but ",
e7922416086d Uploaded
fubar
parents:
diff changeset
272 "no such column name found in sample annotation file")
e7922416086d Uploaded
fubar
parents:
diff changeset
273 stop(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
274 } # Check if specified secondary factor is present
e7922416086d Uploaded
fubar
parents:
diff changeset
275 }
e7922416086d Uploaded
fubar
parents:
diff changeset
276
e7922416086d Uploaded
fubar
parents:
diff changeset
277
e7922416086d Uploaded
fubar
parents:
diff changeset
278 if ( any(table(samples$ID) > 1) ){
e7922416086d Uploaded
fubar
parents:
diff changeset
279 tab <- table(samples$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
280 offenders <- paste(names(tab[tab > 1]), collapse=", ")
e7922416086d Uploaded
fubar
parents:
diff changeset
281 offenders <- unmake.names(offenders)
e7922416086d Uploaded
fubar
parents:
diff changeset
282 stop("'ID' column of sample annotation must have unique values, values ",
e7922416086d Uploaded
fubar
parents:
diff changeset
283 offenders, " are repeated")
e7922416086d Uploaded
fubar
parents:
diff changeset
284 } # Check that IDs in sample annotation are unique
e7922416086d Uploaded
fubar
parents:
diff changeset
285
e7922416086d Uploaded
fubar
parents:
diff changeset
286 if (inputType == "fastq" || inputType == "pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
287
e7922416086d Uploaded
fubar
parents:
diff changeset
288 if ( any(table(anno$ID) > 1) ){
e7922416086d Uploaded
fubar
parents:
diff changeset
289 tab <- table(anno$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
290 offenders <- paste(names(tab[tab>1]), collapse=", ")
e7922416086d Uploaded
fubar
parents:
diff changeset
291 stop("'ID' column of hairpin annotation must have unique values, values ",
e7922416086d Uploaded
fubar
parents:
diff changeset
292 offenders, " are repeated")
e7922416086d Uploaded
fubar
parents:
diff changeset
293 } # Check that IDs in hairpin annotation are unique
e7922416086d Uploaded
fubar
parents:
diff changeset
294
e7922416086d Uploaded
fubar
parents:
diff changeset
295 } else if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
296 # The first element of the colnames will be 'ID' and should not match
e7922416086d Uploaded
fubar
parents:
diff changeset
297 idFromSample <- samples$ID
e7922416086d Uploaded
fubar
parents:
diff changeset
298 idFromTable <- colnames(counts)[-1]
e7922416086d Uploaded
fubar
parents:
diff changeset
299 if (any(is.na(match(idFromTable, idFromSample)))) {
e7922416086d Uploaded
fubar
parents:
diff changeset
300 stop("not all samples have groups specified")
e7922416086d Uploaded
fubar
parents:
diff changeset
301 } # Check that a group has be specifed for each sample
e7922416086d Uploaded
fubar
parents:
diff changeset
302
e7922416086d Uploaded
fubar
parents:
diff changeset
303 if ( any(table(counts$ID) > 1) ){
e7922416086d Uploaded
fubar
parents:
diff changeset
304 tab <- table(counts$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
305 offenders <- paste(names(tab[tab>1]), collapse=", ")
e7922416086d Uploaded
fubar
parents:
diff changeset
306 stop("'ID' column of count table must have unique values, values ",
e7922416086d Uploaded
fubar
parents:
diff changeset
307 offenders, " are repeated")
e7922416086d Uploaded
fubar
parents:
diff changeset
308 } # Check that IDs in count table are unique
e7922416086d Uploaded
fubar
parents:
diff changeset
309 }
e7922416086d Uploaded
fubar
parents:
diff changeset
310 if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
311 if (roastOpt == "yes") {
e7922416086d Uploaded
fubar
parents:
diff changeset
312 if (is.na(match("Gene", colnames(anno)))) {
e7922416086d Uploaded
fubar
parents:
diff changeset
313 tempStr <- paste("Gene-wise tests selected but'Gene' column not",
e7922416086d Uploaded
fubar
parents:
diff changeset
314 "specified in hairpin annotation file")
e7922416086d Uploaded
fubar
parents:
diff changeset
315 stop(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
316 }
e7922416086d Uploaded
fubar
parents:
diff changeset
317 }
e7922416086d Uploaded
fubar
parents:
diff changeset
318 }
e7922416086d Uploaded
fubar
parents:
diff changeset
319
e7922416086d Uploaded
fubar
parents:
diff changeset
320 if (secFactName != "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
321 if (workMode != "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
322 tempStr <- paste("only glm analysis type possible when secondary factor",
e7922416086d Uploaded
fubar
parents:
diff changeset
323 "used, please change appropriate option.")
e7922416086d Uploaded
fubar
parents:
diff changeset
324 }
e7922416086d Uploaded
fubar
parents:
diff changeset
325 }
e7922416086d Uploaded
fubar
parents:
diff changeset
326
e7922416086d Uploaded
fubar
parents:
diff changeset
327 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
328
e7922416086d Uploaded
fubar
parents:
diff changeset
329 # Process arguments
e7922416086d Uploaded
fubar
parents:
diff changeset
330 if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
331 if (roastOpt == "yes") {
e7922416086d Uploaded
fubar
parents:
diff changeset
332 wantRoast <- TRUE
e7922416086d Uploaded
fubar
parents:
diff changeset
333 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
334 wantRoast <- FALSE
e7922416086d Uploaded
fubar
parents:
diff changeset
335 }
e7922416086d Uploaded
fubar
parents:
diff changeset
336 }
e7922416086d Uploaded
fubar
parents:
diff changeset
337
e7922416086d Uploaded
fubar
parents:
diff changeset
338 # Split up contrasts seperated by comma into a vector and replace spaces with
e7922416086d Uploaded
fubar
parents:
diff changeset
339 # periods
e7922416086d Uploaded
fubar
parents:
diff changeset
340 if (exists("contrastData")) {
e7922416086d Uploaded
fubar
parents:
diff changeset
341 contrastData <- unlist(strsplit(contrastData, split=","))
e7922416086d Uploaded
fubar
parents:
diff changeset
342 contrastData <- sanitiseEquation(contrastData)
e7922416086d Uploaded
fubar
parents:
diff changeset
343 contrastData <- gsub(" ", ".", contrastData, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
344 }
e7922416086d Uploaded
fubar
parents:
diff changeset
345
e7922416086d Uploaded
fubar
parents:
diff changeset
346 # Replace spaces with periods in pair data
e7922416086d Uploaded
fubar
parents:
diff changeset
347 if (exists("pairData")) {
e7922416086d Uploaded
fubar
parents:
diff changeset
348 pairData <- make.names(pairData)
e7922416086d Uploaded
fubar
parents:
diff changeset
349 }
e7922416086d Uploaded
fubar
parents:
diff changeset
350
e7922416086d Uploaded
fubar
parents:
diff changeset
351 # Generate output folder and paths
e7922416086d Uploaded
fubar
parents:
diff changeset
352 dir.create(folderPath, showWarnings=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
353
e7922416086d Uploaded
fubar
parents:
diff changeset
354 # Generate links for outputs
e7922416086d Uploaded
fubar
parents:
diff changeset
355 imgOut("barHairpin")
e7922416086d Uploaded
fubar
parents:
diff changeset
356 imgOut("barIndex")
e7922416086d Uploaded
fubar
parents:
diff changeset
357 imgOut("mds")
e7922416086d Uploaded
fubar
parents:
diff changeset
358 imgOut("bcv")
e7922416086d Uploaded
fubar
parents:
diff changeset
359 if (workMode == "classic") {
e7922416086d Uploaded
fubar
parents:
diff changeset
360 smearPng <- makeOut(paste0("smear(", pairData[2], "-", pairData[1],").png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
361 smearPdf <- makeOut(paste0("smear(", pairData[2], "-", pairData[1],").pdf"))
e7922416086d Uploaded
fubar
parents:
diff changeset
362 topOut <- makeOut(paste0("toptag(", pairData[2], "-", pairData[1],").tsv"))
e7922416086d Uploaded
fubar
parents:
diff changeset
363 } else if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
364 smearPng <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
365 smearPdf <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
366 topOut <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
367 roastOut <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
368 barcodePng <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
369 barcodePdf <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
370 for (i in 1:length(contrastData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
371 smearPng[i] <- makeOut(paste0("smear(", contrastData[i], ").png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
372 smearPdf[i] <- makeOut(paste0("smear(", contrastData[i], ").pdf"))
e7922416086d Uploaded
fubar
parents:
diff changeset
373 topOut[i] <- makeOut(paste0("toptag(", contrastData[i], ").tsv"))
e7922416086d Uploaded
fubar
parents:
diff changeset
374 roastOut[i] <- makeOut(paste0("gene_level(", contrastData[i], ").tsv"))
e7922416086d Uploaded
fubar
parents:
diff changeset
375 barcodePng[i] <- makeOut(paste0("barcode(", contrastData[i], ").png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
376 barcodePdf[i] <- makeOut(paste0("barcode(", contrastData[i], ").pdf"))
e7922416086d Uploaded
fubar
parents:
diff changeset
377 }
e7922416086d Uploaded
fubar
parents:
diff changeset
378 }
e7922416086d Uploaded
fubar
parents:
diff changeset
379 countsOut <- makeOut("counts.tsv")
e7922416086d Uploaded
fubar
parents:
diff changeset
380 sessionOut <- makeOut("session_info.txt")
e7922416086d Uploaded
fubar
parents:
diff changeset
381
e7922416086d Uploaded
fubar
parents:
diff changeset
382 # Initialise data for html links and images, table with the link label and
e7922416086d Uploaded
fubar
parents:
diff changeset
383 # link address
e7922416086d Uploaded
fubar
parents:
diff changeset
384 linkData <- data.frame(Label=character(), Link=character(),
e7922416086d Uploaded
fubar
parents:
diff changeset
385 stringsAsFactors=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
386 imageData <- data.frame(Label=character(), Link=character(),
e7922416086d Uploaded
fubar
parents:
diff changeset
387 stringsAsFactors=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
388
e7922416086d Uploaded
fubar
parents:
diff changeset
389 # Initialise vectors for storage of up/down/neutral regulated counts
e7922416086d Uploaded
fubar
parents:
diff changeset
390 upCount <- numeric()
e7922416086d Uploaded
fubar
parents:
diff changeset
391 downCount <- numeric()
e7922416086d Uploaded
fubar
parents:
diff changeset
392 flatCount <- numeric()
e7922416086d Uploaded
fubar
parents:
diff changeset
393
e7922416086d Uploaded
fubar
parents:
diff changeset
394 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
395 ### Data Processing
e7922416086d Uploaded
fubar
parents:
diff changeset
396 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
397
e7922416086d Uploaded
fubar
parents:
diff changeset
398 # Transform gene selection from string into index values for mroast
e7922416086d Uploaded
fubar
parents:
diff changeset
399 if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
400 if (selectOpt == "rank") {
e7922416086d Uploaded
fubar
parents:
diff changeset
401 selectVals <- gsub(" ", "", selectVals, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
402 selectVals <- unlist(strsplit(selectVals, ","))
e7922416086d Uploaded
fubar
parents:
diff changeset
403
e7922416086d Uploaded
fubar
parents:
diff changeset
404 for (i in 1:length(selectVals)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
405 if (grepl(":", selectVals[i], fixed=TRUE)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
406 temp <- unlist(strsplit(selectVals[i], ":"))
e7922416086d Uploaded
fubar
parents:
diff changeset
407 selectVals <- selectVals[-i]
e7922416086d Uploaded
fubar
parents:
diff changeset
408 a <- as.numeric(temp[1])
e7922416086d Uploaded
fubar
parents:
diff changeset
409 b <- as.numeric(temp[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
410 selectVals <- c(selectVals, a:b)
e7922416086d Uploaded
fubar
parents:
diff changeset
411 }
e7922416086d Uploaded
fubar
parents:
diff changeset
412 }
e7922416086d Uploaded
fubar
parents:
diff changeset
413 selectVals <- as.numeric(unique(selectVals))
e7922416086d Uploaded
fubar
parents:
diff changeset
414 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
415 selectVals <- gsub(" ", "", selectVals, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
416 selectVals <- unlist(strsplit(selectVals, ","))
e7922416086d Uploaded
fubar
parents:
diff changeset
417 }
e7922416086d Uploaded
fubar
parents:
diff changeset
418 }
e7922416086d Uploaded
fubar
parents:
diff changeset
419
e7922416086d Uploaded
fubar
parents:
diff changeset
420 if (inputType == "fastq" || inputType == "pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
421 # Use EdgeR hairpin process and capture outputs
e7922416086d Uploaded
fubar
parents:
diff changeset
422
e7922416086d Uploaded
fubar
parents:
diff changeset
423 hpReadout <- capture.output(
e7922416086d Uploaded
fubar
parents:
diff changeset
424 data <- processAmplicons(readfile=fastqPath, readfile2=fastqPathRev,
e7922416086d Uploaded
fubar
parents:
diff changeset
425 barcodefile=samplePath,
e7922416086d Uploaded
fubar
parents:
diff changeset
426 hairpinfile=annoPath,
e7922416086d Uploaded
fubar
parents:
diff changeset
427 barcodeStart=barStart, barcodeEnd=barEnd,
e7922416086d Uploaded
fubar
parents:
diff changeset
428 barcodeStartRev=barStartRev,
e7922416086d Uploaded
fubar
parents:
diff changeset
429 barcodeEndRev=barEndRev,
e7922416086d Uploaded
fubar
parents:
diff changeset
430 hairpinStart=hpStart, hairpinEnd=hpEnd,
e7922416086d Uploaded
fubar
parents:
diff changeset
431 verbose=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
432 )
e7922416086d Uploaded
fubar
parents:
diff changeset
433
e7922416086d Uploaded
fubar
parents:
diff changeset
434 # Remove function output entries that show processing data or is empty
e7922416086d Uploaded
fubar
parents:
diff changeset
435 hpReadout <- hpReadout[hpReadout!=""]
e7922416086d Uploaded
fubar
parents:
diff changeset
436 hpReadout <- hpReadout[!grepl("Processing", hpReadout)]
e7922416086d Uploaded
fubar
parents:
diff changeset
437 hpReadout <- hpReadout[!grepl("in file", hpReadout)]
e7922416086d Uploaded
fubar
parents:
diff changeset
438 hpReadout <- gsub(" -- ", "", hpReadout, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
439
e7922416086d Uploaded
fubar
parents:
diff changeset
440 # Make the names of groups syntactically valid (replace spaces with periods)
e7922416086d Uploaded
fubar
parents:
diff changeset
441 data$samples$group <- make.names(data$samples$group)
e7922416086d Uploaded
fubar
parents:
diff changeset
442 if (secFactName != "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
443 data$samples[[secFactName]] <- make.names(data$samples[[secFactName]])
e7922416086d Uploaded
fubar
parents:
diff changeset
444 }
e7922416086d Uploaded
fubar
parents:
diff changeset
445 } else if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
446 # Process counts information, set ID column to be row names
e7922416086d Uploaded
fubar
parents:
diff changeset
447 rownames(counts) <- counts$ID
e7922416086d Uploaded
fubar
parents:
diff changeset
448 counts <- counts[ , !(colnames(counts) == "ID")]
e7922416086d Uploaded
fubar
parents:
diff changeset
449 countsRows <- nrow(counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
450
e7922416086d Uploaded
fubar
parents:
diff changeset
451 # Process group information
e7922416086d Uploaded
fubar
parents:
diff changeset
452 sampleNames <- colnames(counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
453 matchedIndex <- match(sampleNames, samples$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
454 factors <- samples$group[matchedIndex]
e7922416086d Uploaded
fubar
parents:
diff changeset
455
e7922416086d Uploaded
fubar
parents:
diff changeset
456 if (secFactName != "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
457 secFactors <- samples[[secFactName]][matchedIndex]
e7922416086d Uploaded
fubar
parents:
diff changeset
458 }
e7922416086d Uploaded
fubar
parents:
diff changeset
459
e7922416086d Uploaded
fubar
parents:
diff changeset
460 annoRows <- nrow(anno)
e7922416086d Uploaded
fubar
parents:
diff changeset
461 anno <- anno[match(rownames(counts), anno$ID), ]
e7922416086d Uploaded
fubar
parents:
diff changeset
462 annoMatched <- sum(!is.na(anno$ID))
e7922416086d Uploaded
fubar
parents:
diff changeset
463
e7922416086d Uploaded
fubar
parents:
diff changeset
464 if (any(is.na(anno$ID))) {
e7922416086d Uploaded
fubar
parents:
diff changeset
465 warningStr <- paste("count table contained more hairpins than",
e7922416086d Uploaded
fubar
parents:
diff changeset
466 "specified in hairpin annotation file")
e7922416086d Uploaded
fubar
parents:
diff changeset
467 warning(warningStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
468 }
e7922416086d Uploaded
fubar
parents:
diff changeset
469
e7922416086d Uploaded
fubar
parents:
diff changeset
470 # Filter out rows with zero counts
e7922416086d Uploaded
fubar
parents:
diff changeset
471 sel <- rowSums(counts)!=0
e7922416086d Uploaded
fubar
parents:
diff changeset
472 counts <- counts[sel, ]
e7922416086d Uploaded
fubar
parents:
diff changeset
473 anno <- anno[sel, ]
e7922416086d Uploaded
fubar
parents:
diff changeset
474
e7922416086d Uploaded
fubar
parents:
diff changeset
475 # Create DGEList
e7922416086d Uploaded
fubar
parents:
diff changeset
476 data <- DGEList(counts=counts, lib.size=colSums(counts),
e7922416086d Uploaded
fubar
parents:
diff changeset
477 norm.factors=rep(1,ncol(counts)), genes=anno, group=factors)
e7922416086d Uploaded
fubar
parents:
diff changeset
478
e7922416086d Uploaded
fubar
parents:
diff changeset
479 # Make the names of groups syntactically valid (replace spaces with periods)
e7922416086d Uploaded
fubar
parents:
diff changeset
480 data$samples$group <- make.names(data$samples$group)
e7922416086d Uploaded
fubar
parents:
diff changeset
481 }
e7922416086d Uploaded
fubar
parents:
diff changeset
482
e7922416086d Uploaded
fubar
parents:
diff changeset
483 # Filter out any samples with zero counts
e7922416086d Uploaded
fubar
parents:
diff changeset
484 if (any(data$samples$lib.size == 0)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
485 sampleSel <- data$samples$lib.size != 0
e7922416086d Uploaded
fubar
parents:
diff changeset
486 filteredSamples <- paste(data$samples$ID[!sampleSel], collapse=", ")
e7922416086d Uploaded
fubar
parents:
diff changeset
487 data$counts <- data$counts[, sampleSel]
e7922416086d Uploaded
fubar
parents:
diff changeset
488 data$samples <- data$samples[sampleSel, ]
e7922416086d Uploaded
fubar
parents:
diff changeset
489 }
e7922416086d Uploaded
fubar
parents:
diff changeset
490
e7922416086d Uploaded
fubar
parents:
diff changeset
491 # Filter hairpins with low counts
e7922416086d Uploaded
fubar
parents:
diff changeset
492 preFilterCount <- nrow(data)
e7922416086d Uploaded
fubar
parents:
diff changeset
493 selRow <- rowSums(cpm(data$counts) > cpmReq) >= sampleReq
e7922416086d Uploaded
fubar
parents:
diff changeset
494 selCol <- colSums(data$counts) > readReq
e7922416086d Uploaded
fubar
parents:
diff changeset
495 data <- data[selRow, selCol]
e7922416086d Uploaded
fubar
parents:
diff changeset
496
e7922416086d Uploaded
fubar
parents:
diff changeset
497 # Check if any data survived filtering
e7922416086d Uploaded
fubar
parents:
diff changeset
498 if (length(data$counts) == 0) {
e7922416086d Uploaded
fubar
parents:
diff changeset
499 stop("no data remains after filtering, consider relaxing filters")
e7922416086d Uploaded
fubar
parents:
diff changeset
500 }
e7922416086d Uploaded
fubar
parents:
diff changeset
501
e7922416086d Uploaded
fubar
parents:
diff changeset
502 # Count number of filtered tags and samples
e7922416086d Uploaded
fubar
parents:
diff changeset
503 postFilterCount <- nrow(data)
e7922416086d Uploaded
fubar
parents:
diff changeset
504 filteredCount <- preFilterCount - postFilterCount
e7922416086d Uploaded
fubar
parents:
diff changeset
505 sampleFilterCount <- sum(!selCol)
e7922416086d Uploaded
fubar
parents:
diff changeset
506
e7922416086d Uploaded
fubar
parents:
diff changeset
507 if (secFactName == "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
508 # Estimate dispersions
e7922416086d Uploaded
fubar
parents:
diff changeset
509 data <- estimateDisp(data)
e7922416086d Uploaded
fubar
parents:
diff changeset
510 commonBCV <- round(sqrt(data$common.dispersion), 4)
e7922416086d Uploaded
fubar
parents:
diff changeset
511 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
512 # Construct design
e7922416086d Uploaded
fubar
parents:
diff changeset
513 if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
514
e7922416086d Uploaded
fubar
parents:
diff changeset
515 sampleNames <- colnames(counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
516 matchedIndex <- match(sampleNames, samples$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
517 factors <- factor(make.names(samples$group[matchedIndex]))
e7922416086d Uploaded
fubar
parents:
diff changeset
518
e7922416086d Uploaded
fubar
parents:
diff changeset
519 secFactors <- factor(make.names(samples[[secFactName]][matchedIndex]))
e7922416086d Uploaded
fubar
parents:
diff changeset
520
e7922416086d Uploaded
fubar
parents:
diff changeset
521 } else if (inputType == "fastq" || inputType == "pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
522
e7922416086d Uploaded
fubar
parents:
diff changeset
523 factors <- factor(data$sample$group)
e7922416086d Uploaded
fubar
parents:
diff changeset
524 secFactors <- factor(data$sample[[secFactName]])
e7922416086d Uploaded
fubar
parents:
diff changeset
525
e7922416086d Uploaded
fubar
parents:
diff changeset
526 }
e7922416086d Uploaded
fubar
parents:
diff changeset
527
e7922416086d Uploaded
fubar
parents:
diff changeset
528 design <- model.matrix(~0 + factors + secFactors)
e7922416086d Uploaded
fubar
parents:
diff changeset
529
e7922416086d Uploaded
fubar
parents:
diff changeset
530 # Estimate dispersions
e7922416086d Uploaded
fubar
parents:
diff changeset
531 data <- estimateDisp(data, design=design)
e7922416086d Uploaded
fubar
parents:
diff changeset
532 commonBCV <- round(sqrt(data$common.dispersion), 4)
e7922416086d Uploaded
fubar
parents:
diff changeset
533 }
e7922416086d Uploaded
fubar
parents:
diff changeset
534
e7922416086d Uploaded
fubar
parents:
diff changeset
535
e7922416086d Uploaded
fubar
parents:
diff changeset
536 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
537 ### Output Processing
e7922416086d Uploaded
fubar
parents:
diff changeset
538 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
539
e7922416086d Uploaded
fubar
parents:
diff changeset
540 # Plot number of hairpins that could be matched per sample
e7922416086d Uploaded
fubar
parents:
diff changeset
541 png(barIndexPng, width=600, height=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
542 barplot(height<-colSums(data$counts), las=2, main="Counts per index",
e7922416086d Uploaded
fubar
parents:
diff changeset
543 cex.names=1.0, cex.axis=0.8, ylim=c(0, max(height)*1.2))
e7922416086d Uploaded
fubar
parents:
diff changeset
544 imageData[1, ] <- c("Counts per Index", "barIndex.png")
e7922416086d Uploaded
fubar
parents:
diff changeset
545 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
546
e7922416086d Uploaded
fubar
parents:
diff changeset
547 pdf(barIndexPdf)
e7922416086d Uploaded
fubar
parents:
diff changeset
548 barplot(height<-colSums(data$counts), las=2, main="Counts per index",
e7922416086d Uploaded
fubar
parents:
diff changeset
549 cex.names=1.0, cex.axis=0.8, ylim=c(0, max(height)*1.2))
e7922416086d Uploaded
fubar
parents:
diff changeset
550 linkData[1, ] <- c("Counts per Index Barplot (.pdf)", "barIndex.pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
551 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
552
e7922416086d Uploaded
fubar
parents:
diff changeset
553 # Plot per hairpin totals across all samples
e7922416086d Uploaded
fubar
parents:
diff changeset
554 png(barHairpinPng, width=600, height=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
555 if (nrow(data$counts)<50) {
e7922416086d Uploaded
fubar
parents:
diff changeset
556 barplot(height<-rowSums(data$counts), las=2, main="Counts per hairpin",
e7922416086d Uploaded
fubar
parents:
diff changeset
557 cex.names=0.8, cex.axis=0.8, ylim=c(0, max(height)*1.2))
e7922416086d Uploaded
fubar
parents:
diff changeset
558 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
559 barplot(height<-rowSums(data$counts), las=2, main="Counts per hairpin",
e7922416086d Uploaded
fubar
parents:
diff changeset
560 cex.names=0.8, cex.axis=0.8, ylim=c(0, max(height)*1.2),
e7922416086d Uploaded
fubar
parents:
diff changeset
561 names.arg=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
562 }
e7922416086d Uploaded
fubar
parents:
diff changeset
563 imageData <- rbind(imageData, c("Counts per Hairpin", "barHairpin.png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
564 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
565
e7922416086d Uploaded
fubar
parents:
diff changeset
566 pdf(barHairpinPdf)
e7922416086d Uploaded
fubar
parents:
diff changeset
567 if (nrow(data$counts)<50) {
e7922416086d Uploaded
fubar
parents:
diff changeset
568 barplot(height<-rowSums(data$counts), las=2, main="Counts per hairpin",
e7922416086d Uploaded
fubar
parents:
diff changeset
569 cex.names=0.8, cex.axis=0.8, ylim=c(0, max(height)*1.2))
e7922416086d Uploaded
fubar
parents:
diff changeset
570 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
571 barplot(height<-rowSums(data$counts), las=2, main="Counts per hairpin",
e7922416086d Uploaded
fubar
parents:
diff changeset
572 cex.names=0.8, cex.axis=0.8, ylim=c(0, max(height)*1.2),
e7922416086d Uploaded
fubar
parents:
diff changeset
573 names.arg=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
574 }
e7922416086d Uploaded
fubar
parents:
diff changeset
575 newEntry <- c("Counts per Hairpin Barplot (.pdf)", "barHairpin.pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
576 linkData <- rbind(linkData, newEntry)
e7922416086d Uploaded
fubar
parents:
diff changeset
577 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
578
e7922416086d Uploaded
fubar
parents:
diff changeset
579 # Make an MDS plot to visualise relationships between replicate samples
e7922416086d Uploaded
fubar
parents:
diff changeset
580 png(mdsPng, width=600, height=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
581 plotMDS(data, labels=data$samples$group, col=as.numeric(data$samples$group), main="MDS Plot")
e7922416086d Uploaded
fubar
parents:
diff changeset
582 imageData <- rbind(imageData, c("MDS Plot", "mds.png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
583 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
584
e7922416086d Uploaded
fubar
parents:
diff changeset
585 pdf(mdsPdf)
e7922416086d Uploaded
fubar
parents:
diff changeset
586 plotMDS(data, labels=data$samples$group, col=as.numeric(data$samples$group),main="MDS Plot")
e7922416086d Uploaded
fubar
parents:
diff changeset
587 newEntry <- c("MDS Plot (.pdf)", "mds.pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
588 linkData <- rbind(linkData, newEntry)
e7922416086d Uploaded
fubar
parents:
diff changeset
589 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
590
e7922416086d Uploaded
fubar
parents:
diff changeset
591 # BCV Plot
e7922416086d Uploaded
fubar
parents:
diff changeset
592 png(bcvPng, width=600, height=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
593 plotBCV(data, main="BCV Plot")
e7922416086d Uploaded
fubar
parents:
diff changeset
594 imageData <- rbind(imageData, c("BCV Plot", "bcv.png"))
e7922416086d Uploaded
fubar
parents:
diff changeset
595 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
596
e7922416086d Uploaded
fubar
parents:
diff changeset
597 pdf(bcvPdf)
e7922416086d Uploaded
fubar
parents:
diff changeset
598 plotBCV(data, main="BCV Plot")
e7922416086d Uploaded
fubar
parents:
diff changeset
599 newEntry <- c("BCV Plot (.pdf)", "bcv.pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
600 linkData <- rbind(linkData, newEntry)
e7922416086d Uploaded
fubar
parents:
diff changeset
601 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
602
e7922416086d Uploaded
fubar
parents:
diff changeset
603 if (workMode == "classic") {
e7922416086d Uploaded
fubar
parents:
diff changeset
604 # Assess differential representation using classic exact testing methodology
e7922416086d Uploaded
fubar
parents:
diff changeset
605 # in edgeR
e7922416086d Uploaded
fubar
parents:
diff changeset
606 testData <- exactTest(data, pair=pairData)
e7922416086d Uploaded
fubar
parents:
diff changeset
607
e7922416086d Uploaded
fubar
parents:
diff changeset
608 top <- topTags(testData, n=Inf)
e7922416086d Uploaded
fubar
parents:
diff changeset
609
e7922416086d Uploaded
fubar
parents:
diff changeset
610 if (selectDirection == "all") {
e7922416086d Uploaded
fubar
parents:
diff changeset
611 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
612 (abs(top$table$logFC) > lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
613 } else if (selectDirection == "up") {
e7922416086d Uploaded
fubar
parents:
diff changeset
614 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
615 (top$table$logFC > lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
616 } else if (selectDirection == "down") {
e7922416086d Uploaded
fubar
parents:
diff changeset
617 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
618 (top$table$logFC < -lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
619 }
e7922416086d Uploaded
fubar
parents:
diff changeset
620
e7922416086d Uploaded
fubar
parents:
diff changeset
621 write.table(top, file=topOut, row.names=FALSE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
622
e7922416086d Uploaded
fubar
parents:
diff changeset
623 linkName <- paste0("Top Tags Table(", pairData[2], "-", pairData[1],
e7922416086d Uploaded
fubar
parents:
diff changeset
624 ") (.tsv)")
e7922416086d Uploaded
fubar
parents:
diff changeset
625 linkAddr <- paste0("toptag(", pairData[2], "-", pairData[1], ").tsv")
e7922416086d Uploaded
fubar
parents:
diff changeset
626 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
627
e7922416086d Uploaded
fubar
parents:
diff changeset
628 upCount[1] <- sum(top$table$FDR < fdrThresh & top$table$logFC > lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
629
e7922416086d Uploaded
fubar
parents:
diff changeset
630 downCount[1] <- sum(top$table$FDR < fdrThresh &
e7922416086d Uploaded
fubar
parents:
diff changeset
631 top$table$logFC < -lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
632
e7922416086d Uploaded
fubar
parents:
diff changeset
633 flatCount[1] <- sum(top$table$FDR > fdrThresh |
e7922416086d Uploaded
fubar
parents:
diff changeset
634 abs(top$table$logFC) < lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
635
e7922416086d Uploaded
fubar
parents:
diff changeset
636
e7922416086d Uploaded
fubar
parents:
diff changeset
637
e7922416086d Uploaded
fubar
parents:
diff changeset
638 # Select hairpins with FDR < 0.05 to highlight on plot
e7922416086d Uploaded
fubar
parents:
diff changeset
639 png(smearPng, width=600, height=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
640 plotTitle <- gsub(".", " ",
e7922416086d Uploaded
fubar
parents:
diff changeset
641 paste0("Smear Plot: ", pairData[2], "-", pairData[1]),
e7922416086d Uploaded
fubar
parents:
diff changeset
642 fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
643 plotSmear(testData, de.tags=topIDs,
e7922416086d Uploaded
fubar
parents:
diff changeset
644 pch=20, cex=1.0, main=plotTitle)
e7922416086d Uploaded
fubar
parents:
diff changeset
645 abline(h=c(-1, 0, 1), col=c("dodgerblue", "yellow", "dodgerblue"), lty=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
646 imgName <- paste0("Smear Plot(", pairData[2], "-", pairData[1], ")")
e7922416086d Uploaded
fubar
parents:
diff changeset
647 imgAddr <- paste0("smear(", pairData[2], "-", pairData[1],").png")
e7922416086d Uploaded
fubar
parents:
diff changeset
648 imageData <- rbind(imageData, c(imgName, imgAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
649 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
650
e7922416086d Uploaded
fubar
parents:
diff changeset
651 pdf(smearPdf)
e7922416086d Uploaded
fubar
parents:
diff changeset
652 plotTitle <- gsub(".", " ",
e7922416086d Uploaded
fubar
parents:
diff changeset
653 paste0("Smear Plot: ", pairData[2], "-", pairData[1]),
e7922416086d Uploaded
fubar
parents:
diff changeset
654 fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
655 plotSmear(testData, de.tags=topIDs,
e7922416086d Uploaded
fubar
parents:
diff changeset
656 pch=20, cex=1.0, main=plotTitle)
e7922416086d Uploaded
fubar
parents:
diff changeset
657 abline(h=c(-1, 0, 1), col=c("dodgerblue", "yellow", "dodgerblue"), lty=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
658 imgName <- paste0("Smear Plot(", pairData[2], "-", pairData[1], ") (.pdf)")
e7922416086d Uploaded
fubar
parents:
diff changeset
659 imgAddr <- paste0("smear(", pairData[2], "-", pairData[1], ").pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
660 linkData <- rbind(linkData, c(imgName, imgAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
661 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
662
e7922416086d Uploaded
fubar
parents:
diff changeset
663 } else if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
664 # Generating design information
e7922416086d Uploaded
fubar
parents:
diff changeset
665 if (secFactName == "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
666
e7922416086d Uploaded
fubar
parents:
diff changeset
667 factors <- factor(data$sample$group)
e7922416086d Uploaded
fubar
parents:
diff changeset
668 design <- model.matrix(~0 + factors)
e7922416086d Uploaded
fubar
parents:
diff changeset
669
e7922416086d Uploaded
fubar
parents:
diff changeset
670 colnames(design) <- gsub("factors", "", colnames(design), fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
671
e7922416086d Uploaded
fubar
parents:
diff changeset
672 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
673
e7922416086d Uploaded
fubar
parents:
diff changeset
674 factors <- factor(data$sample$group)
e7922416086d Uploaded
fubar
parents:
diff changeset
675
e7922416086d Uploaded
fubar
parents:
diff changeset
676 if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
677
e7922416086d Uploaded
fubar
parents:
diff changeset
678 sampleNames <- colnames(counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
679 matchedIndex <- match(sampleNames, samples$ID)
e7922416086d Uploaded
fubar
parents:
diff changeset
680 factors <- factor(samples$group[matchedIndex])
e7922416086d Uploaded
fubar
parents:
diff changeset
681
e7922416086d Uploaded
fubar
parents:
diff changeset
682 secFactors <- factor(samples[[secFactName]][matchedIndex])
e7922416086d Uploaded
fubar
parents:
diff changeset
683
e7922416086d Uploaded
fubar
parents:
diff changeset
684 } else if (inputType == "fastq" || inputType == "pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
685
e7922416086d Uploaded
fubar
parents:
diff changeset
686 secFactors <- factor(data$sample[[secFactName]])
e7922416086d Uploaded
fubar
parents:
diff changeset
687
e7922416086d Uploaded
fubar
parents:
diff changeset
688 }
e7922416086d Uploaded
fubar
parents:
diff changeset
689
e7922416086d Uploaded
fubar
parents:
diff changeset
690 design <- model.matrix(~0 + factors + secFactors)
e7922416086d Uploaded
fubar
parents:
diff changeset
691
e7922416086d Uploaded
fubar
parents:
diff changeset
692 colnames(design) <- gsub("factors", "", colnames(design), fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
693 colnames(design) <- gsub("secFactors", secFactName, colnames(design),
e7922416086d Uploaded
fubar
parents:
diff changeset
694 fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
695 }
e7922416086d Uploaded
fubar
parents:
diff changeset
696
e7922416086d Uploaded
fubar
parents:
diff changeset
697
e7922416086d Uploaded
fubar
parents:
diff changeset
698 # Split up contrasts seperated by comma into a vector
e7922416086d Uploaded
fubar
parents:
diff changeset
699 contrastData <- unlist(strsplit(contrastData, split=","))
e7922416086d Uploaded
fubar
parents:
diff changeset
700
e7922416086d Uploaded
fubar
parents:
diff changeset
701 for (i in 1:length(contrastData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
702 # Generate contrasts information
e7922416086d Uploaded
fubar
parents:
diff changeset
703 contrasts <- makeContrasts(contrasts=contrastData[i], levels=design)
e7922416086d Uploaded
fubar
parents:
diff changeset
704
e7922416086d Uploaded
fubar
parents:
diff changeset
705 # Fit negative bionomial GLM
e7922416086d Uploaded
fubar
parents:
diff changeset
706 fit <- glmFit(data, design)
e7922416086d Uploaded
fubar
parents:
diff changeset
707 # Carry out Likelihood ratio test
e7922416086d Uploaded
fubar
parents:
diff changeset
708 testData <- glmLRT(fit, contrast=contrasts)
e7922416086d Uploaded
fubar
parents:
diff changeset
709
e7922416086d Uploaded
fubar
parents:
diff changeset
710 # Select hairpins with FDR < 0.05 to highlight on plot
e7922416086d Uploaded
fubar
parents:
diff changeset
711 top <- topTags(testData, n=Inf)
e7922416086d Uploaded
fubar
parents:
diff changeset
712
e7922416086d Uploaded
fubar
parents:
diff changeset
713 if (selectDirection == "all") {
e7922416086d Uploaded
fubar
parents:
diff changeset
714 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
715 (abs(top$table$logFC) > lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
716 } else if (selectDirection == "up") {
e7922416086d Uploaded
fubar
parents:
diff changeset
717 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
718 (top$table$logFC > lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
719 } else if (selectDirection == "down") {
e7922416086d Uploaded
fubar
parents:
diff changeset
720 topIDs <- top$table[(top$table$FDR < fdrThresh) &
e7922416086d Uploaded
fubar
parents:
diff changeset
721 (top$table$logFC < -lfcThresh), 1]
e7922416086d Uploaded
fubar
parents:
diff changeset
722 }
e7922416086d Uploaded
fubar
parents:
diff changeset
723
e7922416086d Uploaded
fubar
parents:
diff changeset
724 write.table(top, file=topOut[i], row.names=FALSE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
725
e7922416086d Uploaded
fubar
parents:
diff changeset
726 linkName <- paste0("Top Tags Table(", contrastData[i], ") (.tsv)")
e7922416086d Uploaded
fubar
parents:
diff changeset
727 linkAddr <- paste0("toptag(", contrastData[i], ").tsv")
e7922416086d Uploaded
fubar
parents:
diff changeset
728 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
729
e7922416086d Uploaded
fubar
parents:
diff changeset
730 # Collect counts for differential representation
e7922416086d Uploaded
fubar
parents:
diff changeset
731 upCount[i] <- sum(top$table$FDR < fdrThresh & top$table$logFC > lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
732 downCount[i] <- sum(top$table$FDR < fdrThresh &
e7922416086d Uploaded
fubar
parents:
diff changeset
733 top$table$logFC < -lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
734 flatCount[i] <- sum(top$table$FDR > fdrThresh |
e7922416086d Uploaded
fubar
parents:
diff changeset
735 abs(top$table$logFC) < lfcThresh)
e7922416086d Uploaded
fubar
parents:
diff changeset
736
e7922416086d Uploaded
fubar
parents:
diff changeset
737 # Make a plot of logFC versus logCPM
e7922416086d Uploaded
fubar
parents:
diff changeset
738 png(smearPng[i], height=600, width=600)
e7922416086d Uploaded
fubar
parents:
diff changeset
739 plotTitle <- paste("Smear Plot:", gsub(".", " ", contrastData[i],
e7922416086d Uploaded
fubar
parents:
diff changeset
740 fixed=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
741 plotSmear(testData, de.tags=topIDs, pch=20, cex=0.8, main=plotTitle)
e7922416086d Uploaded
fubar
parents:
diff changeset
742 abline(h=c(-1, 0, 1), col=c("dodgerblue", "yellow", "dodgerblue"), lty=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
743
e7922416086d Uploaded
fubar
parents:
diff changeset
744 imgName <- paste0("Smear Plot(", contrastData[i], ")")
e7922416086d Uploaded
fubar
parents:
diff changeset
745 imgAddr <- paste0("smear(", contrastData[i], ").png")
e7922416086d Uploaded
fubar
parents:
diff changeset
746 imageData <- rbind(imageData, c(imgName, imgAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
747 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
748
e7922416086d Uploaded
fubar
parents:
diff changeset
749 pdf(smearPdf[i])
e7922416086d Uploaded
fubar
parents:
diff changeset
750 plotTitle <- paste("Smear Plot:", gsub(".", " ", contrastData[i],
e7922416086d Uploaded
fubar
parents:
diff changeset
751 fixed=TRUE))
e7922416086d Uploaded
fubar
parents:
diff changeset
752 plotSmear(testData, de.tags=topIDs, pch=20, cex=0.8, main=plotTitle)
e7922416086d Uploaded
fubar
parents:
diff changeset
753 abline(h=c(-1, 0, 1), col=c("dodgerblue", "yellow", "dodgerblue"), lty=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
754
e7922416086d Uploaded
fubar
parents:
diff changeset
755 linkName <- paste0("Smear Plot(", contrastData[i], ") (.pdf)")
e7922416086d Uploaded
fubar
parents:
diff changeset
756 linkAddr <- paste0("smear(", contrastData[i], ").pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
757 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
758 invisible(dev.off())
e7922416086d Uploaded
fubar
parents:
diff changeset
759
e7922416086d Uploaded
fubar
parents:
diff changeset
760 genes <- as.character(data$genes$Gene)
e7922416086d Uploaded
fubar
parents:
diff changeset
761 unq <- unique(genes)
e7922416086d Uploaded
fubar
parents:
diff changeset
762 unq <- unq[!is.na(unq)]
e7922416086d Uploaded
fubar
parents:
diff changeset
763 geneList <- list()
e7922416086d Uploaded
fubar
parents:
diff changeset
764 for (gene in unq) {
e7922416086d Uploaded
fubar
parents:
diff changeset
765 if (length(which(genes == gene)) >= hairpinReq) {
e7922416086d Uploaded
fubar
parents:
diff changeset
766 geneList[[gene]] <- which(genes == gene)
e7922416086d Uploaded
fubar
parents:
diff changeset
767 }
e7922416086d Uploaded
fubar
parents:
diff changeset
768 }
e7922416086d Uploaded
fubar
parents:
diff changeset
769
e7922416086d Uploaded
fubar
parents:
diff changeset
770 if (wantRoast) {
e7922416086d Uploaded
fubar
parents:
diff changeset
771 # Input preparaton for roast
e7922416086d Uploaded
fubar
parents:
diff changeset
772 nrot <- 9999
e7922416086d Uploaded
fubar
parents:
diff changeset
773 set.seed(602214129)
e7922416086d Uploaded
fubar
parents:
diff changeset
774 roastData <- mroast(data, index=geneList, design=design,
e7922416086d Uploaded
fubar
parents:
diff changeset
775 contrast=contrasts, nrot=nrot)
e7922416086d Uploaded
fubar
parents:
diff changeset
776 roastData <- cbind(GeneID=rownames(roastData), roastData)
e7922416086d Uploaded
fubar
parents:
diff changeset
777 write.table(roastData, file=roastOut[i], row.names=FALSE, sep="\t")
e7922416086d Uploaded
fubar
parents:
diff changeset
778 linkName <- paste0("Gene Level Analysis Table(", contrastData[i],
e7922416086d Uploaded
fubar
parents:
diff changeset
779 ") (.tsv)")
e7922416086d Uploaded
fubar
parents:
diff changeset
780 linkAddr <- paste0("gene_level(", contrastData[i], ").tsv")
e7922416086d Uploaded
fubar
parents:
diff changeset
781 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
782 if (selectOpt == "rank") {
e7922416086d Uploaded
fubar
parents:
diff changeset
783 selectedGenes <- rownames(roastData)[selectVals]
e7922416086d Uploaded
fubar
parents:
diff changeset
784 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
785 selectedGenes <- selectVals
e7922416086d Uploaded
fubar
parents:
diff changeset
786 }
e7922416086d Uploaded
fubar
parents:
diff changeset
787
e7922416086d Uploaded
fubar
parents:
diff changeset
788 if (packageVersion("limma")<"3.19.19") {
e7922416086d Uploaded
fubar
parents:
diff changeset
789 png(barcodePng[i], width=600, height=length(selectedGenes)*150)
e7922416086d Uploaded
fubar
parents:
diff changeset
790 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
791 png(barcodePng[i], width=600, height=length(selectedGenes)*300)
e7922416086d Uploaded
fubar
parents:
diff changeset
792 }
e7922416086d Uploaded
fubar
parents:
diff changeset
793 par(mfrow=c(length(selectedGenes), 1))
e7922416086d Uploaded
fubar
parents:
diff changeset
794 for (gene in selectedGenes) {
e7922416086d Uploaded
fubar
parents:
diff changeset
795 barcodeplot(testData$table$logFC, index=geneList[[gene]],
e7922416086d Uploaded
fubar
parents:
diff changeset
796 main=paste("Barcode Plot for", gene, "(logFCs)",
e7922416086d Uploaded
fubar
parents:
diff changeset
797 gsub(".", " ", contrastData[i])),
e7922416086d Uploaded
fubar
parents:
diff changeset
798 labels=c("Positive logFC", "Negative logFC"))
e7922416086d Uploaded
fubar
parents:
diff changeset
799 }
e7922416086d Uploaded
fubar
parents:
diff changeset
800 imgName <- paste0("Barcode Plot(", contrastData[i], ")")
e7922416086d Uploaded
fubar
parents:
diff changeset
801 imgAddr <- paste0("barcode(", contrastData[i], ").png")
e7922416086d Uploaded
fubar
parents:
diff changeset
802 imageData <- rbind(imageData, c(imgName, imgAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
803 dev.off()
e7922416086d Uploaded
fubar
parents:
diff changeset
804 if (packageVersion("limma")<"3.19.19") {
e7922416086d Uploaded
fubar
parents:
diff changeset
805 pdf(barcodePdf[i], width=8, height=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
806 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
807 pdf(barcodePdf[i], width=8, height=4)
e7922416086d Uploaded
fubar
parents:
diff changeset
808 }
e7922416086d Uploaded
fubar
parents:
diff changeset
809 for (gene in selectedGenes) {
e7922416086d Uploaded
fubar
parents:
diff changeset
810 barcodeplot(testData$table$logFC, index=geneList[[gene]],
e7922416086d Uploaded
fubar
parents:
diff changeset
811 main=paste("Barcode Plot for", gene, "(logFCs)",
e7922416086d Uploaded
fubar
parents:
diff changeset
812 gsub(".", " ", contrastData[i])),
e7922416086d Uploaded
fubar
parents:
diff changeset
813 labels=c("Positive logFC", "Negative logFC"))
e7922416086d Uploaded
fubar
parents:
diff changeset
814 }
e7922416086d Uploaded
fubar
parents:
diff changeset
815 linkName <- paste0("Barcode Plot(", contrastData[i], ") (.pdf)")
e7922416086d Uploaded
fubar
parents:
diff changeset
816 linkAddr <- paste0("barcode(", contrastData[i], ").pdf")
e7922416086d Uploaded
fubar
parents:
diff changeset
817 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
818 dev.off()
e7922416086d Uploaded
fubar
parents:
diff changeset
819 }
e7922416086d Uploaded
fubar
parents:
diff changeset
820 }
e7922416086d Uploaded
fubar
parents:
diff changeset
821 }
e7922416086d Uploaded
fubar
parents:
diff changeset
822
e7922416086d Uploaded
fubar
parents:
diff changeset
823 # Generate data frame of the significant differences
e7922416086d Uploaded
fubar
parents:
diff changeset
824 sigDiff <- data.frame(Up=upCount, Flat=flatCount, Down=downCount)
e7922416086d Uploaded
fubar
parents:
diff changeset
825 if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
826
e7922416086d Uploaded
fubar
parents:
diff changeset
827 row.names(sigDiff) <- contrastData
e7922416086d Uploaded
fubar
parents:
diff changeset
828
e7922416086d Uploaded
fubar
parents:
diff changeset
829 } else if (workMode == "classic") {
e7922416086d Uploaded
fubar
parents:
diff changeset
830
e7922416086d Uploaded
fubar
parents:
diff changeset
831 row.names(sigDiff) <- paste0(pairData[2], "-", pairData[1])
e7922416086d Uploaded
fubar
parents:
diff changeset
832
e7922416086d Uploaded
fubar
parents:
diff changeset
833 }
e7922416086d Uploaded
fubar
parents:
diff changeset
834
e7922416086d Uploaded
fubar
parents:
diff changeset
835 # Output table of summarised counts
e7922416086d Uploaded
fubar
parents:
diff changeset
836 ID <- rownames(data$counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
837 outputCounts <- cbind(ID, data$counts)
e7922416086d Uploaded
fubar
parents:
diff changeset
838 write.table(outputCounts, file=countsOut, row.names=FALSE, sep="\t",
e7922416086d Uploaded
fubar
parents:
diff changeset
839 quote=FALSE)
e7922416086d Uploaded
fubar
parents:
diff changeset
840 linkName <- "Counts table (.tsv)"
e7922416086d Uploaded
fubar
parents:
diff changeset
841 linkAddr <- "counts.tsv"
e7922416086d Uploaded
fubar
parents:
diff changeset
842 linkData <- rbind(linkData, c(linkName, linkAddr))
e7922416086d Uploaded
fubar
parents:
diff changeset
843
e7922416086d Uploaded
fubar
parents:
diff changeset
844 # Record session info
e7922416086d Uploaded
fubar
parents:
diff changeset
845 writeLines(capture.output(sessionInfo()), sessionOut)
e7922416086d Uploaded
fubar
parents:
diff changeset
846 linkData <- rbind(linkData, c("Session Info", "session_info.txt"))
e7922416086d Uploaded
fubar
parents:
diff changeset
847
e7922416086d Uploaded
fubar
parents:
diff changeset
848 # Record ending time and calculate total run time
e7922416086d Uploaded
fubar
parents:
diff changeset
849 timeEnd <- as.character(Sys.time())
e7922416086d Uploaded
fubar
parents:
diff changeset
850 timeTaken <- capture.output(round(difftime(timeEnd,timeStart), digits=3))
e7922416086d Uploaded
fubar
parents:
diff changeset
851 timeTaken <- gsub("Time difference of ", "", timeTaken, fixed=TRUE)
e7922416086d Uploaded
fubar
parents:
diff changeset
852 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
853 ### HTML Generation
e7922416086d Uploaded
fubar
parents:
diff changeset
854 ################################################################################
e7922416086d Uploaded
fubar
parents:
diff changeset
855 # Clear file
e7922416086d Uploaded
fubar
parents:
diff changeset
856 cat("", file=htmlPath)
e7922416086d Uploaded
fubar
parents:
diff changeset
857
e7922416086d Uploaded
fubar
parents:
diff changeset
858 cata("<html>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
859 HtmlHead("EdgeR Output")
e7922416086d Uploaded
fubar
parents:
diff changeset
860
e7922416086d Uploaded
fubar
parents:
diff changeset
861 cata("<body>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
862 cata("<h3>EdgeR Analysis Output:</h3>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
863 cata("<h4>Input Summary:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
864 if (inputType == "fastq" || inputType == "pairedFastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
865
e7922416086d Uploaded
fubar
parents:
diff changeset
866 cata("<ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
867 ListItem(hpReadout[1])
e7922416086d Uploaded
fubar
parents:
diff changeset
868 ListItem(hpReadout[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
869 cata("</ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
870 cata(hpReadout[3], "<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
871 cata("<ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
872 ListItem(hpReadout[4])
e7922416086d Uploaded
fubar
parents:
diff changeset
873 ListItem(hpReadout[7])
e7922416086d Uploaded
fubar
parents:
diff changeset
874 cata("</ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
875 cata(hpReadout[8:11], sep="<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
876 cata("<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
877 cata("<b>Please check that read percentages are consistent with ")
e7922416086d Uploaded
fubar
parents:
diff changeset
878 cata("expectations.</b><br >\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
879
e7922416086d Uploaded
fubar
parents:
diff changeset
880 } else if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
881
e7922416086d Uploaded
fubar
parents:
diff changeset
882 cata("<ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
883 ListItem("Number of Samples: ", ncol(data$counts))
e7922416086d Uploaded
fubar
parents:
diff changeset
884 ListItem("Number of Hairpins: ", countsRows)
e7922416086d Uploaded
fubar
parents:
diff changeset
885 ListItem("Number of annotations provided: ", annoRows)
e7922416086d Uploaded
fubar
parents:
diff changeset
886 ListItem("Number of annotations matched to hairpin: ", annoMatched)
e7922416086d Uploaded
fubar
parents:
diff changeset
887 cata("</ul>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
888
e7922416086d Uploaded
fubar
parents:
diff changeset
889 }
e7922416086d Uploaded
fubar
parents:
diff changeset
890
e7922416086d Uploaded
fubar
parents:
diff changeset
891 cata("The estimated common biological coefficient of variation (BCV) is: ",
e7922416086d Uploaded
fubar
parents:
diff changeset
892 commonBCV, "<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
893
e7922416086d Uploaded
fubar
parents:
diff changeset
894 if (secFactName == "none") {
e7922416086d Uploaded
fubar
parents:
diff changeset
895
e7922416086d Uploaded
fubar
parents:
diff changeset
896 cata("No secondary factor specified.<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
897
e7922416086d Uploaded
fubar
parents:
diff changeset
898 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
899
e7922416086d Uploaded
fubar
parents:
diff changeset
900 cata("Secondary factor specified as: ", secFactName, "<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
901
e7922416086d Uploaded
fubar
parents:
diff changeset
902 }
e7922416086d Uploaded
fubar
parents:
diff changeset
903
e7922416086d Uploaded
fubar
parents:
diff changeset
904 cata("<h4>Output:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
905 cata("PDF copies of JPEGS available in 'Plots' section.<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
906 for (i in 1:nrow(imageData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
907 if (grepl("barcode", imageData$Link[i])) {
e7922416086d Uploaded
fubar
parents:
diff changeset
908
e7922416086d Uploaded
fubar
parents:
diff changeset
909 if (packageVersion("limma")<"3.19.19") {
e7922416086d Uploaded
fubar
parents:
diff changeset
910
e7922416086d Uploaded
fubar
parents:
diff changeset
911 HtmlImage(imageData$Link[i], imageData$Label[i],
e7922416086d Uploaded
fubar
parents:
diff changeset
912 height=length(selectedGenes)*150)
e7922416086d Uploaded
fubar
parents:
diff changeset
913
e7922416086d Uploaded
fubar
parents:
diff changeset
914 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
915
e7922416086d Uploaded
fubar
parents:
diff changeset
916 HtmlImage(imageData$Link[i], imageData$Label[i],
e7922416086d Uploaded
fubar
parents:
diff changeset
917 height=length(selectedGenes)*300)
e7922416086d Uploaded
fubar
parents:
diff changeset
918
e7922416086d Uploaded
fubar
parents:
diff changeset
919 }
e7922416086d Uploaded
fubar
parents:
diff changeset
920 } else {
e7922416086d Uploaded
fubar
parents:
diff changeset
921
e7922416086d Uploaded
fubar
parents:
diff changeset
922 HtmlImage(imageData$Link[i], imageData$Label[i])
e7922416086d Uploaded
fubar
parents:
diff changeset
923
e7922416086d Uploaded
fubar
parents:
diff changeset
924 }
e7922416086d Uploaded
fubar
parents:
diff changeset
925 }
e7922416086d Uploaded
fubar
parents:
diff changeset
926 cata("<br />\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
927
e7922416086d Uploaded
fubar
parents:
diff changeset
928 cata("<h4>Differential Representation Counts:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
929
e7922416086d Uploaded
fubar
parents:
diff changeset
930 cata("<table border=\"1\" cellpadding=\"4\">\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
931 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
932 TableItem()
e7922416086d Uploaded
fubar
parents:
diff changeset
933 for (i in colnames(sigDiff)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
934 TableHeadItem(i)
e7922416086d Uploaded
fubar
parents:
diff changeset
935 }
e7922416086d Uploaded
fubar
parents:
diff changeset
936 cata("</tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
937 for (i in 1:nrow(sigDiff)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
938 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
939 TableHeadItem(unmake.names(row.names(sigDiff)[i]))
e7922416086d Uploaded
fubar
parents:
diff changeset
940 for (j in 1:ncol(sigDiff)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
941 TableItem(as.character(sigDiff[i, j]))
e7922416086d Uploaded
fubar
parents:
diff changeset
942 }
e7922416086d Uploaded
fubar
parents:
diff changeset
943 cata("</tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
944 }
e7922416086d Uploaded
fubar
parents:
diff changeset
945 cata("</table>")
e7922416086d Uploaded
fubar
parents:
diff changeset
946
e7922416086d Uploaded
fubar
parents:
diff changeset
947 cata("<h4>Plots:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
948 for (i in 1:nrow(linkData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
949 if (grepl(".pdf", linkData$Link[i])) {
e7922416086d Uploaded
fubar
parents:
diff changeset
950 HtmlLink(linkData$Link[i], linkData$Label[i])
e7922416086d Uploaded
fubar
parents:
diff changeset
951 }
e7922416086d Uploaded
fubar
parents:
diff changeset
952 }
e7922416086d Uploaded
fubar
parents:
diff changeset
953
e7922416086d Uploaded
fubar
parents:
diff changeset
954 cata("<h4>Tables:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
955 for (i in 1:nrow(linkData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
956 if (grepl(".tsv", linkData$Link[i])) {
e7922416086d Uploaded
fubar
parents:
diff changeset
957 HtmlLink(linkData$Link[i], linkData$Label[i])
e7922416086d Uploaded
fubar
parents:
diff changeset
958 }
e7922416086d Uploaded
fubar
parents:
diff changeset
959 }
e7922416086d Uploaded
fubar
parents:
diff changeset
960
e7922416086d Uploaded
fubar
parents:
diff changeset
961 cata("<p>Alt-click links to download file.</p>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
962 cata("<p>Click floppy disc icon on associated history item to download ")
e7922416086d Uploaded
fubar
parents:
diff changeset
963 cata("all files.</p>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
964 cata("<p>.tsv files can be viewed in Excel or any spreadsheet program.</p>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
965
e7922416086d Uploaded
fubar
parents:
diff changeset
966 cata("<h4>Additional Information:</h4>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
967
e7922416086d Uploaded
fubar
parents:
diff changeset
968 if (inputType == "fastq") {
e7922416086d Uploaded
fubar
parents:
diff changeset
969
e7922416086d Uploaded
fubar
parents:
diff changeset
970 ListItem("Data was gathered from fastq raw read file(s).")
e7922416086d Uploaded
fubar
parents:
diff changeset
971
e7922416086d Uploaded
fubar
parents:
diff changeset
972 } else if (inputType == "counts") {
e7922416086d Uploaded
fubar
parents:
diff changeset
973
e7922416086d Uploaded
fubar
parents:
diff changeset
974 ListItem("Data was gathered from a table of counts.")
e7922416086d Uploaded
fubar
parents:
diff changeset
975
e7922416086d Uploaded
fubar
parents:
diff changeset
976 }
e7922416086d Uploaded
fubar
parents:
diff changeset
977
e7922416086d Uploaded
fubar
parents:
diff changeset
978 if (cpmReq != 0 && sampleReq != 0) {
e7922416086d Uploaded
fubar
parents:
diff changeset
979 tempStr <- paste("Target sequences without more than", cpmReq,
e7922416086d Uploaded
fubar
parents:
diff changeset
980 "CPM in at least", sampleReq, "samples are insignificant",
e7922416086d Uploaded
fubar
parents:
diff changeset
981 "and filtered out.")
e7922416086d Uploaded
fubar
parents:
diff changeset
982 ListItem(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
983
e7922416086d Uploaded
fubar
parents:
diff changeset
984 filterProp <- round(filteredCount/preFilterCount*100, digits=2)
e7922416086d Uploaded
fubar
parents:
diff changeset
985 tempStr <- paste0(filteredCount, " of ", preFilterCount," (", filterProp,
e7922416086d Uploaded
fubar
parents:
diff changeset
986 "%) target sequences were filtered out for low ",
e7922416086d Uploaded
fubar
parents:
diff changeset
987 "count-per-million.")
e7922416086d Uploaded
fubar
parents:
diff changeset
988 ListItem(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
989 }
e7922416086d Uploaded
fubar
parents:
diff changeset
990
e7922416086d Uploaded
fubar
parents:
diff changeset
991 if (readReq != 0) {
e7922416086d Uploaded
fubar
parents:
diff changeset
992 tempStr <- paste("Samples that did not produce more than", readReq,
e7922416086d Uploaded
fubar
parents:
diff changeset
993 "counts were filtered out.")
e7922416086d Uploaded
fubar
parents:
diff changeset
994 ListItem(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
995
e7922416086d Uploaded
fubar
parents:
diff changeset
996 tempStr <- paste0(sampleFilterCount, " samples were filtered out for low ",
e7922416086d Uploaded
fubar
parents:
diff changeset
997 "counts.")
e7922416086d Uploaded
fubar
parents:
diff changeset
998 ListItem(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
999 }
e7922416086d Uploaded
fubar
parents:
diff changeset
1000
e7922416086d Uploaded
fubar
parents:
diff changeset
1001 if (exists("filteredSamples")) {
e7922416086d Uploaded
fubar
parents:
diff changeset
1002 tempStr <- paste("The following samples were filtered out for having zero",
e7922416086d Uploaded
fubar
parents:
diff changeset
1003 "library size: ", filteredSamples)
e7922416086d Uploaded
fubar
parents:
diff changeset
1004 ListItem(tempStr)
e7922416086d Uploaded
fubar
parents:
diff changeset
1005 }
e7922416086d Uploaded
fubar
parents:
diff changeset
1006
e7922416086d Uploaded
fubar
parents:
diff changeset
1007 if (workMode == "classic") {
e7922416086d Uploaded
fubar
parents:
diff changeset
1008 ListItem("An exact test was performed on each target sequence.")
e7922416086d Uploaded
fubar
parents:
diff changeset
1009 } else if (workMode == "glm") {
e7922416086d Uploaded
fubar
parents:
diff changeset
1010 ListItem("A generalised linear model was fitted to each target sequence.")
e7922416086d Uploaded
fubar
parents:
diff changeset
1011 }
e7922416086d Uploaded
fubar
parents:
diff changeset
1012
e7922416086d Uploaded
fubar
parents:
diff changeset
1013 cit <- character()
e7922416086d Uploaded
fubar
parents:
diff changeset
1014 link <-character()
e7922416086d Uploaded
fubar
parents:
diff changeset
1015 link[1] <- paste0("<a href=\"",
e7922416086d Uploaded
fubar
parents:
diff changeset
1016 "http://www.bioconductor.org/packages/release/bioc/",
e7922416086d Uploaded
fubar
parents:
diff changeset
1017 "vignettes/limma/inst/doc/usersguide.pdf",
e7922416086d Uploaded
fubar
parents:
diff changeset
1018 "\">", "limma User's Guide", "</a>.")
e7922416086d Uploaded
fubar
parents:
diff changeset
1019 link[2] <- paste0("<a href=\"",
e7922416086d Uploaded
fubar
parents:
diff changeset
1020 "http://www.bioconductor.org/packages/release/bioc/",
e7922416086d Uploaded
fubar
parents:
diff changeset
1021 "vignettes/edgeR/inst/doc/edgeRUsersGuide.pdf",
e7922416086d Uploaded
fubar
parents:
diff changeset
1022 "\">", "edgeR User's Guide", "</a>")
e7922416086d Uploaded
fubar
parents:
diff changeset
1023
e7922416086d Uploaded
fubar
parents:
diff changeset
1024 cit[1] <- paste("Robinson MD, McCarthy DJ and Smyth GK (2010).",
e7922416086d Uploaded
fubar
parents:
diff changeset
1025 "edgeR: a Bioconductor package for differential",
e7922416086d Uploaded
fubar
parents:
diff changeset
1026 "expression analysis of digital gene expression",
e7922416086d Uploaded
fubar
parents:
diff changeset
1027 "data. Bioinformatics 26, 139-140")
e7922416086d Uploaded
fubar
parents:
diff changeset
1028 cit[2] <- paste("Robinson MD and Smyth GK (2007). Moderated statistical tests",
e7922416086d Uploaded
fubar
parents:
diff changeset
1029 "for assessing differences in tag abundance. Bioinformatics",
e7922416086d Uploaded
fubar
parents:
diff changeset
1030 "23, 2881-2887")
e7922416086d Uploaded
fubar
parents:
diff changeset
1031 cit[3] <- paste("Robinson MD and Smyth GK (2008). Small-sample estimation of",
e7922416086d Uploaded
fubar
parents:
diff changeset
1032 "negative binomial dispersion, with applications to SAGE data.",
e7922416086d Uploaded
fubar
parents:
diff changeset
1033 "Biostatistics, 9, 321-332")
e7922416086d Uploaded
fubar
parents:
diff changeset
1034
e7922416086d Uploaded
fubar
parents:
diff changeset
1035 cit[4] <- paste("McCarthy DJ, Chen Y and Smyth GK (2012). Differential",
e7922416086d Uploaded
fubar
parents:
diff changeset
1036 "expression analysis of multifactor RNA-Seq experiments with",
e7922416086d Uploaded
fubar
parents:
diff changeset
1037 "respect to biological variation. Nucleic Acids Research 40,",
e7922416086d Uploaded
fubar
parents:
diff changeset
1038 "4288-4297")
e7922416086d Uploaded
fubar
parents:
diff changeset
1039
e7922416086d Uploaded
fubar
parents:
diff changeset
1040 cata("<h4>Citations</h4>")
e7922416086d Uploaded
fubar
parents:
diff changeset
1041 cata("<ol>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1042 ListItem(cit[1])
e7922416086d Uploaded
fubar
parents:
diff changeset
1043 ListItem(cit[2])
e7922416086d Uploaded
fubar
parents:
diff changeset
1044 ListItem(cit[3])
e7922416086d Uploaded
fubar
parents:
diff changeset
1045 ListItem(cit[4])
e7922416086d Uploaded
fubar
parents:
diff changeset
1046 cata("</ol>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1047
e7922416086d Uploaded
fubar
parents:
diff changeset
1048 cata("<p>Report problems to: su.s@wehi.edu.au</p>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1049
e7922416086d Uploaded
fubar
parents:
diff changeset
1050 for (i in 1:nrow(linkData)) {
e7922416086d Uploaded
fubar
parents:
diff changeset
1051 if (grepl("session_info", linkData$Link[i])) {
e7922416086d Uploaded
fubar
parents:
diff changeset
1052 HtmlLink(linkData$Link[i], linkData$Label[i])
e7922416086d Uploaded
fubar
parents:
diff changeset
1053 }
e7922416086d Uploaded
fubar
parents:
diff changeset
1054 }
e7922416086d Uploaded
fubar
parents:
diff changeset
1055
e7922416086d Uploaded
fubar
parents:
diff changeset
1056 cata("<table border=\"0\">\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1057 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1058 TableItem("Task started at:"); TableItem(timeStart)
e7922416086d Uploaded
fubar
parents:
diff changeset
1059 cata("</tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1060 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1061 TableItem("Task ended at:"); TableItem(timeEnd)
e7922416086d Uploaded
fubar
parents:
diff changeset
1062 cata("</tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1063 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1064 TableItem("Task run time:"); TableItem(timeTaken)
e7922416086d Uploaded
fubar
parents:
diff changeset
1065 cata("<tr>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1066 cata("</table>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1067
e7922416086d Uploaded
fubar
parents:
diff changeset
1068 cata("</body>\n")
e7922416086d Uploaded
fubar
parents:
diff changeset
1069 cata("</html>")