查看原文
其他

听说富集分析有个概念叫Fold Enrichment

Y叔叔 YuLabSMU 2022-09-20

fold enrichment是什么?当然问google。

这就很简单了,无非是GeneRatio / BgRatio而已嘛。clusterProfiler把这两值都给出来了,你无非就是除一下。所以我估计问这问题的小朋友不知道是什么,也不搜一下。



library(DOSE)
data(geneList)
de = names(geneList)[1:100]
x = enrichDO(de)

假设我们有这样一个富集分析的结果,那么我们可以用clusterProfiler.dplyr操作一下,衍生出一个FoldEnrichment的变量。

library(clusterProfiler.dplyr)
<- mutate(x, 
    FoldEnrichment = parse_ratio(GeneRatio) / parse_ratio(BgRatio))

这样就有了一个FoldEnrichment的值,假如你不放心的话,你可以检验一下。

> head(x, 2)
            ID            Description GeneRatio  BgRatio       pvalue
1 DOID:0060071 pre-malignant neoplasm      5/77  22/8007 1.671524e-06
2    DOID:5295     intestinal disease      9/77 157/8007 1.759049e-05
      p.adjust       qvalue                                      geneID Count
1 0.0006401937 0.0004609887                    6280/6278/10232/332/4321     5
2 0.0027885022 0.0020079362 4312/6279/3627/10563/4283/890/366/4902/3620     9
  FoldEnrichment
1      23.633412
2       5.961039

比如这里第一个:

5/77 / (22/8007)
[123.63341

然后这个变量有了,要输出表格的话as.data.frame然后再套个write.csv解决。要画图的话,那更加容易,变量就在富集结果之中,比如直接dotplot即可。

其实这个Fold Enrichment和Rich Factor是一个东西,FoldEnrichment = (k/n) / (M/N),而RichFactor = k/M,明白了吧,n和N数字是不变的,所以等同于说FoldEnrichment = RichFactor * C,C = N/n 是一个常数,所以它俩是一个东西!不信你再mutate一个richFactor出来,然后再用ggplot画个散点图,所有点都会落在一条直线上。


往期精彩

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存