Hi everyone. I have been following a pipeline for RNAseq analysis using edgeR just until de point after performing a ExactTest. No my question is. Now i want to obtain the genes that are upregulated and downregulated with a pvalue>0.05, a logFC>1 and a fdr asjustemnt method¿ Should i use the topTags() fucntion obtain the DE genes an then filter the ones that have less less than 1 logFC??? ¿Or should I use the decideTest function with this thresholds and adjustment methods and then retrieve the genes that decideTest() says that are upregulated from the Exact test table???
We strongly discourage the use of logFC cutoffs to judge differential expression. I know that it is a very common practice in the literature but it is one that is bad. This is what the help page for decideTests says:
Although this function enables users to set p-value and logFC cutoffs simultaneously, this combination criterion is not recommended.
logFC cutoffs tend to favor low expressed genes and thereby reduce rather than increase biological significance.
Unless the fold changes and p-values are very highly correlated, the addition of a fold change cutoff can also increase the family-wise error rate or false discovery rate above the nominal level.
Users wanting to use fold change thresholding should considering using glmTreat instead and leaving lfc at the default value when using decideTests.
Filtering by logFC would be necessary if you were using ordinary t-tests but it is not necessary when using moderated tests in edgeR or limma. edgeR and limma already give more priority to genes with worthwhile fold-changes and prevent genes with extremely small fold-changes from appearing on the DE list. With edgeR or limma, further filtering by logFC will give priority to low expressed genes and will make your results worse rather than better.
If you have too many DE genes and you want to restrict to those with larger fold-changes, then we recommend glmTreat() instead of just filtering by logFC.
If you still want to find genes with FDR<0.05 and logFC>1, despite my comments, then it is easy to do with either decideTests() or topTags(). There's no difference between the two functions for that purpose. If you do want to filter by logFC, then it would be more consistent to use prior.count=0 when running exactTest(), otherwise you will be filtering by moderated logFC instead of by actual logFC.
Thank you so much! Problem solved. I will drop the logFC criteria and use decideTest.