首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO.db:存储Gene Ontology信息的R包

GO.db:存储Gene Ontology信息的R包

作者头像
生信修炼手册
发布2020-05-08 16:47:23
1.6K0
发布2020-05-08 16:47:23
举报
文章被收录于专栏:生信修炼手册生信修炼手册

欢迎关注”生信修炼手册”!

在生信分析领域,R语言由于其简单易用的特点和良好的生态环境,占用重要的一席之地。其中,Bioconductor作为生信分析专用的R语言社区,提供了许多的R包。

Bioconductor上的所有R包可以分成4大类别,示意图如下

software类型的R包用于执行某项具体的分析内容,比如edgeR, DESeq2等,AnnotationData类型的包在R中存储了对应的数据库,比如GO.db等,ExperimentData类型的包存储了实验数据,Workflow类型的包提供了完整分析的pipeline。本文主要介绍AnnotationData类型的包。

为了规范化开发,方便R包的使用,Bioconductor的开发者提供了几种基础的R包,用于定义几种基础信息的存储方式。

对于数据库内容的存储和使用,在AnnotationDbi这个包中统一进行了定义。由于采用了面向对象的编程方式,所有继承了这种对象的R包其使用方式是一样的。

在Bioconductor中,有以下4种类别的注释信息包,都继承了AnnotationDbi

  1. Organism level 比如human对应的Org.Hs.eg.db, 存储了人类的基因信息。
  2. Platform level 比如hgu133plus2.db, 这种类型的包主要存储不同平台的数据,比如不同芯片的探针信息。
  3. Homology-level 比如hom.Dm.inp.db,存储了同源信息
  4. System-biology level 比如GO.db, 存储生物学相关的数据库。

所有这些后缀为.db的R包,其本质都为一个sqlite数据库,一种轻量级的关系型数据库,只不过是通过R来进行访问。

GO.db为例,在下载的源代码中,可以找到对应的后缀为.sqlite的数据库文件,位于extdata目录下。

关系型数据库中的基本单位是表,对于一个.db的R包而言,可以通过以下4个函数访问其中的内容

  1. columns
  2. keytypes
  3. keys
  4. select

对于一个数据表而言,首先我们需要知道表头信息,就可以通过columnskeytypes函数来访问得到,示例如下

> keytypes(GO.db)
[1] "DEFINITION" "GOID"       "ONTOLOGY"   "TERM"      
> columns(GO.db)
[1] "DEFINITION" "GOID"       "ONTOLOGY"   "TERM"

从以上代码的结果可以看出,GO.db提供的数据表共有4列。 假如想要访问其中某一列的值,可以通过keys函数,示例如下

> keys(GO.db, keytype = "GOID")[1:3]
[1] "GO:0000001" "GO:0000002" "GO:0000003"

上述代码返回GOID这一列的内容。

对于数据库而言,查询是基本操作,在SQL语言中,通过select实现,对应的在R中通过select函数来实现,示例如下

> k <- keys(GO.db, keytype = "GOID")[1:3]
> select(GO.db,
  keys = k,
  columns = c("TERM","ONTOLOGY"),
  keytype="GOID")
'select()' returned 1:1 mapping between keys and columns
       GOID                             TERM ONTOLOGY
1 GO:0000001        mitochondrion inheritance       BP
2 GO:0000002 mitochondrial genome maintenance       BP
3 GO:0000003                     reproduction       B

通过返回结果可以看到,GO.db提供了一张4列的数据表,GOID表示GO编号,DEFINITION表示GO功能的详细描述信息,TERM表示功能的简单介绍,ONTOLOGY表示GO的3大类别。

除了基本的数据表之外,在这种类型的包中还会提供很多其他信息,可以通过ls函数查看,示例如下

> ls("package:GO.db")
[1] "GO"            "GO.db"         "GO_dbconn"     "GO_dbfile"     "GO_dbInfo"     "GO_dbschema"  
[7] "GOBPANCESTOR"  "GOBPCHILDREN"  "GOBPOFFSPRING" "GOBPPARENTS"   "GOCCANCESTOR"  "GOCCCHILDREN"
[13] "GOCCOFFSPRING" "GOCCPARENTS"   "GOMAPCOUNTS"   "GOMFANCESTOR"  "GOMFCHILDREN"  "GOMFOFFSPRING"
[19] "GOMFPARENTS"   "GOOBSOLETE"    "GOSYNONYM"     "GOTERM"

其中有一部分对象的类型AnnDbBimap, 示例如下

> GOTERM
TERM map for GO (object of class "GOTermsAnnDbBimap")

这种对象类似基本数据结构中的list, 常用的操作语句示例如下

> mappedkeys(GOTERM)[1:3]
[1] "GO:0000001" "GO:0000002" "GO:0000003"> ls(GOTERM)[1:3]
[1] "all"        "GO:0000001" "GO:0000002"> GOTERM[["GO:0000001"]]
GOID: GO:0000001
Term: mitochondrion inheritance
Ontology: BP
Definition: The distribution of mitochondria, including the mitochondrial genome, into daughter
   cells after mitosis or meiosis, mediated by interactions between mitochondria and the
   cytoskeleton.
Synonym: mitochondrial inheritance> get("GO:0000001", GOTERM)
GOID: GO:0000001
Term: mitochondrion inheritance
Ontology: BP
Definition: The distribution of mitochondria, including the mitochondrial genome, into daughter
   cells after mitosis or meiosis, mediated by interactions between mitochondria and the
   cytoskeleton.
Synonym: mitochondrial inheritance> mget("GO:0000001", GOTERM)
$`GO:0000001`
GOID: GO:0000001
Term: mitochondrion inheritance
Ontology: BP
Definition: The distribution of mitochondria, including the mitochondrial genome, into daughter
   cells after mitosis or meiosis, mediated by interactions between mitochondria and the
   cytoskeleton.
Synonym: mitochondrial inheritance

lsmappedkeys函数都是用于查看这个列表的名称,只不过ls会对所有key排序;getmget选取其中的内容,也可以像list一样,通过[[ ]]操作符直接访问。

由于和list类似,所以经常会将这些对象通过as.list转换之后,在进行操作,示例如下

> go <- as.list(GOTERM)
> go[[1]]
GOID: GO:0000001
Term: mitochondrion inheritance
Ontology: BP
Definition: The distribution of mitochondria, including the mitochondrial genome, into daughter
   cells after mitosis or meiosis, mediated by interactions between mitochondria and the
   cytoskeleton.
Synonym: mitochondrial inheritance

需要注意的是这个步骤是非常耗时的,实际使用时,可以先挑选子集,然后在转换成list。

很多做GO富集分析的R包都会调用GO.db, 掌握其基本操作,有助于理解其他封装好的R包。

·end·

—如果喜欢,快分享给你的朋友们吧—

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档