非模式动物go和kegg富集分析

GO 和 KEGG 分析思路,包括模式生物、非模式生物的分析。总体来说,非模式生物还是很难确保能做 GO 和 KEGG 分析,一般必须同时有 OrgDb 数据库以及在 KEGG 官网上存在“三字母缩写”(但是好像哪怕存在“三字母缩写”,也可能其pathway相关信息是空的)。

模式生物和非模式生物的划分

在GO/KEGG富集分析的语境下,“模式生物”和“非模式生物”的划分,核心并不在于生物学上是否“经典”,而在于该物种是否拥有由权威数据库(如NCBI、KEGG、GO Consortium)直接维护的、标准化的、完整的高质量功能注释数据库。

简单来说,这是一个“生物信息学资源”概念,而非纯粹的“生物学分类”概念。

为了让你更清晰,我们可以从GO和KEGG分析的具体操作层面来定义:

具体的划分标准

评判维度 模式生物(生信角度) 非模式生物(生信角度)
GO分析(OrgDb) Bioconductor官方仓库中有预构建好的org.xxx.eg.db包,可直接安装使用。 没有预构建的OrgDb包,需要通过AnnotationHub下载、或自己用AnnotationForge构建。
KEGG分析(通路) KEGG数据库为其分配了专属的三字母物种缩写(如hsammu),且该物种的基因与通路对应关系被详细人工/自动维护。 没有专属缩写,或虽然有缩写但注释极不完整。

弄清楚这个定义,你就能理解为什么之前回复中提到了不同的操作路径:

  • 如果你是“模式生物”:直接一行代码 library(org.Hs.eg.db) 即可,非常省事。
  • 如果你是“非模式生物”
    • GO分析:必须走AnnotationHub远程下载,或者自建数据库的路线。
    • KEGG分析:没有官方的“三字母缩写”就没法做(除非自己从头创建数据库)。

有“org包”和“三字母缩写”的就是生信意义上的模式生物;缺任何一个,实际操作时就要按非模式生物的“绕路”方法来处理。

模式生物分析

具体教程见参考文献1的网址,这里已经说得很详细了,我就不赘述了。

这里给出2个官方网址,列出了可以分析的物种

  • Bioconductor 中所有可用的GO数据库R包(OrgDb 数据库):http://bioconductor.org/packages/release/BiocViews.html#___OrgDb

    这个数据库的作用是 2 个:

    1. 基因编号对应和转换:这是OrgDb最基础的功能。它可以将基因的中心标识符(通常是Entrez Gene ID,纯数字,不同物种编号不同)与多种其他常用的标识符关联起来。例如:

      • 基因符号 (Gene Symbol),如 TP53

      • Ensembl ID

      • RefSeq ID

      • UCSC ID

    2. GO分析注释信息

  • 所有kegg可用的物种简称:https://www.genome.jp/kegg/catalog/org_list.html

    从这个网页中获取物种缩写(如'hsa'),默认通过这个参数去在线获取 KEGG 的注释信息

注意:kegg 分析虽然看上去不用 OrgDb 数据库 ,但是由于 kegg 分析分析也使用 Entrez Gene ID,因此也还是需要 OrgDb 数据库的转换基因编号的功能。因此正常来说,没有 OrgDb 数据库就无法做富集分析。

创建kegg本地数据库

由于KEGG默认是在线联网分析的,因此有时候可能因为网络问题或网站问题而无法分析。

因此将 KEGG 数据库下载下来分析是更稳定的做法。

单个物种

参考之前博客:创建kegg本地数据库

全部物种

参考文献3的网址。

下载全部物种的kegg数据库,由指定的物种改为 “all” 即可。

1
2
3
library(createKEGGdb)

create_kegg_db("all")

最后补充一点:有一些物种信息,虽然KEGG的物种列表(http://rest.kegg.jp/list/organism)里有,但是对应的pathway相关信息其实是没有的,这种情况程序会自动跳过。另外,网络或者服务器问题,以至于数据没下载下来,也会出现同样情况。

报错,单个物种可以,所有物种不行。

1
2
3
4
5
6
7
8
9
10
> create_kegg_db("all")
Reading KEGG annotation online:

Reading KEGG annotation online:

fail to download KEGG data...
Error in nrow(KEGGPATHID2EXTID) : object 'KEGGPATHID2EXTID' not found
In addition: Warning message:
In download.file(url, method = method, ...) :
cannot open URL 'https://rest.kegg.jp/list/organism': HTTP status was '400 Bad Request'

可能的原因:

  1. 请求过于庞大 "all" 会尝试从 https://rest.kegg.jp/list/organism 获取 所有物种的列表(约数千条),然后为每个物种构建一个完整的 KEGG 数据库。这个请求数据量较大,KEGG 服务器对批量下载有严格限制,容易触发 400 Bad Request(通常代表请求被拒绝或格式不正确)。

  2. createKEGGdb 的实现缺陷 该包已多年未更新,其内部对 "all" 的处理可能没有遵循 KEGG 最新的 API 规范(例如分页、限速等),导致服务器直接拒绝。

还是得逐个物种按需下载。

非模式生物分析

思路1:下载OrgDb

对于非模式物种,可以使用AnnotationHub包来在线检索并下载其注释信息(OrgDb)

代码示例如下

1
2
3
4
# 加载数据库
library(AnnotationHub)
hub <- AnnotationHub() #较慢
query(hub, "capra_aegagrus_hircus")

使用query在我们制作的OrgDB --> hub里面找到物种相关的数据库(采用物种拉丁文名称)。

在输出结果中查找数据库的后缀为必须为 eg.sqlite的结果,举例如下(格式一般为 org.物种名.eg.sqlite

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>     query(hub, "capra_aegagrus_hircus")
AnnotationHub with 1 record
# snapshotDate(): 2021-10-20
# names(): AH96553
# $dataprovider: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/
# $species: Capra aegagrus_hircus
# $rdataclass: OrgDb
# $rdatadateadded: 2021-10-13
# $title: org.Capra_aegagrus_hircus.eg.sqlite
# $description: NCBI gene ID based annotations about Capra aegagrus_hircus
# $taxonomyid: 9925
# $genome: NCBI genomes
# $sourcetype: NCBI/UniProt
# $sourceurl: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/, ftp://ftp.uniprot.org/p...
# $sourcesize: NA
# $tags: c("NCBI", "Gene", "Annotation")
# retrieve record with 'object[["AH96553"]]'

更好的办法是,先限制数据库类型为 OrgDb,这样找出的结果就全部是 OrgDb 数据库

1
2
org <- hub[hub$rdataclass=="OrgDb",]
query(org, "capra_aegagrus_hircus")

然后复制这个数据库前面的编号,用下面代码获取这个数据库

1
db <- hub[["AH107469"]]

之后使用 OrgDB 的时候直接调用这个数据库即可,和正常一样,也就是所有 OrgDB 参数设为:

1
OrgDb=db

但是 KEGG 没有办法,KEGG 官网如果没有物种编号就是没法弄。

思路2:自建GO和KEGG数据库

当目标物种在公共数据库中完全缺乏注释时,可以采用此方法。

  1. 获取蛋白质序列:从NCBI等数据库下载目标物种的蛋白质组序列。
  2. 功能注释:使用eggNOG-mapper在线工具对蛋白质序列进行功能注释。它会通过序列比对,为你的基因分配GO术语和KEGG直系同源物(KO)编号。
  3. 构建本地数据库:利用R包AnnotationForge,根据eggNOG-mapper的注释结果,构建属于该物种自己的OrgDb注释包。之后就可以用这个自建的OrgDb进行富集分析了。

具体教程见参考文献2的网址,挺复杂的,这是纯生信的内容了,我还没有试过。

思路3:在线工具(网站)

一些网站可以做 go/kegg 分析,但是我看物种都很有限,没啥用。

参考文献

  1. https://zhuanlan.zhihu.com/p/377356510
  2. https://zhuanlan.zhihu.com/p/389005258
  3. https://mp.weixin.qq.com/s/PwrdQAkG3pTlwMB6Mj8wXQ
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2019-2026 Vincere Zhou
  • 访问人数: | 浏览次数:

请我喝杯茶吧~

支付宝
微信