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