annotate deseq2.R @ 46:151ed7b41985 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 8f0f0f51f30cc630daebfeae8acae93e84dbd35c
author iuc
date Tue, 06 Jan 2026 11:22:10 +0000
parents 702bdf59d6c8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
1 #!/usr/bin/env Rscript
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
2
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
3 # A command-line interface to DESeq2 for use with Galaxy
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
4 # written by Bjoern Gruening and modified by Michael Love 2016.03.30
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
5 #
26
47267a044ef1 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit e811a7887db870f4f94f620f52bce656c8d5ba23
iuc
parents: 24
diff changeset
6 # This argument is required:
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
7 #
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
8 # 'factors' a JSON list object from Galaxy
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
9 #
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
10 # the output file has columns:
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
11 #
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
12 # baseMean (mean normalized count)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
13 # log2FoldChange (by default a moderated LFC estimate)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
14 # lfcSE (the standard error)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
15 # stat (the Wald statistic)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
16 # pvalue (p-value from comparison of Wald statistic to a standard Normal)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
17 # padj (adjusted p-value, Benjamini Hochberg correction on genes which pass the mean count filter)
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
18 #
26
47267a044ef1 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit e811a7887db870f4f94f620f52bce656c8d5ba23
iuc
parents: 24
diff changeset
19 # the first variable in 'factors' will be the primary factor.
47267a044ef1 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit e811a7887db870f4f94f620f52bce656c8d5ba23
iuc
parents: 24
diff changeset
20 # the levels of the primary factor are used in the order of appearance in factors.
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
21 #
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
22 # by default, levels in the order A,B,C produces a single comparison of B vs A, to a single file 'outfile'
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
23 #
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
24 # for the 'many_contrasts' flag, levels in the order A,B,C produces comparisons C vs A, B vs A, C vs B,
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
25 # to a number of files using the 'outfile' prefix: 'outfile.condition_C_vs_A' etc.
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
26 # all plots will still be sent to a single PDF, named by the arg 'plots', with extra pages.
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
27 #
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
28 # fit_type is an integer valued argument, with the options from ?estimateDisperions
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
29 # 1 "parametric"
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
30 # 2 "local"
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
31 # 3 "mean"
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
32
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
33 # setup R error handling to go to stderr
42
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
34 options(show.error.messages = FALSE, error = function() {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
35 cat(geterrmessage(), file = stderr())
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
36 q("no", 1, FALSE)
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
37 })
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
38
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
39 library("getopt")
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
40 library("tools")
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
41 options(stringAsFactors = FALSE, useFancyQuotes = FALSE)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
42 args <- commandArgs(trailingOnly = TRUE)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
43
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
44 # get options, using the spec as defined by the enclosed list.
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
45 # we read the options from the default: commandArgs(TRUE).
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
46 spec <- matrix(c(
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
47 "quiet", "q", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
48 "help", "h", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
49 "cores", "s", 0, "integer",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
50 "batch_factors", "w", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
51 "outfile", "o", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
52 "countsfile", "n", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
53 "sizefactorsfile", "F", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
54 "rlogfile", "r", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
55 "vstfile", "v", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
56 "header", "H", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
57 "factors", "f", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
58 "files_to_labels", "l", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
59 "plots", "p", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
60 "tximport", "i", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
61 "txtype", "y", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
62 "tx2gene", "x", 1, "character", # a space-sep tx-to-gene map or GTF/GFF3 file
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
63 "esf", "e", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
64 "fit_type", "t", 1, "integer",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
65 "many_contrasts", "m", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
66 "outlier_replace_off", "a", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
67 "outlier_filter_off", "b", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
68 "auto_mean_filter_off", "c", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
69 "use_beta_priors", "d", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
70 "alpha_ma", "A", 1, "numeric",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
71 "prefilter", "P", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
72 "prefilter_value", "V", 1, "numeric",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
73 "sample_sheet_mode", "S", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
74 "sample_sheet", "g", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
75 "factor_columns", "j", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
76 "reference_level", "R", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
77 "target_level", "T", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
78 "collection_files", "C", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
79 "custom_design_formula", "D", 0, "logical",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
80 "design_formula", "G", 1, "character",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
81 "contrast_definition", "K", 1, "character"
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
82 ), byrow = TRUE, ncol = 4)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
83 opt <- getopt(spec)
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
84
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
85 # if help was asked for print a friendly message
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
86 # and exit with a non-zero error code
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
87 if (!is.null(opt$help)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
88 cat(getopt(spec, usage = TRUE))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
89 q(status = 1)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
90 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
91
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
92 # enforce the following required arguments
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
93 if (is.null(opt$outfile)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
94 cat("'outfile' is required\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
95 q(status = 1)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
96 }
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
97 if (is.null(opt$factors) && is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
98 cat("'factors' is required when not using sample_sheet_mode\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
99 q(status = 1)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
100 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
101
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
102 verbose <- is.null(opt$quiet)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
103
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
104 source_local <- function(fname) {
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
105 argv <- commandArgs(trailingOnly = FALSE)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
106 base_dir <- dirname(substring(argv[grep("--file=", argv)], 8))
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
107 source(paste(base_dir, fname, sep = "/"))
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
108 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
109
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
110 source_local("get_deseq_dataset.R")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
111
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
112 suppressPackageStartupMessages({
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
113 library("DESeq2")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
114 library("RColorBrewer")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
115 library("gplots")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
116 })
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
117
33
4f497a8a72e8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 05bc13637dc9f8e523bc72844ff6eb0794f98ad3
iuc
parents: 31
diff changeset
118 if (opt$cores > 1) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
119 library("BiocParallel")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
120 register(MulticoreParam(opt$cores))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
121 parallel <- TRUE
33
4f497a8a72e8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 05bc13637dc9f8e523bc72844ff6eb0794f98ad3
iuc
parents: 31
diff changeset
122 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
123 parallel <- FALSE
33
4f497a8a72e8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 05bc13637dc9f8e523bc72844ff6eb0794f98ad3
iuc
parents: 31
diff changeset
124 }
4f497a8a72e8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 05bc13637dc9f8e523bc72844ff6eb0794f98ad3
iuc
parents: 31
diff changeset
125
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
126 # build or read sample table
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
127
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
128 trim <- function(x) gsub("^\\s+|\\s+$", "", x)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
129
45
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
130 # Helper function to decode base64-encoded JSON
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
131 decode_base64_json <- function(encoded_str) {
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
132 decoded_bytes <- base64enc::base64decode(encoded_str)
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
133 decoded_str <- rawToChar(decoded_bytes)
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
134 return(decoded_str)
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
135 }
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
136
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
137 # switch on if 'factors' was provided:
26
47267a044ef1 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit e811a7887db870f4f94f620f52bce656c8d5ba23
iuc
parents: 24
diff changeset
138 library("rjson")
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
139
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
140 if (!is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
141 # Sample sheet mode: build factor_list from sample sheet
45
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
142 filenames_to_labels <- fromJSON(decode_base64_json(opt$files_to_labels))
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
143
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
144 # Read sample sheet
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
145 sample_sheet <- read.table(opt$sample_sheet, sep = "\t", header = TRUE, stringsAsFactors = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
146
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
147 # Parse collection files
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
148 collection_files <- strsplit(opt$collection_files, ",")[[1]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
149
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
150 # First column of sample sheet should contain sample identifiers
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
151 sample_id_col <- colnames(sample_sheet)[1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
152
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
153 if (!is.null(opt$custom_design_formula)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
154 # Custom design formula mode
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
155 # Extract variable names from formula (remove ~, +, *, :, whitespace)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
156 formula_str <- gsub("^~\\s*", "", opt$design_formula)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
157 formula_vars <- unique(trimws(unlist(strsplit(formula_str, "[+*:]"))))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
158
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
159 # Validate all variables exist in sample sheet
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
160 missing_vars <- setdiff(formula_vars, colnames(sample_sheet))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
161 if (length(missing_vars) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
162 cat(paste0("Error: Variables not found in sample sheet: ", paste(missing_vars, collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
163 cat(paste0("Available columns: ", paste(colnames(sample_sheet), collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
164 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
165 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
166
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
167 # Use all formula variables as factor columns
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
168 factor_col_names <- formula_vars
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
169 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
170 # Automatic mode: Parse factor columns (comma-separated column numbers, 1-indexed)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
171 factor_col_nums <- as.integer(strsplit(opt$factor_columns, ",")[[1]])
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
172 factor_col_names <- colnames(sample_sheet)[factor_col_nums]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
173 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
174
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
175 # Validate sample sheet matches collection before building factor_list
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
176 # Get element identifiers from collection
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
177 collection_element_ids <- character(length(collection_files))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
178 for (idx in seq_along(collection_files)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
179 file <- collection_files[idx]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
180 file_basename <- basename(file)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
181 if (file_basename %in% names(filenames_to_labels)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
182 collection_element_ids[idx] <- filenames_to_labels[[file_basename]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
183 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
184 cat("Error: Sample sheet validation failed\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
185 cat(paste0("Collection file '", file_basename, "' does not have a corresponding element identifier.\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
186 cat("This is an internal error - please report this issue.\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
187 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
188 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
189 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
190
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
191 # Get sample identifiers from sample sheet
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
192 sample_sheet_ids <- sample_sheet[[sample_id_col]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
193
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
194 # Check for mismatches
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
195 collection_not_in_sheet <- setdiff(collection_element_ids, sample_sheet_ids)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
196 sheet_not_in_collection <- setdiff(sample_sheet_ids, collection_element_ids)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
197
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
198 if (length(collection_not_in_sheet) > 0 || length(sheet_not_in_collection) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
199 cat("Error: Sample sheet does not match the input collection\n\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
200
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
201 if (length(collection_not_in_sheet) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
202 cat("The following samples are in the collection but NOT in the sample sheet:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
203 for (id in collection_not_in_sheet) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
204 cat(paste0(" - ", id, "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
205 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
206 cat("\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
207 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
208
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
209 if (length(sheet_not_in_collection) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
210 cat("The following samples are in the sample sheet but NOT in the collection:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
211 for (id in sheet_not_in_collection) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
212 cat(paste0(" - ", id, "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
213 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
214 cat("\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
215 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
216
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
217 cat("Please ensure that:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
218 cat(paste0("1. The first column ('", sample_id_col, "') of the sample sheet contains sample identifiers\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
219 cat("2. These identifiers exactly match the element identifiers in your collection\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
220 cat("3. All samples in the collection are listed in the sample sheet\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
221 cat("4. All samples in the sample sheet exist in the collection\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
222 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
223 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
224
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
225 # Determine which factor will be the primary factor for contrasts
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
226 # In custom mode, the primary factor is the last one in the formula (rightmost term)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
227 # In automatic mode, the first selected factor is primary (formula gets reversed)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
228 if (!is.null(opt$custom_design_formula)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
229 primary_factor_index <- length(factor_col_names)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
230 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
231 primary_factor_index <- 1
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
232 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
233
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
234 # Build factor_list structure
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
235 factor_list <- list()
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
236 for (i in seq_along(factor_col_names)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
237 factor_name <- factor_col_names[i]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
238
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
239 # Group files by factor level, preserving the order of first appearance
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
240 level_to_files <- list()
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
241 level_order <- character(0) # Track order of first appearance
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
242 for (file in collection_files) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
243 element_id <- filenames_to_labels[[basename(file)]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
244 # Find matching row in sample sheet
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
245 matching_row <- which(sample_sheet[[sample_id_col]] == element_id)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
246 if (length(matching_row) > 0) {
46
151ed7b41985 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 8f0f0f51f30cc630daebfeae8acae93e84dbd35c
iuc
parents: 45
diff changeset
247 # Convert level to character to ensure consistent list indexing
151ed7b41985 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 8f0f0f51f30cc630daebfeae8acae93e84dbd35c
iuc
parents: 45
diff changeset
248 level <- as.character(sample_sheet[[factor_name]][matching_row[1]])
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
249 if (!(level %in% names(level_to_files))) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
250 level_to_files[[level]] <- character(0)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
251 level_order <- c(level_order, level) # Record order of first appearance
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
252 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
253 level_to_files[[level]] <- c(level_to_files[[level]], file)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
254 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
255 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
256
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
257 # Get all levels in order of first appearance (not alphabetically sorted)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
258 all_levels <- level_order
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
259
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
260 # Handle reference and target levels for the primary contrast factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
261 # In custom mode: this is the LAST factor in the formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
262 # In automatic mode: this is the FIRST factor selected (formula will be reversed)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
263 if (i == primary_factor_index) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
264 # This is the primary factor for contrasts: handle reference/target
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
265 # Determine reference level
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
266 if (!is.null(opt$reference_level) && nchar(opt$reference_level) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
267 ref_level <- trim(opt$reference_level)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
268 # Validate that reference level exists
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
269 if (!(ref_level %in% all_levels)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
270 cat(paste0("Error: Reference level '", ref_level, "' not found in factor '", factor_name, "'. Available levels: ", paste(all_levels, collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
271 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
272 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
273 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
274 # Default: use first level encountered in sample sheet as reference
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
275 ref_level <- all_levels[1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
276 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
277
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
278 # Build factor levels with reference first, then others
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
279 # This applies to both automatic and custom modes
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
280 if (!is.null(opt$target_level) && nchar(opt$target_level) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
281 target_level <- trim(opt$target_level)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
282 # Validate that target level exists
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
283 if (!(target_level %in% all_levels)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
284 cat(paste0("Error: Target level '", target_level, "' not found in factor '", factor_name, "'. Available levels: ", paste(all_levels, collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
285 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
286 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
287 # Explicit target: reference first, target second
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
288 levels_to_use <- c(ref_level, target_level)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
289 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
290 # Reference first, then others in order of appearance
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
291 other_levels <- all_levels[all_levels != ref_level]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
292 levels_to_use <- c(ref_level, other_levels)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
293 # Target is the first non-reference level
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
294 target_level <- other_levels[1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
295 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
296
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
297 # Store reference and target levels for later contrast specification
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
298 # This ensures we use the intended levels, not whatever order files happened to be in
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
299 primary_ref_level <- ref_level
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
300 primary_target_level <- target_level
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
301 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
302 # For secondary factors, use all levels in order of appearance
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
303 levels_to_use <- all_levels
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
304 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
305
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
306 # Build factor structure in the order specified by levels_to_use
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
307 # Following standard DESeq2 convention: reference level is first
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
308 factor_levels <- list()
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
309 for (level in levels_to_use) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
310 if (level %in% names(level_to_files)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
311 level_entry <- list()
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
312 level_entry[[level]] <- level_to_files[[level]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
313 factor_levels[[length(factor_levels) + 1]] <- level_entry
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
314 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
315 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
316
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
317 factor_list[[length(factor_list) + 1]] <- list(factor_name, factor_levels)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
318 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
319
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
320 # Set primary_factor for sample sheet mode
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
321 # This is the factor that will be used for contrasts
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
322 if (!is.null(opt$custom_design_formula)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
323 # Custom mode: primary factor is the last one in the formula (rightmost term)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
324 primary_factor <- factor_col_names[length(factor_col_names)]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
325 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
326 # Automatic mode: primary factor is the first selected factor (formula will be reversed)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
327 primary_factor <- factor_col_names[1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
328 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
329
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
330 # Parse contrast_definition if in custom mode
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
331 if (!is.null(opt$custom_design_formula) && !is.null(opt$contrast_definition) && nchar(opt$contrast_definition) > 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
332 contrast_parts <- strsplit(opt$contrast_definition, ",")[[1]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
333 if (length(contrast_parts) != 3) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
334 cat("Error: contrast_definition must be in format 'factor,target,reference'\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
335 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
336 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
337 custom_contrast <- list(
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
338 factor = trim(contrast_parts[1]),
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
339 target = trim(contrast_parts[2]),
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
340 reference = trim(contrast_parts[3])
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
341 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
342 # Validate the contrast
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
343 if (!(custom_contrast$factor %in% factor_col_names)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
344 cat(paste0("Error: Contrast factor '", custom_contrast$factor, "' not found in design formula.\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
345 cat(paste0("Available factors: ", paste(factor_col_names, collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
346 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
347 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
348 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
349 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
350 # Original mode: factors provided directly
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
351 parser <- newJSONParser()
45
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
352 parser$addData(decode_base64_json(opt$factors))
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
353 factor_list <- parser$getObject()
45
702bdf59d6c8 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/main/tools/deseq2 commit 2bcb448af8311320be0a970be37aa8ea4eed66b9
iuc
parents: 44
diff changeset
354 filenames_to_labels <- fromJSON(decode_base64_json(opt$files_to_labels))
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
355
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
356 # For original mode, extract reference and target levels from the first factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
357 # In original mode: ref=level1 (denominator), target=level2 (numerator) -> log2(level2/level1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
358 # So we swap the naming to match the contrast direction used below
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
359 primary_factor_data <- factor_list[[1]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
360 primary_levels <- sapply(primary_factor_data[[2]], function(x) names(x))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
361 primary_target_level <- primary_levels[1] # First level becomes "target" for the swap below
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
362 primary_ref_level <- if (length(primary_levels) >= 2) primary_levels[2] else primary_levels[1] # Second level becomes "ref"
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
363 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
364
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
365 factors <- sapply(factor_list, function(x) x[[1]])
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
366 # For original mode (not sample_sheet_mode), set primary_factor to first factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
367 # In sample_sheet_mode, it's already set correctly above
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
368 if (is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
369 primary_factor <- factors[1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
370 }
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
371 filenames_in <- unname(unlist(factor_list[[1]][[2]]))
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
372 labs <- unname(unlist(filenames_to_labels[basename(filenames_in)]))
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
373 sample_table <- data.frame(
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
374 sample = basename(filenames_in),
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
375 filename = filenames_in,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
376 row.names = filenames_in,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
377 stringsAsFactors = FALSE
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
378 )
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
379 for (factor in factor_list) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
380 factor_name <- trim(factor[[1]])
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
381 sample_table[[factor_name]] <- character(nrow(sample_table))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
382 lvls <- sapply(factor[[2]], function(x) names(x))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
383 for (i in seq_along(factor[[2]])) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
384 files <- factor[[2]][[i]][[1]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
385 sample_table[files, factor_name] <- trim(lvls[i])
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
386 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
387 sample_table[[factor_name]] <- factor(sample_table[[factor_name]], levels = lvls)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
388 # Explicitly set the reference level using relevel() for the primary factor in sample_sheet_mode
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
389 # This ensures DESeq2 knows the reference regardless of factor level order
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
390 # In original mode, we don't relevel because the order from factor_list is already correct
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
391 # Note: primary_factor is already set correctly in sample_sheet_mode before we get here
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
392 if (exists("primary_factor") && factor_name == primary_factor && exists("primary_ref_level") && !is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
393 sample_table[[factor_name]] <- relevel(sample_table[[factor_name]], ref = primary_ref_level)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
394 }
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
395 }
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
396 rownames(sample_table) <- labs
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
397
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
398 # Build design formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
399 if (!is.null(opt$custom_design_formula)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
400 # Custom mode: use user-provided formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
401 design_formula <- as.formula(opt$design_formula)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
402 # In original mode (not sample_sheet), set primary factor to last variable in formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
403 # In sample_sheet_mode, it's already set correctly above
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
404 if (is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
405 primary_factor <- factors[length(factors)]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
406 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
407 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
408 # Automatic mode: build from selected factors
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
409 design_formula <- as.formula(paste("~", paste(rev(factors), collapse = " + ")))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
410 }
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
411
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
412 # these are plots which are made once for each analysis
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
413 generate_generic_plots <- function(dds, factors) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
414 library("ggplot2")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
415 library("ggrepel")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
416 library("pheatmap")
24
1a34aec44d60 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 62e9101c1e7b8467e395f31ccbd9321de01a6418
iuc
parents: 23
diff changeset
417
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
418 rld <- rlog(dds)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
419 p <- plotPCA(rld, intgroup = rev(factors))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
420 print(p + geom_text_repel(aes_string(x = "PC1", y = "PC2", label = factor(colnames(dds))), size = 3) + geom_point())
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
421 dat <- assay(rld)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
422 dists_rl <- dist(t(dat))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
423 mat <- as.matrix(dists_rl)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
424 colors <- colorRampPalette(rev(brewer.pal(9, "Blues")))(255)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
425 pheatmap(
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
426 mat,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
427 clustering_distance_rows = dists_rl,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
428 clustering_distance_cols = dists_rl,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
429 col = colors,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
430 main = "Sample-to-sample distances"
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
431 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
432 plotDispEsts(dds, main = "Dispersion estimates")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
433 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
434
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
435 # these are plots which can be made for each comparison, e.g.
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
436 # once for C vs A and once for B vs A
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
437 generate_specific_plots <- function(res, threshold, title_suffix) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
438 use <- res$baseMean > threshold
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
439 if (sum(!use) == 0) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
440 h <- hist(res$pvalue, breaks = 0:50 / 50, plot = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
441 barplot(
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
442 height = h$counts,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
443 col = "powderblue",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
444 space = 0,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
445 xlab = "p-values",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
446 ylab = "frequency",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
447 main = paste("Histogram of p-values for", title_suffix)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
448 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
449 text(x = c(0, length(h$counts)), y = 0, label = paste(c(0, 1)), adj = c(0.5, 1.7), xpd = NA)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
450 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
451 h1 <- hist(res$pvalue[!use], breaks = 0:50 / 50, plot = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
452 h2 <- hist(res$pvalue[use], breaks = 0:50 / 50, plot = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
453 colori <- c("filtered (low count)" = "khaki", "not filtered" = "powderblue")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
454 barplot(
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
455 height = rbind(h1$counts, h2$counts),
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
456 beside = FALSE,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
457 col = colori,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
458 space = 0,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
459 xlab = "p-values",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
460 ylab = "frequency",
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
461 main = paste("Histogram of p-values for", title_suffix)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
462 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
463 text(x = c(0, length(h1$counts)), y = 0, label = paste(c(0, 1)), adj = c(0.5, 1.7), xpd = NA)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
464 legend("topright", fill = rev(colori), legend = rev(names(colori)), bg = "white")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
465 }
39
b30a443484ab "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit c8e7020d39d581d7374a13cf94c64998a6481e05"
iuc
parents: 37
diff changeset
466 plotMA(res, main = paste("MA-plot for", title_suffix), ylim = range(res$log2FoldChange, na.rm = TRUE), alpha = opt$alpha_ma)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
467 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
468
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
469 if (verbose) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
470 cat(paste("primary factor:", primary_factor, "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
471 if (length(factors) > 1) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
472 cat(paste("other factors in design:", paste(factors[-length(factors)], collapse = ","), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
473 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
474 cat("\n---------------------\n")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
475 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
476
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
477 dds <- get_deseq_dataset(sample_table, header = opt$header, design_formula = design_formula, tximport = opt$tximport, txtype = opt$txtype, tx2gene = opt$tx2gene)
43
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
478
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
479 # use/estimate size factors with the chosen method
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
480 if (!is.null(opt$esf)) {
43
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
481 if (opt$esf %in% list("ratio", "poscounts", "iterate")) {
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
482 cat("Calculating size factors de novo\n")
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
483 dds <- estimateSizeFactors(dds, type = opt$esf)
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
484 } else {
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
485 sf_table <- read.table(opt$esf)
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
486 # Sort the provided size factors just in case the order differs from the input file order.
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
487 merged_table <- merge(sample_table, sf_table, by.x = 0, by.y = 1, sort = FALSE)
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
488 sf_values <- as.numeric(unlist(merged_table[5]))
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
489 "sizeFactors"(dds) <- sf_values
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
490
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
491 cat("Using user-provided size factors:\n")
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
492 print(sf_values)
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
493 }
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
494 } else {
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
495 cat("No size factor was used\n")
30
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
496 }
41
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
497
43
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
498
41
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
499 # estimate size factors for each sample
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
500 # - https://support.bioconductor.org/p/97676/
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
501 if (!is.null(opt$sizefactorsfile)) {
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
502 nm <- assays(dds)[["avgTxLength"]]
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
503 if (!is.null(nm)) {
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
504 ## Recommended: takes into account tximport data
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
505 cat("\nsize factors for samples: taking tximport data into account\n")
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
506 size_factors <- estimateSizeFactorsForMatrix(counts(dds) / nm)
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
507 } else {
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
508 norm_factors <- normalizationFactors(dds)
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
509 if (!is.null(norm_factors)) {
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
510 ## In practice, gives same results as above.
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
511 cat("\nsize factors for samples: no tximport data, using derived normalization factors\n")
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
512 size_factors <- estimateSizeFactorsForMatrix(norm_factors)
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
513 } else {
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
514 ## If we have no other information, estimate from raw.
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
515 cat("\nsize factors for samples: no tximport data, no normalization factors, estimating from raw data\n")
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
516 size_factors <- estimateSizeFactorsForMatrix(counts(dds))
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
517 }
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
518 }
42
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
519 write.table(size_factors, file = opt$sizefactorsfile, sep = "\t", col.names = FALSE, quote = FALSE)
41
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
520 }
0a0a3388e3f2 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit cbeb1c4c436be04323bd9a809a6393d00b168d07"
iuc
parents: 39
diff changeset
521
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
522 apply_batch_factors <- function(dds, batch_factors) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
523 rownames(batch_factors) <- batch_factors$identifier
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
524 batch_factors <- subset(batch_factors, select = -c(identifier, condition))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
525 dds_samples <- colnames(dds)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
526 batch_samples <- rownames(batch_factors)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
527 if (!setequal(batch_samples, dds_samples)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
528 stop("Batch factor names don't correspond to input sample names, check input files")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
529 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
530 dds_data <- colData(dds)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
531 # Merge dds_data with batch_factors using indexes, which are sample names
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
532 # Set sort to False, which maintains the order in dds_data
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
533 reordered_batch <- merge(dds_data, batch_factors, by.x = 0, by.y = 0, sort = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
534 batch_factors <- reordered_batch[, ncol(dds_data):ncol(reordered_batch)]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
535 for (factor in colnames(batch_factors)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
536 dds[[factor]] <- batch_factors[[factor]]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
537 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
538 colnames(dds) <- reordered_batch[, 1]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
539 return(dds)
29
66203279224f planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit b95582cea8320d5488056a9576474f79cec53be8
iuc
parents: 28
diff changeset
540 }
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
541
29
66203279224f planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit b95582cea8320d5488056a9576474f79cec53be8
iuc
parents: 28
diff changeset
542 if (!is.null(opt$batch_factors)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
543 batch_factors <- read.table(opt$batch_factors, sep = "\t", header = TRUE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
544 dds <- apply_batch_factors(dds = dds, batch_factors = batch_factors)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
545 batch_design <- colnames(batch_factors)[-c(1, 2)]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
546
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
547 if (!is.null(opt$custom_design_formula)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
548 # Custom mode: prepend batch factors to user's formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
549 user_formula_rhs <- gsub("^~\\s*", "", opt$design_formula)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
550 design_formula <- as.formula(paste("~", paste(c(batch_design, user_formula_rhs), collapse = " + ")))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
551 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
552 # Automatic mode: prepend batch factors to generated formula
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
553 design_formula <- as.formula(paste("~", paste(c(batch_design, rev(factors)), collapse = " + ")))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
554 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
555 design(dds) <- design_formula
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
556 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
557
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
558 if (verbose) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
559 cat("DESeq2 run information\n\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
560 cat("sample table:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
561 print(sample_table[, -c(1:2), drop = FALSE])
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
562 cat("\ndesign formula:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
563 print(design_formula)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
564 cat("\n\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
565 cat(paste(ncol(dds), "samples with counts over", nrow(dds), "genes\n"))
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
566 }
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
567
42
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
568 # minimal pre-filtering
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
569 if (!is.null(opt$prefilter)) {
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
570 keep <- rowSums(counts(dds)) >= opt$prefilter_value
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
571 dds <- dds[keep, ]
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
572 }
6ef2cba4e35a planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 6868b66f73ddbe947986d1a20b546873cbd515a9
iuc
parents: 41
diff changeset
573
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
574 # optional outlier behavior
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
575 if (is.null(opt$outlier_replace_off)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
576 min_rep <- 7
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
577 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
578 min_rep <- Inf
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
579 if (verbose) cat("outlier replacement off\n")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
580 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
581 if (is.null(opt$outlier_filter_off)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
582 cooks_cutoff <- TRUE
27
dc6bc19f05ab planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 83eb5b2665d87c02b270596f8175499e69061032
iuc
parents: 26
diff changeset
583 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
584 cooks_cutoff <- FALSE
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
585 if (verbose) cat("outlier filtering off\n")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
586 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
587
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
588 # optional automatic mean filtering
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
589 if (is.null(opt$auto_mean_filter_off)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
590 independent_filtering <- TRUE
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
591 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
592 independent_filtering <- FALSE
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
593 if (verbose) cat("automatic filtering on the mean off\n")
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
594 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
595
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
596 # shrinkage of LFCs
43
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
597 if (is.null(opt$use_beta_priors)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
598 beta_prior <- FALSE
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
599 if (verbose) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
600 cat("Applied default - beta prior off\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
601 }
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
602 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
603 beta_prior <- opt$use_beta_priors
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
604 }
43
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
605 sprintf("use_beta_prior is set to %s", beta_prior)
621ddf5967d2 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 469558ddf5bc6249874fe5826637fd6ee81588cf
iuc
parents: 42
diff changeset
606
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
607
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
608 # dispersion fit type
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
609 if (is.null(opt$fit_type)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
610 fit_type <- "parametric"
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
611 } else {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
612 fit_type <- c("parametric", "local", "mean")[opt$fit_type]
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
613 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
614
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
615 if (verbose) cat(paste("using disperion fit type:", fit_type, "\n"))
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
616
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
617 # run the analysis
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
618 dds <- DESeq(dds, fitType = fit_type, betaPrior = beta_prior, minReplicatesForReplace = min_rep, parallel = parallel)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
619
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
620 # create the generic plots and leave the device open
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
621 if (!is.null(opt$plots)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
622 if (verbose) cat("creating plots\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
623 pdf(opt$plots)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
624 generate_generic_plots(dds, factors)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
625 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
626
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
627 n <- nlevels(colData(dds)[[primary_factor]])
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
628 all_levels <- levels(colData(dds)[[primary_factor]])
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
629
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
630 if (!is.null(opt$countsfile)) {
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
631 normalized_counts <- counts(dds, normalized = TRUE)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
632 write.table(normalized_counts, file = opt$countsfile, sep = "\t", col.names = NA, quote = FALSE)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
633 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
634
30
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
635 if (!is.null(opt$rlogfile)) {
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
636 rlog_normalized <- rlogTransformation(dds)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
637 rlog_normalized_mat <- assay(rlog_normalized)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
638 write.table(rlog_normalized_mat, file = opt$rlogfile, sep = "\t", col.names = NA, quote = FALSE)
30
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
639 }
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
640
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
641 if (!is.null(opt$vstfile)) {
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
642 vst_normalized <- varianceStabilizingTransformation(dds)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
643 vst_normalized_mat <- assay(vst_normalized)
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
644 write.table(vst_normalized_mat, file = opt$vstfile, sep = "\t", col.names = NA, quote = FALSE)
30
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
645 }
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
646
3b9af9a27b5b planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 448dccb0c02aba00d8301247b0f0f406ab3d4fa2
iuc
parents: 29
diff changeset
647
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
648 if (is.null(opt$many_contrasts)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
649 # Single contrast mode
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
650 if (!is.null(opt$custom_design_formula) && exists("custom_contrast")) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
651 # Use explicit custom contrast
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
652 ref <- custom_contrast$reference
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
653 lvl <- custom_contrast$target
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
654 contrast_factor <- custom_contrast$factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
655 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
656 # Default: contrast using stored reference and target levels
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
657 # This ensures we use the intended reference, not whatever order files happened to be in
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
658
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
659 # Check if we have more than 2 levels without explicit target
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
660 if (length(all_levels) > 2 && is.null(opt$target_level)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
661 cat("Error: Multiple factor levels detected without explicit target_level specification.\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
662 cat(paste0("Factor '", primary_factor, "' has ", length(all_levels), " levels: ", paste(all_levels, collapse = ", "), "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
663 cat("Please either:\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
664 cat(" 1. Specify target_level to indicate which level to compare against the reference, or\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
665 cat(" 2. Use many_contrasts mode to compare all levels pairwise\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
666 q(status = 1)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
667 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
668
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
669 # Use stored reference and target levels
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
670 # contrast = c(factor, level1, level2) computes log2(level1 / level2)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
671 # In original mode: variable names were swapped for backward compatibility
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
672 # In sample_sheet_mode: use them directly (ref=denominator, target=numerator)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
673 if (!is.null(opt$sample_sheet_mode)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
674 # Sample sheet mode: use natural order
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
675 ref <- primary_ref_level # Reference is denominator
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
676 lvl <- primary_target_level # Target is numerator
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
677 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
678 # Original mode: swap for backward compatibility
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
679 ref <- primary_target_level # This becomes the denominator
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
680 lvl <- primary_ref_level # This becomes the numerator
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
681 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
682 contrast_factor <- primary_factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
683 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
684
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
685 res <- results(
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
686 dds,
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
687 contrast = c(contrast_factor, lvl, ref),
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
688 cooksCutoff = cooks_cutoff,
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
689 independentFiltering = independent_filtering
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
690 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
691 if (verbose) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
692 cat("summary of results\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
693 cat(paste0(contrast_factor, ": ", lvl, " vs ", ref, "\n"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
694 print(summary(res))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
695 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
696 res_sorted <- res[order(res$padj), ]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
697 out_df <- as.data.frame(res_sorted)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
698 out_df$geneID <- rownames(out_df) # nolint
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
699 out_df <- out_df[, c("geneID", "baseMean", "log2FoldChange", "lfcSE", "stat", "pvalue", "padj")]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
700 filename <- opt$outfile
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
701 write.table(out_df, file = filename, sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
702 if (independent_filtering) {
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
703 threshold <- unname(attr(res, "filterThreshold"))
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
704 } else {
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
705 threshold <- 0
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
706 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
707 title_suffix <- paste0(primary_factor, ": ", lvl, " vs ", ref)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
708 if (!is.null(opt$plots)) {
37
951876579237 "planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 9eb6d07510ccf27d6499172d62c81661078ec57b"
iuc
parents: 36
diff changeset
709 generate_specific_plots(res, threshold, title_suffix)
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
710 }
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
711 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
712 # rotate through the possible contrasts of the primary factor
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
713 # write out a sorted table of results with the contrast as a suffix
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
714 # add contrast specific plots to the device
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
715 for (i in seq_len(n - 1)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
716 ref <- all_levels[i]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
717 contrast_levels <- all_levels[(i + 1):n]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
718 for (lvl in contrast_levels) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
719 res <- results(
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
720 dds,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
721 contrast = c(primary_factor, lvl, ref),
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
722 cooksCutoff = cooks_cutoff,
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
723 independentFiltering = independent_filtering
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
724 )
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
725 res_sorted <- res[order(res$padj), ]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
726 out_df <- as.data.frame(res_sorted)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
727 out_df$geneID <- rownames(out_df) # nolint
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
728 out_df <- out_df[, c("geneID", "baseMean", "log2FoldChange", "lfcSE", "stat", "pvalue", "padj")]
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
729 filename <- paste0(primary_factor, "_", lvl, "_vs_", ref)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
730 write.table(out_df, file = filename, sep = "\t", quote = FALSE, row.names = FALSE, col.names = FALSE)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
731 if (independent_filtering) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
732 threshold <- unname(attr(res, "filterThreshold"))
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
733 } else {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
734 threshold <- 0
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
735 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
736 title_suffix <- paste0(primary_factor, ": ", lvl, " vs ", ref)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
737 if (!is.null(opt$plots)) {
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
738 generate_specific_plots(res, threshold, title_suffix)
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
739 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
740 }
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
741 }
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
742 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
743
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
744 # close the plot device
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
745 if (!is.null(opt$plots)) {
44
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
746 cat("closing plot device\n")
1cb33de18af5 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 5bf5011af827e93ddeecbfba4815fe9b85f02594
iuc
parents: 43
diff changeset
747 dev.off()
17
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
748 }
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
749
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
750 cat("Session information:\n\n")
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
751
24930eeff731 planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/deseq2 commit 23559e873291b04840f186edb0b4b85e76359e05
iuc
parents:
diff changeset
752 sessionInfo()