从基因名到GO注释一步到位

大部分的生物学高通量数据处理后都是得到基因集,不管是上调下调表达基因集,还是共表达的模块基因集,都是需要注释到生物学功能数据库来看基因集的意义,最常见的是GO/KEGG数据库啦,还有很多其它在MsigDB的,比如reactome和biocarta数据库等等。
这样分析起来就很麻烦,尤其是GO数据库,还有 BP,CC,MF的区别,这个时候推荐使用Y叔的神器,使用
library(ggplot2)
library(stringr)
library(clusterProfiler)
# 我这里演示的是brown_down_gene,是WGCNA的一个模块,基因集
# 因为表达矩阵是symbol,所以需要转为ENTREZID,才能走clusterProfiler的函数。
gene.df <- bitr(brown_down_gene$symbol, fromType="SYMBOL",
                toType="ENTREZID", 
                OrgDb = "org.Hs.eg.db")
go <- enrichGO(gene = gene.df$ENTREZID, OrgDb = "org.Hs.eg.db", ont="all")
barplot(go, split="ONTOLOGY")+ facet_grid(ONTOLOGY~., scale="free")
会得到如下所示的图,当然,理解起来需要耗费一点功夫,如果你是第一次看到的话!不仅仅是要理解GO数据库,以及BP,MF,CC的分类系统,超几何分布检验,不同的阈值过滤,筛选指标等等。
因为上面的代码并没有修改默认的统计学指标筛选参数,如果你的基因确实没有规则,有可能拿不到结果哦!这个时候可以设置:pvalueCutoff = 0.9, qvalueCutoff =0.9 甚至为1,来不做筛选。而且基因集的大小也是被限制了。
如果你想分开计算上下调基因的GO数据库注释
而且还想保留富集分析结果到csv文件,代码如下:
library(ggplot2)
library(stringr)
library(clusterProfiler)
# 通过前面的差异分析,我们拿到了  gene_up 和 gene_down 这两个基因集
# 后面的分析,只需要  gene_up 和 gene_down  这两个变量即可
go_up <- enrichGO(gene_up, 
                    OrgDb = "org.Hs.eg.db", 
                    ont="all",
                    pvalueCutoff = 0.9,
                    qvalueCutoff =0.9)
go_up=DOSE::setReadable(go_up, OrgDb='org.Hs.eg.db',keyType='ENTREZID')
write.csv(go_up@result,paste0(pro,'_go_down.up.csv'))
barplot(go_up, split="ONTOLOGY",font.size =10)+ 
  facet_grid(ONTOLOGY~., scale="free") + 
  scale_x_discrete(labels=function(x) str_wrap(x, width=50))+
  ggsave(paste0(pro,'gene_up_GO_all_barplot.png'))

go_down <- enrichGO(gene_down, 
                    OrgDb = "org.Hs.eg.db", 
                    ont="all",
                    pvalueCutoff = 0.9,
                    qvalueCutoff =0.9)
go_down=DOSE::setReadable(go_down, OrgDb='org.Hs.eg.db',keyType='ENTREZID')
write.csv(go_down@result,paste0(pro,'_go_down.up.csv'))
barplot(go_down, split="ONTOLOGY",font.size =10)+ 
  facet_grid(ONTOLOGY~., scale="free") + 
  scale_x_discrete(labels=function(x) str_wrap(x, width=50))+
  ggsave(paste0(pro,'gene_down_GO_all_barplot.png'))

其实就是两个独立的基因集,独立的走enrichGO流程啦!
多组基因集的KEGG数据库富集
有趣的是,如果你是多组基因,不仅仅是上下调,甚至可以走compareCluster流程,不过Y叔的这个函数总是喜欢在线获取KEGG数据库的最新信息,这一点对很多人来说,考验网速:
# 这里需要制作一个 DEG 的数据框,其中有两列ENTREZID,是基因id,和new是分组信息
xx.formula <- compareCluster(ENTREZID~new, data=DEG, fun='enrichKEGG')
dotplot(xx.formula, x=~GeneRatio) + facet_grid(~new)
如果是多组基因集走GO数据库富集
如下,构建一个数据框,list_de_gene_clusters, 含有两列信息:
list_de_gene_clusters <- split(de_gene_clusters$ENTREZID, 
                               de_gene_clusters$cluster)

# Run full GO enrichment test
formula_res <- compareCluster(
  ENTREZID~cluster, 
  data=de_gene_clusters, 
  fun="enrichGO", 
  OrgDb="org.Mm.eg.db",
  ont           = "BP",
  pAdjustMethod = "BH",
  pvalueCutoff  = 0.01,
  qvalueCutoff  = 0.05
)

# Run GO enrichment test and merge terms 
# that are close to each other to remove result redundancy
lineage1_ego <- simplify(
  formula_res, 
  cutoff=0.5, 
  by="p.adjust", 
  select_fun=min
)

感兴趣的可以把这个结果跟3个出名的网页工具进行比较
  • https://amp.pharm.mssm.edu/Enrichr/
  • http://www.webgestalt.org/
  • https://biit.cs.ut.ee/gprofiler
另外,强推Y叔clusterProfiler的一些可视化方法
可视化方法函数列表:
  • barplot
  • cnetplot
  • dotplot
  • emapplot
  • gseaplot
  • goplot
  • upsetplot
好几个都是以前没有介绍过的,有趣的是我准备浏览这些可视化函数的帮助文档的时候,看到了这样的话:
重点来了,Y叔特意为其包写了一本书来介绍其用法。Please go to https://yulab-smu.github.io/clusterProfiler-book/ for the full vignette.
(0)

相关推荐

  • GO富集分析示例

    GO是Gene Ontology的简称,是基因功能国际标准分类体系.它旨在建立一个适用于各种物种的,对基因和蛋白质功能进行限定和描述的,并能随着研究不断深入而更新的语言词汇标准.GO分为分子功能(Mo ...

  • clusterProfiler|GSEA富集分析及可视化

    GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,无需设定阈值来区分上调下调基因,使用所有的基因进行分析. GO 和 KEGG 可参考:R|clusterProfi ...

  • 手把手教你用R做GSEA分析

    GSEA是非常常见的富集分析方式,以前我们做GSEA需要用依赖java的GSEA软件,那个时候准备分析的文件可能要花上很长时间,报错还不知道如何处理.现在我们来学习一下R语言进行GSEA分析. 加载R ...

  • 转录组学习八(功能富集分析)

    任务 选择p<0.05而且abs(log2FC)大于1的基因为显著差异表达基因集,对这个基因集用R包做KEGG/GO超几何分布检验分析. 把表达矩阵和分组信息分别作出cls和gct文件,导入到G ...

  • gpl16699平台的探针注释到基因名(十一月学徒投稿)

    gpl16699平台的探针注释到基因名(十一月学徒投稿)

  • GEO的数据注释文件没有基因名肿么破?

    写在前面 我们在处理GEO芯片数据的时候,经常会碰到芯片的数据的注释文件没有提供基因名,只有基因的序列.替代的解决办法就是对所有的注释数据来进行批量的blast,利用注释文件提供的序列来通过blast ...

  • 带有基因名的火山图

    现在很多文章开始出现这样的一种情况,在绘制火山图中,显示我们所关注的基因,那么如何去显示呢?很多人可能会这么做,在绘制普通的火山图之后,使用AI对图进行修改,添加部分基因,但是现在我要介绍的是如何用R ...

  • 基因名变化太快,比如PAM50

    可以在 genefu 这个R包里面找到PAM50数据集 library(genefu)  data(pam50)  pam50$centroids.map 简单查看如下:         probe ...

  • 芯片的探针ID找到基因名-基于R语言-一文就够

    使用bioconductor注释包 如果该芯片平台有对应的bioconductor注释包,只有约90个常用的芯片有! 比如: library(hgu133a.db) ids=toTable(hgu13 ...

  • 听说Excel表格动了你的基因名?

    很简单啊,修改回来啊!!! 帮同学处理一下他从公司拿到的差异分析结果,当然,给我的是Excel表格,老规矩,导出csv然后读入R,然后准备顺手画个火山图,PCA图,热图,做个GO/KEGG富集分析.下 ...

  • 美团队:新冠病毒精确完整基因注释图谱完成

    美国麻省理工学院的科学家在11日出版的<自然·通讯>杂志撰文称,在进行了广泛的比较基因组学研究之后,他们绘制出了新冠病毒迄今最精确完整的基因注释图谱,确认了几种蛋白质编码基因,也发现有些基 ...

  • 美国研究团队:新冠病毒精确完整基因注释图谱完成|进化|基因|美国

    美国麻省理工学院的科学家在11日出版的<自然·通讯>杂志撰文称,在进行了广泛的比较基因组学研究之后,他们绘制出了新冠病毒迄今最精确完整的基因注释图谱,确认了几种蛋白质编码基因,也发现有些基 ...

  • 新冠病毒精确完整基因注释图谱完成

    美国麻省理工学院的科学家在11日出版的<自然·通讯>杂志撰文称,在进行了广泛的比较基因组学研究之后,他们绘制出了新冠病毒迄今最精确完整的基因注释图谱,确认了几种蛋白质编码基因,也发现有些基 ...