edgeR
exampleedgeR (McCarthy, J., Chen, Yunshun, Smyth, and K., 2012; Zhou, Lindsay, and Robinson, 2014; Chen, Lun, and Smyth, 2014) is one of the most commonly used packages for performing differential expression analysis. It has been for a while on the top 5% of downloaded Bioconductor packages. The vignette explains how to run a edgeR
analysis. For this example we’ll use simulated data created with DEFormats (Oleś, 2016).
This example will show you how to use regionReport
to make interactive HTML reports from edgeR
results. It will also cover how to create a PDF report.
First we need to simulate count data and will do so using the DEFormats package. Once we have the count data, we need to create a DGEList object and then perform the differential expression analysis using several functions from edgeR. We’ll perform two types of analyses: one using edgeR
and another one using edgeR-robust
.
## Create example data using DEFormats
library('DEFormats')
set.seed(20160407)
counts <- simulateRnaSeqData(n = 2e4, m = 12)
group <- rep(c('A', 'B'), each = 6)
## Create DGEList object and specify the design
library('edgeR')
## Loading required package: limma
##
## Attaching package: 'edgeR'
## The following object is masked from 'package:DEFormats':
##
## DGEList
d <- DGEList(counts, group = group)
design <- model.matrix( ~ group)
## Perform DE analysis with edgeR
dge <- estimateDisp(d, design)
fit <- glmFit(dge, design)
lrt <- glmLRT(fit, coef = 2)
## Alternatively perform DE analysis with edgeR-robust
dge_robust <- estimateGLMRobustDisp(d, design)
fw <- glmFit(dge_robust, design = design)
lrw <- glmLRT(fw, coef = 2)
Once we have the input data we can use the edgeReport()
function from regionReport. First we create a directory where we’ll have the data.
## The output will be saved in 'edgeR-example' and 'edgeR-robust-example'
dir.create('edgeR-example', showWarnings = FALSE, recursive = TRUE)
dir.create('edgeR-robust-example', showWarnings = FALSE, recursive = TRUE)
Next, we can create the HTML report. In this case we’ll change the default theme by using the theme_linedraw()
function from the ggplot2 package.
## Use ggplot2::theme_linedraw()
library('ggplot2')
library('regionReport')
## Create the HTML report for edgeR results
report <- edgeReport(dge, lrt, project = 'edgeR HTML report',
intgroup = 'group', outdir = 'edgeR-example',
output = 'index', theme = theme_linedraw())
## Writing 13 Bibtex entries ...
## OK
## Results written to file 'edgeR-example/index.bib'
##
##
## processing file: index.Rmd
##
|
| | 0%
|
|. | 2%
## inline R code fragments
##
##
|
|... | 4%
## label: docSetup (with options)
## List of 3
## $ bootstrap.show.code : logi FALSE
## $ dev : symbol device
## $ bootstrap.show.message: logi FALSE
##
##
|
|.... | 6%
## ordinary text without R code
##
##
|
|...... | 9%
## label: setup (with options)
## List of 1
## $ bootstrap.show.message: logi FALSE
##
##
|
|....... | 11%
## ordinary text without R code
##
##
|
|........ | 13%
## label: PCA
##
|
|.......... | 15%
## inline R code fragments
##
##
|
|........... | 17%
## label: sampleDist
##
|
|............ | 19%
## ordinary text without R code
##
##
|
|.............. | 21%
## label: MAplotalpha
##
|
|............... | 23%
## inline R code fragments
##
##
|
|................. | 26%
## label: MAplotalphaHalf
##
|
|.................. | 28%
## inline R code fragments
##
##
|
|................... | 30%
## label: MAplotalpha-nBest
##
|
|..................... | 32%
## inline R code fragments
##
##
|
|...................... | 34%
## label: pvalueHistogram
##
|
|........................ | 36%
## ordinary text without R code
##
##
|
|......................... | 38%
## label: pvalueSumm
##
|
|.......................... | 40%
## ordinary text without R code
##
##
|
|............................ | 43%
## label: pvalueTable (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|............................. | 45%
## ordinary text without R code
##
##
|
|.............................. | 47%
## label: padjHistogram
##
|
|................................ | 49%
## inline R code fragments
##
##
|
|................................. | 51%
## label: padjSumm
##
|
|................................... | 53%
## inline R code fragments
##
##
|
|.................................... | 55%
## label: padjTable (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|..................................... | 57%
## inline R code fragments
##
##
|
|....................................... | 60%
## label: topFeatures (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|........................................ | 62%
## inline R code fragments
##
##
|
|......................................... | 64%
## label: plotCounts
##
|
|........................................... | 66%
## inline R code fragments
##
##
|
|............................................ | 68%
## label: edgeR-BCV (with options)
## List of 2
## $ eval: symbol isEdgeR
## $ echo: language isEdgeR & outputIsHTML
##
|
|.............................................. | 70%
## inline R code fragments
##
##
|
|............................................... | 72%
## label: edgeR-MDS (with options)
## List of 2
## $ eval: symbol isEdgeR
## $ echo: language isEdgeR & outputIsHTML
##
|
|................................................ | 74%
## inline R code fragments
##
##
|
|.................................................. | 77%
## label: unnamed-chunk-1 (with options)
## List of 2
## $ child: symbol customCode
## $ eval : symbol hasCustomCode
##
##
|
|................................................... | 79%
## inline R code fragments
##
##
|
|..................................................... | 81%
## label: thecall (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|...................................................... | 83%
## ordinary text without R code
##
##
|
|....................................................... | 85%
## label: reproducibility1 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|......................................................... | 87%
## ordinary text without R code
##
##
|
|.......................................................... | 89%
## label: reproducibility2 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|........................................................... | 91%
## ordinary text without R code
##
##
|
|............................................................. | 94%
## label: reproducibility3 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|.............................................................. | 96%
## inline R code fragments
##
##
|
|................................................................ | 98%
## label: bibliography (with options)
## List of 3
## $ results: chr "asis"
## $ echo : logi FALSE
## $ warning: logi FALSE
##
##
|
|.................................................................| 100%
## ordinary text without R code
## output file: index.knit.md
## /usr/local/bin/pandoc +RTS -K512m -RTS index.utf8.md --to html --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output index.html --smart --email-obfuscation none --self-contained --standalone --section-divs --table-of-contents --toc-depth 3 --variable toc_float=1 --variable toc_selectors=h1,h2,h3 --variable toc_collapsed=1 --variable toc_smooth_scroll=1 --template /Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/default.html --variable 'theme:spacelab' --include-in-header /var/folders/cx/n9s558kx6fb7jf5z_pgszgb80000gn/T//RtmpM22qv3/rmarkdown-str38e04b426959.html --mathjax --variable 'mathjax-url:https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --no-highlight --variable highlightjs=/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/highlight --variable navigationjs=/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/navigation-1.0 --variable code_folding=hide
##
## Output created: index.html
## Create the HTML report for edgeR-robust results
report_robust <- edgeReport(dge_robust, lrw,
project = 'edgeR-robust HTML report',
intgroup = 'group', outdir = 'edgeR-robust-example',
output = 'index', theme = theme_linedraw())
## Writing 13 Bibtex entries ...
## OK
## Results written to file 'edgeR-robust-example/index.bib'
##
##
## processing file: index.Rmd
##
|
| | 0%
|
|. | 2%
## inline R code fragments
##
##
|
|... | 4%
## label: docSetup (with options)
## List of 3
## $ bootstrap.show.code : logi FALSE
## $ dev : symbol device
## $ bootstrap.show.message: logi FALSE
##
##
|
|.... | 6%
## ordinary text without R code
##
##
|
|...... | 9%
## label: setup (with options)
## List of 1
## $ bootstrap.show.message: logi FALSE
##
##
|
|....... | 11%
## ordinary text without R code
##
##
|
|........ | 13%
## label: PCA
##
|
|.......... | 15%
## inline R code fragments
##
##
|
|........... | 17%
## label: sampleDist
##
|
|............ | 19%
## ordinary text without R code
##
##
|
|.............. | 21%
## label: MAplotalpha
##
|
|............... | 23%
## inline R code fragments
##
##
|
|................. | 26%
## label: MAplotalphaHalf
##
|
|.................. | 28%
## inline R code fragments
##
##
|
|................... | 30%
## label: MAplotalpha-nBest
##
|
|..................... | 32%
## inline R code fragments
##
##
|
|...................... | 34%
## label: pvalueHistogram
##
|
|........................ | 36%
## ordinary text without R code
##
##
|
|......................... | 38%
## label: pvalueSumm
##
|
|.......................... | 40%
## ordinary text without R code
##
##
|
|............................ | 43%
## label: pvalueTable (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|............................. | 45%
## ordinary text without R code
##
##
|
|.............................. | 47%
## label: padjHistogram
##
|
|................................ | 49%
## inline R code fragments
##
##
|
|................................. | 51%
## label: padjSumm
##
|
|................................... | 53%
## inline R code fragments
##
##
|
|.................................... | 55%
## label: padjTable (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|..................................... | 57%
## inline R code fragments
##
##
|
|....................................... | 60%
## label: topFeatures (with options)
## List of 1
## $ results: chr "asis"
##
##
|
|........................................ | 62%
## inline R code fragments
##
##
|
|......................................... | 64%
## label: plotCounts
##
|
|........................................... | 66%
## inline R code fragments
##
##
|
|............................................ | 68%
## label: edgeR-BCV (with options)
## List of 2
## $ eval: symbol isEdgeR
## $ echo: language isEdgeR & outputIsHTML
##
|
|.............................................. | 70%
## inline R code fragments
##
##
|
|............................................... | 72%
## label: edgeR-MDS (with options)
## List of 2
## $ eval: symbol isEdgeR
## $ echo: language isEdgeR & outputIsHTML
##
|
|................................................ | 74%
## inline R code fragments
##
##
|
|.................................................. | 77%
## label: unnamed-chunk-1 (with options)
## List of 2
## $ child: symbol customCode
## $ eval : symbol hasCustomCode
##
##
|
|................................................... | 79%
## inline R code fragments
##
##
|
|..................................................... | 81%
## label: thecall (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|...................................................... | 83%
## ordinary text without R code
##
##
|
|....................................................... | 85%
## label: reproducibility1 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|......................................................... | 87%
## ordinary text without R code
##
##
|
|.......................................................... | 89%
## label: reproducibility2 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|........................................................... | 91%
## ordinary text without R code
##
##
|
|............................................................. | 94%
## label: reproducibility3 (with options)
## List of 1
## $ echo: logi FALSE
##
##
|
|.............................................................. | 96%
## inline R code fragments
##
##
|
|................................................................ | 98%
## label: bibliography (with options)
## List of 3
## $ results: chr "asis"
## $ echo : logi FALSE
## $ warning: logi FALSE
##
##
|
|.................................................................| 100%
## ordinary text without R code
## output file: index.knit.md
## /usr/local/bin/pandoc +RTS -K512m -RTS index.utf8.md --to html --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash-implicit_figures --output index.html --smart --email-obfuscation none --self-contained --standalone --section-divs --table-of-contents --toc-depth 3 --variable toc_float=1 --variable toc_selectors=h1,h2,h3 --variable toc_collapsed=1 --variable toc_smooth_scroll=1 --template /Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/default.html --variable 'theme:spacelab' --include-in-header /var/folders/cx/n9s558kx6fb7jf5z_pgszgb80000gn/T//RtmpM22qv3/rmarkdown-str38e031560cdb.html --mathjax --variable 'mathjax-url:https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --no-highlight --variable highlightjs=/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/highlight --variable navigationjs=/Library/Frameworks/R.framework/Versions/3.3/Resources/library/rmarkdown/rmd/h/navigation-1.0 --variable code_folding=hide
##
## Output created: index.html
You can view the final HTML reports here:
edgeR
results edgeR-example,edgeR-robust
results edgeR-robust-example.The HTML report has an interactive table with the top features (in this case genes). It allows you to re-order these top features by different criteria or even search for your feature of interest. However, sometimes you might prefer to create a PDF report. The following code will allow you to create such a report for the edgeR
results we previously calculated.
## Create PDF version of the same report
report <- DESeq2Report(dge, lrt, project = 'edgeR PDF report',
intgroup = 'group', outdir = 'edgeR-example',
output = 'edgeReport', theme = theme_linedraw(),
output_format = 'pdf_document', device = 'pdf')
## '/Library/Frameworks/R.framework/Resources/bin/R' --no-site-file \
## --no-environ --no-save --no-restore --quiet \
## --file='edgeR-report-isolated-PDF.R' --slave
##
You can view the final PDF report at edgeR-example PDF.
## Date generated:
Sys.time()
## [1] "2016-04-12 07:29:34 EDT"
## Time spent making this page:
proc.time()
## user system elapsed
## 222.802 9.457 235.317
## R and packages info:
options(width = 120)
devtools::session_info()
## Session info -----------------------------------------------------------------------------------------------------------
## setting value
## version R version 3.3.0 alpha (2016-03-23 r70368)
## system x86_64, darwin13.4.0
## ui X11
## language (EN)
## collate en_US.UTF-8
## tz America/New_York
## date 2016-04-12
## Packages ---------------------------------------------------------------------------------------------------------------
## package * version date source
## acepack 1.3-3.3 2014-11-24 CRAN (R 3.3.0)
## annotate 1.49.1 2016-02-06 Bioconductor
## AnnotationDbi 1.33.8 2016-04-10 Bioconductor
## backports 1.0.2 2016-03-18 CRAN (R 3.3.0)
## bibtex 0.4.0 2014-12-31 CRAN (R 3.3.0)
## Biobase * 2.31.3 2016-01-14 Bioconductor
## BiocGenerics * 0.17.4 2016-04-07 Bioconductor
## BiocParallel 1.5.21 2016-03-23 Bioconductor
## biomaRt 2.27.2 2016-01-14 Bioconductor
## Biostrings 2.39.12 2016-02-21 Bioconductor
## bitops 1.0-6 2013-08-17 CRAN (R 3.3.0)
## BSgenome 1.39.4 2016-02-21 Bioconductor
## bumphunter 1.11.5 2016-03-29 Bioconductor
## checkmate 1.7.4 2016-04-08 CRAN (R 3.3.0)
## cluster 2.0.3 2015-07-21 CRAN (R 3.3.0)
## codetools 0.2-14 2015-07-15 CRAN (R 3.3.0)
## colorout * 1.1-2 2016-03-24 Github (jalvesaq/colorout@f96c00c)
## colorspace 1.2-6 2015-03-11 CRAN (R 3.3.0)
## DBI 0.3.1 2014-09-24 CRAN (R 3.3.0)
## DEFormats * 0.99.8 2016-03-31 Bioconductor
## derfinder 1.5.30 2016-03-25 Bioconductor
## derfinderHelper 1.5.3 2016-03-23 Bioconductor
## DESeq2 * 1.11.42 2016-04-10 Bioconductor
## devtools * 1.10.0 2016-01-23 CRAN (R 3.3.0)
## digest 0.6.9 2016-01-08 CRAN (R 3.3.0)
## doRNG 1.6 2014-03-07 CRAN (R 3.3.0)
## DT * 0.1 2015-06-09 CRAN (R 3.3.0)
## edgeR * 3.13.8 2016-04-08 Bioconductor
## evaluate 0.8.3 2016-03-05 CRAN (R 3.3.0)
## foreach 1.4.3 2015-10-13 CRAN (R 3.3.0)
## foreign 0.8-66 2015-08-19 CRAN (R 3.3.0)
## formatR 1.3 2016-03-05 CRAN (R 3.3.0)
## Formula 1.2-1 2015-04-07 CRAN (R 3.3.0)
## genefilter 1.53.3 2016-03-23 Bioconductor
## geneplotter 1.49.0 2016-01-14 Bioconductor
## GenomeInfoDb * 1.7.6 2016-01-29 Bioconductor
## GenomicAlignments 1.7.20 2016-02-25 Bioconductor
## GenomicFeatures 1.23.29 2016-04-05 Bioconductor
## GenomicFiles 1.7.9 2016-02-22 Bioconductor
## GenomicRanges * 1.23.25 2016-03-31 Bioconductor
## ggplot2 * 2.1.0 2016-03-01 CRAN (R 3.3.0)
## gridExtra 2.2.1 2016-02-29 CRAN (R 3.3.0)
## gtable 0.2.0 2016-02-26 CRAN (R 3.3.0)
## highr 0.5.1 2015-09-18 CRAN (R 3.3.0)
## Hmisc 3.17-3 2016-04-03 CRAN (R 3.3.0)
## htmltools 0.3.5 2016-03-21 CRAN (R 3.3.0)
## htmlwidgets 0.6 2016-02-25 CRAN (R 3.3.0)
## httr 1.1.0 2016-01-28 CRAN (R 3.3.0)
## IRanges * 2.5.43 2016-04-10 Bioconductor
## iterators 1.0.8 2015-10-13 CRAN (R 3.3.0)
## jsonlite 0.9.19 2015-11-28 CRAN (R 3.3.0)
## knitcitations * 1.0.7 2015-10-28 CRAN (R 3.3.0)
## knitr * 1.12.3 2016-01-22 CRAN (R 3.3.0)
## knitrBootstrap 1.0.0 2016-03-24 Github (jimhester/knitrBootstrap@cdaa4a9)
## labeling 0.3 2014-08-23 CRAN (R 3.3.0)
## lattice 0.20-33 2015-07-14 CRAN (R 3.3.0)
## latticeExtra 0.6-28 2016-02-09 CRAN (R 3.3.0)
## limma * 3.27.14 2016-03-23 Bioconductor
## locfit 1.5-9.1 2013-04-20 CRAN (R 3.3.0)
## lubridate 1.5.6 2016-04-06 CRAN (R 3.3.0)
## magrittr 1.5 2014-11-22 CRAN (R 3.3.0)
## markdown 0.7.7 2015-04-22 CRAN (R 3.3.0)
## Matrix 1.2-4 2016-03-02 CRAN (R 3.3.0)
## matrixStats 0.50.1 2015-12-15 CRAN (R 3.3.0)
## memoise 1.0.0 2016-01-29 CRAN (R 3.3.0)
## munsell 0.4.3 2016-02-13 CRAN (R 3.3.0)
## nnet 7.3-12 2016-02-02 CRAN (R 3.3.0)
## pheatmap * 1.0.8 2015-12-11 CRAN (R 3.3.0)
## pkgmaker 0.22 2014-05-14 CRAN (R 3.3.0)
## plyr 1.8.3 2015-06-12 CRAN (R 3.3.0)
## qvalue 2.3.2 2016-01-14 Bioconductor
## R6 2.1.2 2016-01-26 CRAN (R 3.3.0)
## RColorBrewer * 1.1-2 2014-12-07 CRAN (R 3.3.0)
## Rcpp 0.12.4 2016-03-26 CRAN (R 3.3.0)
## RCurl 1.95-4.8 2016-03-01 CRAN (R 3.3.0)
## RefManageR 0.10.13 2016-04-04 CRAN (R 3.3.0)
## regionReport * 1.5.47 2016-04-12 Bioconductor
## registry 0.3 2015-07-08 CRAN (R 3.3.0)
## reshape2 1.4.1 2014-12-06 CRAN (R 3.3.0)
## RJSONIO 1.3-0 2014-07-28 CRAN (R 3.3.0)
## rmarkdown 0.9.5 2016-02-22 CRAN (R 3.3.0)
## rngtools 1.2.4 2014-03-06 CRAN (R 3.3.0)
## rpart 4.1-10 2015-06-29 CRAN (R 3.3.0)
## Rsamtools 1.23.8 2016-04-10 Bioconductor
## RSQLite 1.0.0 2014-10-25 CRAN (R 3.3.0)
## rstudioapi 0.5 2016-01-24 CRAN (R 3.3.0)
## rtracklayer 1.31.10 2016-04-07 Bioconductor
## S4Vectors * 0.9.46 2016-04-07 Bioconductor
## scales 0.4.0 2016-02-26 CRAN (R 3.3.0)
## stringi 1.0-1 2015-10-22 CRAN (R 3.3.0)
## stringr 1.0.0 2015-04-30 CRAN (R 3.3.0)
## SummarizedExperiment * 1.1.23 2016-04-06 Bioconductor
## survival 2.38-3 2015-07-02 CRAN (R 3.3.0)
## VariantAnnotation 1.17.23 2016-04-07 Bioconductor
## withr 1.0.1 2016-02-04 CRAN (R 3.3.0)
## XML 3.98-1.4 2016-03-01 CRAN (R 3.3.0)
## xtable 1.8-2 2016-02-05 CRAN (R 3.3.0)
## XVector 0.11.8 2016-04-06 Bioconductor
## yaml 2.1.13 2014-06-12 CRAN (R 3.3.0)
## zlibbioc 1.17.1 2016-03-19 Bioconductor
Citations made with knitcitations
(Boettiger, 2015). Bibliography file: edgeR.bib. You can find more code on how to run edgeR-robust
at imlspenticton.uzh.ch/robinson_lab/edgeR_robust/ which is the supplementary website for (Zhou, Lindsay, and Robinson, 2014).
[1] J. Allaire, J. Cheng, Y. Xie, J. McPherson, et al. rmarkdown: Dynamic Documents for R. R package version 0.9.5. 2016. URL: https://CRAN.R-project.org/package=rmarkdown.
[2] C. Boettiger. knitcitations: Citations for ‘Knitr’ Markdown Files. R package version 1.0.7. 2015. URL: https://CRAN.R-project.org/package=knitcitations.
[3] Y. Chen, A. T. L. Lun and G. K. Smyth. “Differential expression analysis of complex RNA-seq experiments using edgeR”. In: Statistical Analysis of Next Generation Sequencing Data. Ed. by S. Datta and D. Nettleton. New York: Springer, 2014, pp. 51-74.
[4] L. Collado-Torres, A. E. Jaffe and J. T. Leek. “regionReport: Interactive reports for region-based analyses”. In: F1000Research 4 (2015), p. 105. DOI: 10.12688/f1000research.6379.1. URL: http://f1000research.com/articles/4-105/v1.
[5] R. Kolde. pheatmap: Pretty Heatmaps. R package version 1.0.8. 2015. URL: https://CRAN.R-project.org/package=pheatmap.
[6] M. I. Love, W. Huber and S. Anders. “Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2”. In: Genome Biology 15 (12 2014), p. 550. DOI: 10.1186/s13059-014-0550-8.
[7] McCarthy, D. J., Chen, Yunshun, et al. “Differential expression analysis of multifactor RNA-Seq experiments with respect to biological variation”. In: Nucleic Acids Research 40.10 (2012), pp. -9.
[8] M. D. Robinson, D. J. McCarthy and G. K. Smyth. “edgeR: a Bioconductor package for differential expression analysis of digital gene expression data”. In: Bioinformatics 26 (2010), pp. -1.
[9] H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2009. ISBN: 978-0-387-98140-6. URL: http://ggplot2.org.
[10] Y. Xie. DT: A Wrapper of the JavaScript Library ‘DataTables’. R package version 0.1. 2015. URL: https://CRAN.R-project.org/package=DT.
[11] Y. Xie. “knitr: A Comprehensive Tool for Reproducible Research in R”. In: Implementing Reproducible Computational Research. Ed. by V. Stodden, F. Leisch and R. D. Peng. ISBN 978-1466561595. Chapman and Hall/CRC, 2014. URL: http://www.crcpress.com/product/isbn/9781466561595.
[12] X. Zhou, H. Lindsay and M. D. Robinson. “Robustly detecting differential expression in RNA sequencing data using observation weights”. In: Nucleic Acids Research 42 (2014), p. e91.