# Transform RNA-Seq Data Ready for Linear Mixed Modelling with `dream()`

Source: `R/voomWithDreamWeights.R`

`voomWithDreamWeights.Rd`

Transform count data to log2-counts per million (logCPM), estimate the mean-variance relationship and use this to compute appropriate observation-level weights. The data are then ready for linear mixed modelling with `dream()`

. This method is the same as limma::voom(), except that it allows random effects in the formula

## Usage

```
voomWithDreamWeights(
counts,
formula,
data,
lib.size = NULL,
normalize.method = "none",
span = 0.5,
weights = NULL,
plot = FALSE,
save.plot = FALSE,
quiet = FALSE,
BPPARAM = SerialParam(),
...
)
```

## Arguments

- counts
a numeric

`matrix`

containing raw counts, or an`ExpressionSet`

containing raw counts, or a`DGEList`

object. Counts must be non-negative and NAs are not permitted.- formula
specifies variables for the linear (mixed) model. Must only specify covariates, since the rows of exprObj are automatically used as a response. e.g.:

`~ a + b + (1|c)`

Formulas with only fixed effects also work, and`lmFit()`

followed by contrasts.fit() are run.- data
`data.frame`

with columns corresponding to formula- lib.size
numeric vector containing total library sizes for each sample. Defaults to the normalized (effective) library sizes in

`counts`

if`counts`

is a`DGEList`

or to the columnwise count totals if`counts`

is a matrix.- normalize.method
the microarray-style normalization method to be applied to the logCPM values (if any). Choices are as for the

`method`

argument of`normalizeBetweenArrays`

when the data is single-channel. Any normalization factors found in`counts`

will still be used even if`normalize.method="none"`

.- span
width of the lowess smoothing window as a proportion.

- weights
Can be a numeric matrix of individual weights of same dimensions as the

`counts`

, or a numeric vector of sample weights with length equal to`ncol(counts)`

- plot
logical, should a plot of the mean-variance trend be displayed?

- save.plot
logical, should the coordinates and line of the plot be saved in the output?

- quiet
suppress message, default FALSE

- BPPARAM
parameters for parallel evaluation

- ...
other arguments are passed to

`lmer`

.

## Value

An `EList`

object just like the result of `limma::voom()`

## Examples

```
# library(variancePartition)
library(edgeR)
library(BiocParallel)
data(varPartDEdata)
# normalize RNA-seq counts
dge = DGEList(counts = countMatrix)
dge = calcNormFactors(dge)
# specify formula with random effect for Individual
form <- ~ Disease + (1|Individual)
# compute observation weights
vobj = voomWithDreamWeights( dge[1:20,], form, metadata)
#> Memory usage to store result: >49.7 Kb
#> Dividing work into 1 chunks...
#>
#> Total:0.3 s
# fit dream model
res = dream( vobj, form, metadata)
#> Dividing work into 1 chunks...
#>
#> Total:0.9 s
res = eBayes(res)
# extract results
topTable(res, coef="Disease1", number=3)
#> logFC AveExpr t P.Value
#> ENST00000456159.1 gene=MET 1.0182945 2.458926 6.167647 3.897397e-07
#> ENST00000418210.2 gene=TMEM64 1.0375652 4.715367 6.494865 6.543907e-07
#> ENST00000555834.1 gene=RPS6KL1 0.9355651 5.272063 5.736384 1.484023e-06
#> adj.P.Val B z.std
#> ENST00000456159.1 gene=MET 6.543907e-06 6.322906 5.073902
#> ENST00000418210.2 gene=TMEM64 6.543907e-06 6.877286 4.974432
#> ENST00000555834.1 gene=RPS6KL1 9.893488e-06 4.978796 4.813375
```