破解非模式物种GO/KEGG注释难题

我们知道,R语言进行GO/KEGG富集严重依赖 OrgDb 数据库。模式生物的分析还好,有对应的 OrgDb 包。但非模式生物就没这么幸运了。还好我们有 AnnotationHub。

1. 什么是 OrgDb?

OrgDb(Organism Database)是 Bioconductor 提供的物种注释数据库,包含基因、转录本、蛋白质等生物信息,例如:

  • 基因名(gene symbol)
  • 基因 ID(Entrez ID, Ensembl ID)
  • GO 注释(Gene Ontology)
  • KEGG 通路信息
  • 染色体位置

常见的 OrgDb 数据库:

  • org.Hs.eg.db

    (人类)

  • org.Mm.eg.db

    (小鼠)

  • org.Dm.eg.db

    (果蝇)


2. 为什么要用 AnnotationHub 下载 OrgDb?

通常我们可以直接安装 OrgDb 包,例如:

go 复制代码
BiocManager::install("org.Hs.eg.db")

AnnotationHub 更灵活 ,因为:

自动获取最新版本 (无需手动更新)

支持更多物种 (尤其是不常用的物种)

统一接口管理多个数据库


3. 安装 AnnotationHub

如果你还没有安装,先运行:

go 复制代码
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("AnnotationHub")

加载包:

go 复制代码
library(AnnotationHub)

4. 下载 OrgDb 数据库

方法 1:直接查询物种名称

go 复制代码
# 创建 AnnotationHub 连接
ah <- AnnotationHub()

# 查询人类(Homo sapiens)的 OrgDb
human_orgdb <- query(ah, c("OrgDb", "Homo sapiens"))
human_orgdb

输出示例:

go 复制代码
AnnotationHub with 1 record
# snapshotDate(): 2024-01-01
# names(): AH12345
# package(): org.Hs.eg.db
# title: Homo sapiens (Human) OrgDb
# dataprovider: Bioconductor
# species: Homo sapiens

下载数据:

go 复制代码
# 使用 ID 下载(替换成你的实际 ID)
hs_db <- ah[["AH12345"]]

方法 2:按数据库类型筛选

go 复制代码
# 先列出所有 OrgDb
orgdbs <- query(ah, "OrgDb")

# 查看支持的物种
orgdbs$species

下载小鼠(Mus musculus)的 OrgDb:

go 复制代码
mm_db <- orgdbs[orgdbs$species == "Mus musculus"]
mm_db <- ah[[mm_db$ah_id[1]]]  # 下载第一个匹配项

5. 使用 OrgDb 数据

(1)获取基因信息

go 复制代码
# 获取所有基因的 Entrez ID 和 Gene Symbol
columns(mm_db)  # 查看可用的字段
keytypes(mm_db) # 查看可用的 ID 类型

# 提取前 10 个基因的 Entrez ID 和 Symbol
genes <- select(mm_db, 
                keys = head(keys(mm_db, keytype = "ENTREZID")),
                columns = c("ENTREZID", "SYMBOL"),
                keytype = "ENTREZID")
head(genes)

(2)查询 GO 注释

go 复制代码
# 获取某个基因的 GO 注释
go_annot <- select(mm_db,
                   keys = "103980",  # 示例 Entrez ID
                   columns = c("GO", "ONTOLOGY"),
                   keytype = "ENTREZID")
go_annot

6. 总结

AnnotationHub 提供 OrgDb 数据库的统一接口

✅**query(ah, c("OrgDb", "物种名"))**快速查找

✅**ah[["ID"]]**下载数据

✅**select()**提取基因、GO、通路等信息

适合场景:

  • 需要最新版注释数据时

  • 研究非模式生物(如斑马鱼、水稻)

  • 批量管理多个物种数据库

试试用 AnnotationHub 获取你的研究物种数据吧! 🧬

最后提醒一下,AnnotationHub 由于需要从网络下载数据,经常发生中断的情况,比如报错:

go 复制代码
Loading required package: BiocFileCache
Loading required package: dbplyr
downloading 1 resources
retrieving 1 resource
Error loading resource.
 attempting to re-download
downloading 1 resources
retrieving 1 resource
Error: failed to load resource
  name: AH117408
  title: org.Zea_mays.eg.sqlite
  reason: 1 resources failed to download
In addition: Warning messages:
1: download failed
  web resource path: 'https://annotationhub.bioconductor.org/fetch/124154'
  local file path: '/data/jobs/000/323/323996/home/.cache/R/AnnotationHub/196a96482_124154'
  reason: Transferred a partial file [mghp.osn.xsede.org]: end of response with 182687483 bytes missing 
2: bfcadd() failed; resource removed
  rid: BFC3
  fpath: 'https://annotationhub.bioconductor.org/fetch/124154'
  reason: download failed 
3: download failed
  hub path: 'https://annotationhub.bioconductor.org/fetch/124154'
  cache resource: 'AH117408 : 124154'
  reason: bfcadd() failed; see warnings() 
4: download failed
  web resource path: 'https://annotationhub.bioconductor.org/fetch/124154'
  local file path: '/data/jobs/000/323/323996/home/.cache/R/AnnotationHub/192777bc9d_124154'
  reason: Transferred a partial file [mghp.osn.xsede.org]: end of response with 162371316 bytes missing 
5: bfcadd() failed; resource removed
  rid: BFC4
  fpath: 'https://annotationhub.bioconductor.org/fetch/124154'
  reason: download failed 
6: download failed
  hub path: 'https://annotationhub.bioconductor.org/fetch/124154'
  cache resource: 'AH117408 : 124154'
  reason: bfcadd() failed; see warnings() 
Execution halted

遇到这种情况,最好提前缓存好需要的 OrgDb 资源,或者换一个能正常访问 https://annotationhub.bioconductor.org 的网络重试。

当然,最简单的,可以使用 Galaxy 生信云平台的在线工具。比如我们要进行玉米(Zea mays)的 GO 富集分析。

  • 最后点击运行就可以了

运行结束后如果对图片的大小等不满意,可以修改参数多次运行,直至得到满意结果。


推荐阅读

Galaxy:生信数据分析的效率革命

转录组分析流程和工具大全(最强总结)

自己整理的ChIP seq分析步骤,大家谁有需要可以参考参考(持续更新)

WES变异检测流程上线:GATK最佳实践 & DeepVariant

一文详解细菌耐药性生信分析:从下机数据到耐药基因鉴定

带领2000人,学做生信数据分析

社区简介

中国银河生信云平台(UseGalaxy.cn)以"让生信分析更简单"为使命。平台致力于为科研工作者、医疗机构和生物产业技术人员提供全栈式生物信息学分析解决方案。

如何参与社区建设

  • • 多在社群活跃,积极参与讨论。

  • • 为平台制作图文或视频教程。

  • • 为平台制作工具或流程。

  • • 赞助平台。

联系方式

|----------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| | |

相关推荐
花花无缺3 分钟前
MySQL--B+树
后端·mysql
AlexZhao1897 分钟前
.NET中联合类型的实现(OneOf框架核心机理讲解)
后端·.net
cxyxiaokui00130 分钟前
论如何优雅地让AI“闭嘴”:深入SpringAI的流式停止与记忆难题
java·后端
bobz96534 分钟前
关于 “涌现” 的最初的定义
后端
khystal35 分钟前
HUMS 2023齿轮箱数据分析
数据库·数据分析·信号处理
우리帅杰37 分钟前
【golang】ORM框架操作数据库
golang
Warren9839 分钟前
Spring Boot 整合网易163邮箱发送邮件实现找回密码功能
数据库·vue.js·spring boot·redis·后端·python·spring
秦禹辰1 小时前
本地Docker部署开源Web相册图库Piwigo与在线远程访问实战方案
开发语言·后端·golang
一乐小哥1 小时前
五分钟就能搭好的socks5为啥我装了一个小时😭 进来看小丑
linux·后端