S4 class to store data from differentially expression analysis. It should be compatible with different package and stores the information in a way the methods will work with all of them.

DEGSet(resList, default)

DEGSet(resList, default)

as.DEGSet(object, ...)

# S4 method for TopTags
as.DEGSet(object, default = "raw", extras = NULL)

# S4 method for data.frame
as.DEGSet(object, contrast, default = "raw",
  extras = NULL)

# S4 method for DESeqResults
as.DEGSet(object, default = "shrunken",
  extras = NULL)

Arguments

resList

List with results as elements containing log2FoldChange, pvalues and padj as column. Rownames should be feature names. Elements should have names.

default

The name of the element to use by default.

object

Different objects to be transformed to DEGSet when using as.DEGSet.

...

Optional parameters of the generic.

extras

List of extra tables related to the same comparison when using as.DEGSet.

contrast

To name the comparison when using as.DEGSet.

Details

For now supporting only DESeq2::results() output. Use constructor degComps() to create the object.

The list will contain one element for each comparison done. Each element has the following structure:

  • DEG table

  • Optional table with shrunk Fold Change when it has been done.

To access the raw table use deg(dgs, "raw"), to access the shrunken table use deg(dgs, "shrunken") or just deg(dgs).

Examples

library(DESeq2)
#> Loading required package: S4Vectors
#> Loading required package: stats4
#> Loading required package: BiocGenerics
#> Loading required package: parallel
#> #> Attaching package: ‘BiocGenerics’
#> The following objects are masked from ‘package:parallel’: #> #> clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, #> clusterExport, clusterMap, parApply, parCapply, parLapply, #> parLapplyLB, parRapply, parSapply, parSapplyLB
#> The following objects are masked from ‘package:stats’: #> #> IQR, mad, sd, var, xtabs
#> The following objects are masked from ‘package:base’: #> #> anyDuplicated, append, as.data.frame, basename, cbind, colnames, #> dirname, do.call, duplicated, eval, evalq, Filter, Find, get, grep, #> grepl, intersect, is.unsorted, lapply, Map, mapply, match, mget, #> order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank, #> rbind, Reduce, rownames, sapply, setdiff, sort, table, tapply, #> union, unique, unsplit, which, which.max, which.min
#> #> Attaching package: ‘S4Vectors’
#> The following object is masked from ‘package:base’: #> #> expand.grid
#> Loading required package: IRanges
#> Loading required package: GenomicRanges
#> Loading required package: GenomeInfoDb
#> Loading required package: SummarizedExperiment
#> Loading required package: Biobase
#> Welcome to Bioconductor #> #> Vignettes contain introductory material; view with #> 'browseVignettes()'. To cite Bioconductor, see #> 'citation("Biobase")', and for packages 'citation("pkgname")'.
#> Loading required package: DelayedArray
#> Loading required package: matrixStats
#> #> Attaching package: ‘matrixStats’
#> The following objects are masked from ‘package:Biobase’: #> #> anyMissing, rowMedians
#> Loading required package: BiocParallel
#> #> Attaching package: ‘DelayedArray’
#> The following objects are masked from ‘package:matrixStats’: #> #> colMaxs, colMins, colRanges, rowMaxs, rowMins, rowRanges
#> The following objects are masked from ‘package:base’: #> #> aperm, apply, rowsum
library(edgeR)
#> Loading required package: limma
#> #> Attaching package: ‘limma’
#> The following object is masked from ‘package:DESeq2’: #> #> plotMA
#> The following object is masked from ‘package:BiocGenerics’: #> #> plotMA
library(limma) dds <- makeExampleDESeqDataSet(betaSD = 1) colData(dds)[["treatment"]] <- sample(colData(dds)[["condition"]], 12) design(dds) <- ~ condition + treatment dds <- DESeq(dds)
#> estimating size factors
#> estimating dispersions
#> gene-wise dispersion estimates
#> mean-dispersion relationship
#> final dispersion estimates
#> fitting model and testing
res <- degComps(dds, combs = c("condition"))
#> Doing 1 element(s).
#> Doing results() for each element.
#> Doing lcfSrink() for each element.
#> using 'normal' for LFC shrinkage, the Normal prior from Love et al (2014). #> #> Note that type='apeglm' and type='ashr' have shown to have less bias than type='normal'. #> See ?lfcShrink for more details on shrinkage type, and the DESeq2 vignette. #> Reference: https://doi.org/10.1093/bioinformatics/bty895
deg(res)
#> log2 fold change (MAP): condition B vs A #> Wald test p-value: condition B vs A #> DataFrame with 1000 rows and 6 columns #> baseMean log2FoldChange lfcSE #> <numeric> <numeric> <numeric> #> gene202 595.738080502665 2.84842810352625 0.266347713336691 #> gene710 117.423055944441 2.27457157814062 0.269412722270367 #> gene365 62.4434899710059 2.58422310739862 0.312590047837112 #> gene92 220.780204589055 2.34371133129609 0.293935357285173 #> gene364 504.522116500683 2.02714357936619 0.261124625693044 #> ... ... ... ... #> gene817 1.01863690444656 0.449433023322897 0.445454565205662 #> gene843 0.337116176782868 -0.213542721980008 0.335419175582519 #> gene896 0.641791262357825 -0.193113193147619 0.453528848117175 #> gene929 0.400097105619871 0.148754379342596 0.336592062169539 #> gene986 1.03912504596143 -0.08078789533133 0.501091699324092 #> stat pvalue padj #> <numeric> <numeric> <numeric> #> gene202 10.4242414625226 1.92186681865069e-25 1.84307027908601e-22 #> gene710 8.19578166036082 2.48969903778264e-16 1.19381068861678e-13 #> gene365 8.02865482517521 9.85471916802617e-16 3.15022522737903e-13 #> gene92 7.7626720152767 8.31584691463868e-15 1.99372429778462e-12 #> gene364 7.51756890822073 5.58041485417993e-14 1.07032356903171e-11 #> ... ... ... ... #> gene817 1.05361747680227 0.292058084434074 NA #> gene843 -0.406932816121088 0.684057332932902 NA #> gene896 -0.612499137852159 0.5402075682426 NA #> gene929 0.414219583248068 0.678713301164469 NA #> gene986 0.0436335995171099 0.965196468651691 NA
#> <numeric>
deg(res, tidy = "tibble")
#> # A tibble: 1,000 x 7 #> gene baseMean log2FoldChange lfcSE stat pvalue padj #> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 gene202 596. 2.85 0.266 10.4 1.92e-25 1.84e-22 #> 2 gene710 117. 2.27 0.269 8.20 2.49e-16 1.19e-13 #> 3 gene365 62.4 2.58 0.313 8.03 9.85e-16 3.15e-13 #> 4 gene92 221. 2.34 0.294 7.76 8.32e-15 1.99e-12 #> 5 gene364 505. 2.03 0.261 7.52 5.58e-14 1.07e-11 #> 6 gene968 69.4 2.62 0.345 7.11 1.17e-12 1.87e-10 #> 7 gene836 49.2 2.41 0.335 7.05 1.78e-12 2.43e-10 #> 8 gene77 32.5 -2.31 0.334 -6.75 1.50e-11 1.80e- 9 #> 9 gene342 484. 1.45 0.225 6.50 7.90e-11 8.42e- 9 #> 10 gene880 27.5 2.80 0.402 6.48 9.01e-11 8.64e- 9 #> # … with 990 more rows
# From edgeR dge <- DGEList(counts=counts(dds), group=colData(dds)[["treatment"]]) dge <- estimateCommonDisp(dge) res <- as.DEGSet(topTags(exactTest(dge))) # From limma v <- voom(counts(dds), model.matrix(~treatment, colData(dds)), plot=FALSE) fit <- lmFit(v) fit <- eBayes(fit, robust=TRUE) res <- as.DEGSet(topTable(fit, n = "Inf"), "A_vs_B")
#> Removing intercept from test coefficients