annotate dexseq.R @ 25:abf8b6260cae draft default tip

Uploaded
author pavanvidem
date Wed, 23 Sep 2015 09:31:36 -0400
parents 71cb8c5ae8bd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
1 ## Setup R error handling to go to stderr
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
2 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
3 # we need that to not crash galaxy with an UTF8 error on German LC settings.
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
4 Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
5
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
6 library("DEXSeq")
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
7 library('getopt')
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
8 library('rjson')
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
9
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
10
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
11 options(stringAsfactors = FALSE, useFancyQuotes = FALSE)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
12 args <- commandArgs(trailingOnly = TRUE)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
13
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
14 #get options, using the spec as defined by the enclosed list.
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
15 #we read the options from the default: commandArgs(TRUE).
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
16 spec = matrix(c(
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
17 'verbose', 'v', 2, "integer",
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
18 'help', 'h', 0, "logical",
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
19 'gtf', 'a', 1, "character",
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
20 'outfile', 'o', 1, "character",
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
21 'reportdir', 'r', 1, "character",
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
22 'factors', 'f', 1, "character",
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
23 'threads', 'p', 1, "integer",
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
24 'fdr', 'c', 1, "double"
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
25 ), byrow=TRUE, ncol=4);
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
26 opt = getopt(spec);
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
27
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
28 # if help was asked for print a friendly message
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
29 # and exit with a non-zero error code
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
30 if ( !is.null(opt$help) ) {
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
31 cat(getopt(spec, usage=TRUE));
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
32 q(status=1);
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
33 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
34
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
35 trim <- function (x) gsub("^\\s+|\\s+$", "", x)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
36 opt$samples <- trim(opt$samples)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
37 opt$factors <- trim(opt$factors)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
38
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
39 parser <- newJSONParser()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
40 parser$addData( opt$factors )
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
41 factorsList <- parser$getObject()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
42
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
43 sampleTable<-data.frame()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
44 countFiles<-c()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
45 factorNames<-c()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
46 primaryFactor<-""
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
47 for(factor in factorsList){
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
48 factorName<-factor[[1]]
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
49 factorNames<-append(factorNames, paste(factorName,"exon",sep=":"))
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
50 factorValuesMapList<-factor[[2]]
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
51 c = length(factorValuesMapList)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
52 for (factorValuesMap in factorValuesMapList){
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
53 for(files in factorValuesMap){
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
54 for(file in files){
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
55 if(primaryFactor == "") {
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
56 countFiles<-append(countFiles,file)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
57 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
58 sampleTable[basename(file),factorName]<-paste(c,names(factorValuesMap),sep="_")
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
59 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
60 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
61 c = c-1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
62 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
63 if(primaryFactor == ""){
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
64 primaryFactor <- factorName
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
65 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
66 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
67
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
68 factorNames<-append(factorNames,"exon")
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
69 factorNames<-append(factorNames,"sample")
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
70 factorNames<-rev(factorNames)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
71 formulaFullModel <- as.formula(paste("", paste(factorNames, collapse=" + "), sep=" ~ "))
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
72 factorNames <- head(factorNames,-1)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
73 formulaReducedModel <- as.formula(paste("", paste(factorNames, collapse=" + "), sep=" ~ "))
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
74
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
75 sampleTable
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
76 formulaFullModel
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
77 formulaReducedModel
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
78 primaryFactor
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
79 countFiles
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
80 opt$reportdir
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
81 opt$threads
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
82 getwd()
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
83
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
84 dxd = DEXSeqDataSetFromHTSeq(countFiles, sampleData=sampleTable, design= formulaFullModel, flattenedfile=opt$gtf)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
85
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
86 colData(dxd)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
87 dxd <- estimateSizeFactors(dxd)
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
88 print("Estimated size factors")
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
89 sizeFactors(dxd)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
90 BPPARAM=MulticoreParam(workers=opt$threads)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
91 dxd <- estimateDispersions(dxd, formula=formulaFullModel, BPPARAM=BPPARAM)
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
92 print("Estimated dispersions")
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
93 dxd <- testForDEU(dxd, fullModel=formulaFullModel, BPPARAM=BPPARAM)
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
94 print("tested for DEU")
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
95 dxd <- estimateExonFoldChanges(dxd, fitExpToVar=primaryFactor, BPPARAM=BPPARAM)
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
96 print("Estimated fold changes")
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
97 res <- DEXSeqResults(dxd)
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
98 print("Results")
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
99 table(res$padj <= opt$fdr)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
100 resSorted <- res[order(res$padj),]
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
101 head(resSorted)
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
102
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
103 write.table(as.data.frame(resSorted), file = opt$outfile, sep="\t", quote = FALSE, col.names = FALSE)
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
104 print("Written Results")
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
105
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
106 if ( !is.null(opt$reportdir) ) {
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
107 save(dxd, resSorted, file = file.path(opt$reportdir,"DEXSeq_analysis.RData"))
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
108 save.image()
22
71cb8c5ae8bd Uploaded
pavanvidem
parents: 19
diff changeset
109 DEXSeqHTML(res, path=opt$reportdir, FDR=opt$fdr, color=c("#B7FEA0", "#FF8F43", "#637EE9", "#FF0000", "#F1E7A1", "#C3EEE7","#CEAEFF", "#EDC3C5", "#AAA8AA"))
15
b7e9bf50295c Uploaded
pavanvidem
parents: 1
diff changeset
110 unlink(file.path(opt$reportdir,"DEXSeq_analysis.RData"))
1
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
111 }
bc7eab5753a8 Uploaded
pavanvidem
parents:
diff changeset
112 sessionInfo()