annotate edgeR_repenrich2.R @ 2:cfb06f8e8f52 draft

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4ac07201d6267f5efd5c2af20db7f53fce5af8af
author artbio
date Sat, 20 Apr 2024 15:17:04 +0000
parents 6d59fbca2db4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
1 # setup R error handling to go to stderr
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
2 options(show.error.messages = FALSE, error = function() {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
3 cat(geterrmessage(), file = stderr())
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
4 q("no", 1, FALSE)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
5 })
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
6
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
7 # To not crash galaxy with an UTF8 error with not-US LC settings.
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
8 loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
9
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
10 # load libraries
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
11 library("getopt")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
12 library("tools")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
13 library("rjson")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
14 suppressPackageStartupMessages({
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
15 library("edgeR")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
16 library("limma")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
17 })
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
18
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
19 options(stringAsFactors = FALSE, useFancyQuotes = FALSE)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
20
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
21 # get options, using the spec as defined by the enclosed list.
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
22 spec <- matrix(
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
23 c(
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
24 "quiet", "q", 0, "logical",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
25 "outfile", "o", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
26 "countsfile", "n", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
27 "factorName", "N", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
28 "levelNameA", "A", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
29 "levelNameB", "B", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
30 "levelAfiles", "a", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
31 "levelBfiles", "b", 1, "character",
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
32 "plots", "p", 1, "character"
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
33 ),
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
34 byrow = TRUE, ncol = 4
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
35 )
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
36 opt <- getopt(spec)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
37
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
38 # build levels A and B file lists
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
39 filesA <- fromJSON(opt$levelAfiles, method = "C", unexpected.escape = "error")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
40 filesB <- fromJSON(opt$levelBfiles, method = "C", unexpected.escape = "error")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
41 listA <- list()
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
42 indice <- 0
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
43 listA[["level"]] <- opt$levelNameA
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
44 for (file in filesA) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
45 indice <- indice + 1
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
46 listA[[paste0(opt$levelNameA, "_", indice)]] <- read.delim(file, header = FALSE)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
47 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
48 listB <- list()
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
49 indice <- 0
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
50 listB[["level"]] <- opt$levelNameB
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
51 for (file in filesB) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
52 indice <- indice + 1
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
53 listB[[paste0(opt$levelNameB, "_", indice)]] <- read.delim(file, header = FALSE)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
54 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
55
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
56 # build a counts table
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
57 counts <- data.frame(row.names = listA[[2]][, 1])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
58 for (element in names(listA[-1])) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
59 counts <- cbind(counts, listA[[element]][, 4])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
60 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
61 for (element in names(listB[-1])) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
62 counts <- cbind(counts, listB[[element]][, 4])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
63 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
64 colnames(counts) <- c(names(listA[-1]), names(listB[-1]))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
65 sizes <- colSums(counts)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
66
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
67 # build a meta data object
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
68 meta <- data.frame(
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
69 row.names = colnames(counts),
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
70 condition = c(rep(opt$levelNameA, length(filesA)), rep(opt$levelNameB, length(filesB))),
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
71 libsize = sizes
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
72 )
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
73
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
74
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
75 # Define the library size and conditions for the GLM
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
76 libsize <- meta$libsize
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
77 condition <- factor(meta$condition)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
78 design <- model.matrix(~ 0 + condition)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
79 colnames(design) <- levels(condition)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
80
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
81 # Build a DGE object for the GLM
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
82 y <- DGEList(counts = counts, lib.size = libsize)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
83
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
84 # Normalize the data
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
85 y <- calcNormFactors(y)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
86
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
87 # Estimate the variance
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
88 y <- estimateGLMCommonDisp(y, design)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
89 y <- estimateGLMTrendedDisp(y, design)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
90 y <- estimateGLMTagwiseDisp(y, design)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
91
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
92 # Builds and outputs an object to contain the normalized read abundance in counts per million of reads
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
93 cpm <- cpm(y, log = FALSE, lib.size = libsize)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
94 cpm <- as.data.frame(cpm)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
95 colnames(cpm) <- colnames(counts)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
96 if (!is.null(opt$countsfile)) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
97 normalizedAbundance <- data.frame(Tag = rownames(cpm))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
98 normalizedAbundance <- cbind(normalizedAbundance, cpm)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
99 write.table(normalizedAbundance, file = opt$countsfile, sep = "\t", col.names = TRUE, row.names = FALSE, quote = FALSE)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
100 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
101
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
102 # Conduct fitting of the GLM
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
103 yfit <- glmFit(y, design)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
104
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
105 # Initialize result matrices to contain the results of the GLM
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
106 results <- matrix(nrow = dim(counts)[1], ncol = 0)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
107 logfc <- matrix(nrow = dim(counts)[1], ncol = 0)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
108
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
109 # Make the comparisons for the GLM
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
110 my.contrasts <- makeContrasts(
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
111 paste0(opt$levelNameA, "_", opt$levelNameB, " = ", opt$levelNameA, " - ", opt$levelNameB),
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
112 levels = design
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
113 )
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
114
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
115 # Define the contrasts used in the comparisons
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
116 allcontrasts <- paste0(opt$levelNameA, " vs ", opt$levelNameB)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
117
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
118 # Conduct a for loop that will do the fitting of the GLM for each comparison
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
119 # Put the results into the results objects
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
120 lrt <- glmLRT(yfit, contrast = my.contrasts[, 1])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
121 res <- topTags(lrt, n = dim(c)[1], sort.by = "none")$table
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
122 results <- cbind(results, res[, c(1, 5)])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
123 logfc <- cbind(logfc, res[c(1)])
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
124
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
125 # Add the repeat types back into the results.
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
126 # We should still have the same order as the input data
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
127 results$class <- listA[[2]][, 2]
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
128 results$type <- listA[[2]][, 3]
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
129 # Sort the results table by the FDR
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
130 results <- results[with(results, order(FDR)), ]
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
131
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
132 # Plot Fold Changes for repeat classes and types
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
133
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
134 # open the device and plots
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
135 if (!is.null(opt$plots)) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
136 pdf(opt$plots)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
137 plotMDS(y, main = "Multidimensional Scaling Plot Of Distances Between Samples")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
138 plotBCV(y, xlab = "Gene abundance (Average log CPM)", main = "Biological Coefficient of Variation Plot")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
139 logFC <- results[, "logFC"]
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
140 # Plot the repeat classes
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
141 classes <- with(results, reorder(class, -logFC, median))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
142 classes
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
143 par(mar = c(6, 10, 4, 1))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
144 boxplot(logFC ~ classes,
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
145 data = results, outline = FALSE, horizontal = TRUE,
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
146 las = 2, xlab = "log2(Fold Change)", ylab = "", cex.axis = 0.7, main = paste0(allcontrasts, ", by Class")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
147 )
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
148 abline(v = 0)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
149 # Plot the repeat types
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
150 types <- with(results, reorder(type, -logFC, median))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
151 boxplot(logFC ~ types,
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
152 data = results, outline = FALSE, horizontal = TRUE,
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
153 las = 2, xlab = "log2(Fold Change)", ylab = "", cex.axis = 0.7, main = paste0(allcontrasts, ", by Type")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
154 )
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
155 abline(v = 0)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
156 # volcano plot
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
157 TEdata <- cbind(rownames(results), as.data.frame(results), score = -log(results$FDR, 10))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
158 colnames(TEdata) <- c("Tag", "log2FC", "FDR", "Class", "Type", "score")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
159 color <- ifelse(TEdata$FDR < 0.05, "red", "black")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
160 s <- subset(TEdata, FDR < 0.01)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
161 with(TEdata, plot(log2FC, score, pch = 20, col = color, main = "Volcano plot (all tag types)", ylab = "-log10(FDR)"))
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
162 text(s[, 2], s[, 6], labels = s[, 5], pos = seq(from = 1, to = 3), cex = 0.5)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
163 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
164
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
165 # close the plot device
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
166 if (!is.null(opt$plots)) {
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
167 cat("closing plot device\n")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
168 dev.off()
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
169 }
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
170
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
171 # Save the results
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
172 results <- cbind(TE_item = rownames(results), results)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
173 colnames(results) <- c("TE_item", "log2FC", "FDR", "Class", "Type")
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
174 results$log2FC <- format(results$log2FC, digits = 5)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
175 results$FDR <- format(results$FDR, digits = 5)
6d59fbca2db4 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/main/tools/repenrich2 commit 4dd520dee5c3c0c526e8319a74c4890da032300f
artbio
parents:
diff changeset
176 write.table(results, opt$outfile, quote = FALSE, sep = "\t", col.names = TRUE, row.names = FALSE)