annotate deseq2.R @ 3:1ae1da9a5e66 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 521ea70d49fee701db4d832823644c8c3050f8f2-dirty
author iuc
date Fri, 04 Sep 2015 07:15:37 -0400
parents 5b1ce9db498e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
1 # A command-line interface to DESeq2 for use with Galaxy
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
2 # written by Bjoern Gruening and modified by Michael Love 2015.01.11
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
3 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
4 # one of these arguments is required:
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
5 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
6 # 'factors' a JSON list object from Galaxy
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
7 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
8 # 'sample_table' is a sample table as described in ?DESeqDataSetFromHTSeq
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
9 # with columns: sample name, filename, then factors (variables)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
10 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
11 # the output file has columns:
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
12 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
13 # baseMean (mean normalized count)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
14 # log2FoldChange (by default a moderated LFC estimate)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
15 # lfcSE (the standard error)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
16 # stat (the Wald statistic)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
17 # pvalue (p-value from comparison of Wald statistic to a standard Normal)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
18 # padj (adjusted p-value, Benjamini Hochberg correction on genes which pass the mean count filter)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
19 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
20 # the first variable in 'factors' and first column in 'sample_table' will be the primary factor.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
21 # the levels of the primary factor are used in the order of appearance in factors or in sample_table.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
22 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
23 # by default, levels in the order A,B,C produces a single comparison of B vs A, to a single file 'outfile'
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
24 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
25 # for the 'many_contrasts' flag, levels in the order A,B,C produces comparisons C vs A, B vs A, C vs B,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
26 # to a number of files using the 'outfile' prefix: 'outfile.condition_C_vs_A' etc.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
27 # all plots will still be sent to a single PDF, named by the arg 'plots', with extra pages.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
28 #
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
29 # fit_type is an integer valued argument, with the options from ?estimateDisperions
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
30 # 1 "parametric"
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
31 # 2 "local"
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
32 # 3 "mean"
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
33
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
34 # setup R error handling to go to stderr
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
35 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
36
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
37 # we need that to not crash galaxy with an UTF8 error on German LC settings.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
38 loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
39
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
40 library("getopt")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
41 options(stringAsfactors = FALSE, useFancyQuotes = FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
42 args <- commandArgs(trailingOnly = TRUE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
43
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
44 # get options, using the spec as defined by the enclosed list.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
45 # we read the options from the default: commandArgs(TRUE).
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
46 spec <- matrix(c(
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
47 "quiet", "q", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
48 "help", "h", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
49 "outfile", "o", 1, "character",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
50 "factors", "f", 1, "character",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
51 "plots" , "p", 1, "character",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
52 "sample_table", "s", 1, "character",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
53 "fit_type", "t", 1, "integer",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
54 "many_contrasts", "m", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
55 "outlier_replace_off" , "a", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
56 "outlier_filter_off" , "b", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
57 "auto_mean_filter_off", "c", 0, "logical",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
58 "beta_prior_off", "d", 0, "logical"),
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
59 byrow=TRUE, ncol=4)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
60 opt <- getopt(spec)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
61
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
62 # if help was asked for print a friendly message
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
63 # and exit with a non-zero error code
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
64 if (!is.null(opt$help)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
65 cat(getopt(spec, usage=TRUE))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
66 q(status=1)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
67 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
68
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
69 # enforce the following required arguments
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
70 if (is.null(opt$outfile)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
71 cat("'outfile' is required\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
72 q(status=1)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
73 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
74 if (is.null(opt$sample_table) & is.null(opt$factors)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
75 cat("'factors' or 'sample_table' is required\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
76 q(status=1)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
77 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
78
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
79 verbose <- if (is.null(opt$quiet)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
80 TRUE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
81 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
82 FALSE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
83 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
84
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
85 suppressPackageStartupMessages({
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
86 library("DESeq2")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
87 library("RColorBrewer")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
88 library("gplots")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
89 })
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
90
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
91 # build or read sample table
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
92
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
93 trim <- function (x) gsub("^\\s+|\\s+$", "", x)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
94
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
95 # switch on if 'factors' was provided:
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
96 if (!is.null(opt$factors)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
97 library("rjson")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
98 parser <- newJSONParser()
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
99 parser$addData(opt$factors)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
100 factorList <- parser$getObject()
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
101 factors <- sapply(factorList, function(x) x[[1]])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
102 primaryFactor <- factors[1]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
103 filenamesIn <- unname(unlist(factorList[[1]][[2]]))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
104 sampleTable <- data.frame(sample=basename(filenamesIn), filename=filenamesIn, row.names=filenamesIn)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
105 for (factor in factorList) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
106 factorName <- trim(factor[[1]])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
107 sampleTable[[factorName]] <- character(nrow(sampleTable))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
108 lvls <- sapply(factor[[2]], function(x) names(x))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
109 for (i in seq_along(factor[[2]])) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
110 files <- factor[[2]][[i]][[1]]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
111 sampleTable[files,factorName] <- trim(lvls[i])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
112 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
113 sampleTable[[factorName]] <- factor(sampleTable[[factorName]], levels=lvls)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
114 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
115 rownames(sampleTable) <- sampleTable$sample
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
116 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
117 # read the sample_table argument
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
118 # this table is described in ?DESeqDataSet
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
119 # one column for the sample name, one for the filename, and
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
120 # the remaining columns for factors in the analysis
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
121 sampleTable <- read.delim(opt$sample_table)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
122 factors <- colnames(sampleTable)[-c(1:2)]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
123 for (factor in factors) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
124 lvls <- unique(as.character(sampleTable[[factor]]))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
125 sampleTable[[factor]] <- factor(sampleTable[[factor]], levels=lvls)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
126 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
127 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
128
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
129 primaryFactor <- factors[1]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
130 designFormula <- as.formula(paste("~", paste(rev(factors), collapse=" + ")))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
131
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
132 if (verbose) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
133 cat("DESeq2 run information\n\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
134 cat("sample table:\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
135 print(sampleTable[,-c(1:2),drop=FALSE])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
136 cat("\ndesign formula:\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
137 print(designFormula)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
138 cat("\n\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
139 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
140
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
141 # these are plots which are made once for each analysis
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
142 generateGenericPlots <- function(dds, factors) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
143 rld <- rlog(dds)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
144 print(plotPCA(rld, intgroup=rev(factors)))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
145 # need meaningful labels, because from Galaxy, sample names are random
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
146 labs <- paste0(seq_len(ncol(dds)), ": ", do.call(paste, as.list(colData(dds)[factors])))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
147 dat <- assay(rld)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
148 colnames(dat) <- labs
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
149 distsRL <- dist(t(dat))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
150 mat <- as.matrix(distsRL)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
151 hc <- hclust(distsRL)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
152 hmcol <- colorRampPalette(brewer.pal(9, "GnBu"))(100)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
153 heatmap.2(mat, Rowv=as.dendrogram(hc), symm=TRUE, trace="none", col = rev(hmcol),
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
154 main="Sample-to-sample distances", margin=c(13,13))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
155 plotDispEsts(dds, main="Dispersion estimates")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
156 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
157
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
158 # these are plots which can be made for each comparison, e.g.
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
159 # once for C vs A and once for B vs A
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
160 generateSpecificPlots <- function(res, threshold, title_suffix) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
161 use <- res$baseMean > threshold
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
162 if (sum(!use) == 0) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
163 h <- hist(res$pvalue, breaks=0:50/50, plot=FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
164 barplot(height = h$counts,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
165 col = "powderblue", space = 0, xlab="p-values", ylab="frequency",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
166 main=paste("Histogram of p-values for",title_suffix))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
167 text(x = c(0, length(h1$counts)), y = 0, label=paste(c(0,1)), adj=c(0.5,1.7), xpd=NA)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
168 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
169 h1 <- hist(res$pvalue[!use], breaks=0:50/50, plot=FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
170 h2 <- hist(res$pvalue[use], breaks=0:50/50, plot=FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
171 colori <- c("filtered (low count)"="khaki", "not filtered"="powderblue")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
172 barplot(height = rbind(h1$counts, h2$counts), beside = FALSE,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
173 col = colori, space = 0, xlab="p-values", ylab="frequency",
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
174 main=paste("Histogram of p-values for",title_suffix))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
175 text(x = c(0, length(h1$counts)), y = 0, label=paste(c(0,1)), adj=c(0.5,1.7), xpd=NA)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
176 legend("topright", fill=rev(colori), legend=rev(names(colori)), bg="white")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
177 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
178 plotMA(res, main= paste("MA-plot for",title_suffix), ylim=range(res$log2FoldChange, na.rm=TRUE))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
179 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
180
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
181 if (verbose) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
182 cat(paste("primary factor:",primaryFactor,"\n"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
183 if (length(factors) > 1) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
184 cat(paste("other factors in design:",paste(factors[-length(factors)],collapse=","),"\n"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
185 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
186 cat("\n---------------------\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
187 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
188
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
189 # if JSON input from Galaxy, path is absolute
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
190 # otherwise, from sample_table, assume it is relative
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
191 dir <- if (is.null(opt$factors)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
192 "."
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
193 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
194 ""
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
195 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
196
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
197 # construct the object
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
198 dds <- DESeqDataSetFromHTSeqCount(sampleTable = sampleTable,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
199 directory = dir,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
200 design = designFormula)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
201
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
202 if (verbose) cat(paste(ncol(dds), "samples with counts over", nrow(dds), "genes\n"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
203
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
204 # optional outlier behavior
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
205 if (is.null(opt$outlier_replace_off)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
206 minRep <- 7
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
207 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
208 minRep <- Inf
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
209 if (verbose) cat("outlier replacement off\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
210 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
211 if (is.null(opt$outlier_filter_off)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
212 cooksCutoff <- TRUE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
213 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
214 cooksCutoff <- FALSE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
215 if (verbose) cat("outlier filtering off\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
216 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
217
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
218 # optional automatic mean filtering
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
219 if (is.null(opt$auto_mean_filter_off)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
220 independentFiltering <- TRUE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
221 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
222 independentFiltering <- FALSE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
223 if (verbose) cat("automatic filtering on the mean off\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
224 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
225
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
226 # shrinkage of LFCs
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
227 if (is.null(opt$beta_prior_off)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
228 betaPrior <- TRUE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
229 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
230 betaPrior <- FALSE
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
231 if (verbose) cat("beta prior off\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
232 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
233
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
234 # dispersion fit type
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
235 if (is.null(opt$fit_type)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
236 fitType <- "parametric"
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
237 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
238 fitType <- c("parametric","local","mean")[opt$fit_type]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
239 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
240
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
241 if (verbose) cat(paste("using disperion fit type:",fitType,"\n"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
242
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
243 # run the analysis
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
244 dds <- DESeq(dds, fitType=fitType, betaPrior=betaPrior, minReplicatesForReplace=minRep)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
245
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
246 # create the generic plots and leave the device open
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
247 if (!is.null(opt$plots)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
248 if (verbose) cat("creating plots\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
249 pdf(opt$plots)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
250 generateGenericPlots(dds, factors)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
251 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
252
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
253 n <- nlevels(colData(dds)[[primaryFactor]])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
254 allLevels <- levels(colData(dds)[[primaryFactor]])
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
255
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
256 if (is.null(opt$many_contrasts)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
257 # only contrast the first and second level of the primary factor
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
258 ref <- allLevels[1]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
259 lvl <- allLevels[2]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
260 res <- results(dds, contrast=c(primaryFactor, lvl, ref),
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
261 cooksCutoff=cooksCutoff,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
262 independentFiltering=independentFiltering)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
263 if (verbose) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
264 cat("summary of results\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
265 cat(paste0(primaryFactor,": ",lvl," vs ",ref,"\n"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
266 print(summary(res))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
267 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
268 resSorted <- res[order(res$padj),]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
269 outDF <- as.data.frame(resSorted)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
270 outDF$geneID <- rownames(outDF)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
271 outDF <- outDF[,c("geneID", "baseMean", "log2FoldChange", "lfcSE", "stat", "pvalue", "padj")]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
272 filename <- opt$outfile
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
273 write.table(outDF, file=filename, sep="\t", quote=FALSE, row.names=FALSE, col.names=FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
274 if (independentFiltering) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
275 threshold <- unname(attr(res, "filterThreshold"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
276 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
277 threshold <- 0
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
278 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
279 title_suffix <- paste0(primaryFactor,": ",lvl," vs ",ref)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
280 if (!is.null(opt$plots)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
281 generateSpecificPlots(res, threshold, title_suffix)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
282 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
283 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
284 # rotate through the possible contrasts of the primary factor
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
285 # write out a sorted table of results with the contrast as a suffix
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
286 # add contrast specific plots to the device
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
287 for (i in seq_len(n-1)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
288 ref <- allLevels[i]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
289 contrastLevels <- allLevels[(i+1):n]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
290 for (lvl in contrastLevels) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
291 res <- results(dds, contrast=c(primaryFactor, lvl, ref),
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
292 cooksCutoff=cooksCutoff,
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
293 independentFiltering=independentFiltering)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
294 resSorted <- res[order(res$padj),]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
295 outDF <- as.data.frame(resSorted)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
296 outDF$geneID <- rownames(outDF)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
297 outDF <- outDF[,c("geneID", "baseMean", "log2FoldChange", "lfcSE", "stat", "pvalue", "padj")]
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
298 filename <- paste0(opt$outfile,".",primaryFactor,"_",lvl,"_vs_",ref)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
299 write.table(outDF, file=filename, sep="\t", quote=FALSE, row.names=FALSE, col.names=FALSE)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
300 if (independentFiltering) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
301 threshold <- unname(attr(res, "filterThreshold"))
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
302 } else {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
303 threshold <- 0
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
304 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
305 title_suffix <- paste0(primaryFactor,": ",lvl," vs ",ref)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
306 if (!is.null(opt$plots)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
307 generateSpecificPlots(res, threshold, title_suffix)
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
308 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
309 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
310 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
311 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
312
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
313 # close the plot device
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
314 if (!is.null(opt$plots)) {
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
315 cat("closing plot device\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
316 dev.off()
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
317 }
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
318
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
319 cat("Session information:\n\n")
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
320
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
321 sessionInfo()
5b1ce9db498e planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 76d0758966bde7c15f5224913cee5e8ce28314ff
iuc
parents:
diff changeset
322