How to choose threshold for filtering low counts before Voom transformation?
1
2
Entering edit mode
3.7 years ago
randyOrlando ▴ 20

Greetings,

I'm currently performing a differential expression experiment to which I'm trying to apply Voom transformation using limma package.

I have the experimental design, the count matrix and dge object prepared. I'm having trouble choosing the method to filter low counts reads.

The first method I am employing is filterByExpr from edgeR package:

keep <- filterByExpr(dge, design = design)
dge <- dge[keep, , keep.lib.sizes = F]
dim(dge)

After calculating normalization factors using calcNormFactors and performing voom with v <- voom(dge, design, plot = T, normalize.method = "quantile") I got this plot:

https://i.ibb.co/n0wb8Gc/voom-filterby.png

Which from what I'm reading it still needs some filtering to do given the trend of the variance.

The alternative method I used consisted on applying:

cutoff <- 1
drop <- which(apply(cpm(dge), 1, max) < cutoff)
d <- dge[-drop,] 
dim(d)

But while the number of genes trimmed is different, the plot is mostly the same.

How should I choose a threshold to filter low counts? Is there another way?

Thank you very much,

Kind regards

RNA-Seq R limma voom • 1.7k views
ADD COMMENT
0
Entering edit mode
23 months ago
Gordon Smyth ★ 7.0k

I don't see any reason why the recommended method of filterByExpr would not be sufficient fo you. However you might like to try the newer function edgeR::voomLmFit, which is a replacment for voom and lmFit. It is very robust to small counts and hence very insensitive to the amount of filtering done.

ADD COMMENT

Login before adding your answer.

Traffic: 2288 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6