knitr::opts_chunk$set( collapse = TRUE, comment = '#>', message = FALSE, fig.align = 'center', fig.retina = 2, eval = FALSE) foreach::registerDoSEQ()
Here we show two options for using limorhyde2
to analyze RNA-seq data: limma-voom and DESeq2. The two approaches give very similar results.
This vignette assumes you are starting with the output of tximport.
You will need two objects:
txi
, a list from tximport
metadata
, a data.frame
having one row per sampleThe rows in metadata
must correspond to the columns of the elements of txi
.
library('limorhyde2') # txi = ? # metadata = ?
There are many reasonable strategies to do this, here is one.
keep = rowSums(edgeR::cpm(txi$counts) >= 0.5) / ncol(txi$counts) >= 0.75 txiKeep = txi for (name in c('counts', 'length')) { txiKeep[[name]] = txi[[name]][keep, ]}
This avoids unrealistically low log2 CPM values and thus artificially inflated effect size estimates.
for (i in seq_len(nrow(txiKeep$counts))) { idx = txiKeep$counts[i, ] > 0 txiKeep$counts[i, !idx] = min(txiKeep$counts[i, idx])}
y = edgeR::DGEList(txiKeep$counts) y = edgeR::calcNormFactors(y) fit = getModelFit(y, metadata, ..., method = 'voom') # replace '...' as appropriate for your data
The second and third arguments to DESeqDataSetFromTxImport()
are required, but will not be used by limorhyde2
.
y = DESeq2::DESeqDataSetFromTximport(txiKeep, metadata, ~1) fit = getModelFit(y, metadata, ..., method = 'deseq2') # replace '...' as appropriate for your data
limorhyde2
Regardless of which option you choose, the next steps are the same: getPosteriorFit()
, getRhythmStats()
, etc.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.