本文从数据库构建角度,详解R包中的GO.db的构建方式;为开发相应数据库提供预备知识

目录

1.概述
2.GO.db的数据对象组成
3.GO.db中存储的数据对象的构建规则
4.GO.db的Sqlite数据库的表的结构

1.概述:

R语言里的GO.db数据库的数据存储过程由两步组成:首先将基本的id号和definition等数据封装在GO.sqlite数据库里,然后使用R语言中的AnnotaionDbi接口与数据库交互,通过AnnotaionDbi接口将数据库中的部分数据取出,封装成AnnotationDbi的对象(objects)。
此时,即可通过columns(x)、keytypes(x)、keys(x, keytype, …)、select(x, keys, columns, keytype, …)四个函数对封装好的AnnotationDbi对象,进行访问和数据获取。

2.GO.db的数据对象组成:

因为GO的定义分为三种:细胞组件(cc)、分子功能(mf)、生物学过程(bp)
所以GO.db在R中封装的对象(objects)按照这三种不同,进行了分类:

  • GOBPANCESTOR、GOBPCHILDREN、GOBPOFFSPRING、GOBPPARENTS
  • GOCCANCESTOR、GOCCCHILDREN、GOCCOFFSPRING、GOCCPARENTS
  • GOMFANCESTOR 、GOMFCHILDREN、GOMFOFFSPRING、GOMFPARENTS
  • 其它data sets:GOOBSOLETE 、GOSYNONYM、GOTERM、GOMAPCOUNTS

以BP过程为例:每个对象封装的数据含义如下(ancestor\children\offspring\parents返回的都是GO的ID号,它们是表征了一种association):
GOBPANCESTOR
Annotation of GO Identifiers to their Biological Process Ancestors
GOBPCHILDREN
Annotation of GO Identifiers to their Biological Process Children
GOBPOFFSPRING
Annotation of GO Identifiers to their Biological Process Offspring
GOBPPARENTS
Annotation of GO Identifiers to their Biological Process Parents
另外的几个datasets含义如下:
GOMAPCOUNTS
Number of mapped keys for the maps in package GO.db
GOOBSOLETE
Annotation of GO identifiers by terms defined by Gene Ontology Consortium and their status are obsolete
GOSYNONYM
Map from GO synonyms to GO terms
GOTERM
This data set gives mappings between GO identifiers and their respective terms(R语言里面有GOTerms这个类,所以这里的GOTERM就直接使用GO的id号mapped to it)
需要注意的是,R语言里面存储annotation maps的数据结构是Bimap,所以GO.db里除了mapcounts外,其它所有的对象都属于Bimap(在AnnotationDbi中定义了Bimap接口)

3.GO.db中存储的数据对象的构建规则:

R语言提供了与数据库交互的接口,来帮助我们存储相应的数据。在生物里,R语言中的数据存储的类,根据数据类型不同,可分为AnntoationDb类、OrgDb类、ChipDb类、TxDb类。所以,AnnotationDbi就是对Annotation类的数据库提供的一个接口(Interface),用来帮助R中的Annotation对象和sqlite数据库交互。
需要注意的是,我们如果要自己在R语言中构建数据存储对象的话,一般情况下都要提供select()方法,供数据查询。select()构建方法详见:Creating select Interfaces for custom Annotation resources.pdf
R中GO.db\KEGG.db\REACTOME.db都属于Annotation类的数据库,所以构建方法基本一致:通过AnnotationDbi提供的接口,构建相应的objects用于存储数据,并为这些objects提供column()、select()、keys()、keytypes()函数,来访问objects中的数据。

4.GO.db的Sqlite数据库的表的结构

查看了GO.db源码中的sqlite表,一共含有13张表。sqlite中存储的表的内容很简洁,主要是一些id号的对应关系。

以go_bp_offspring表为例,表里只有两列(columns),目前不是很清楚_id(它不是GO_id,但在GO_term里面是主键)代表什么意思,但可以肯定它是唯一存在的,_offspring_id的含义是_id所对应的子代

用Navicat查看整个sqlite数据库的E-R模型,是这样:

go_term表最重要,通过这张表,关系也看的很明确,_id是主键,表征了唯一性,其它的数据(offspring/ancestor/parent等)都是从id出发(其它数据表以_id指向go_term表的_id,即go_term的_id是它们的外键,从而建立联系)

(2)R包,GO.db调研(数据库构建角度解析)相关推荐

  1. Shiny平台构建与R包开发

    Introduction 在数据库网页搭建教程中已经提到,数据分析决策平台的搭建十分重要.数据库网页是数据分析决策平台的重要表现形式之一,能够很好地将大量数据或其分析结果公开展示,并能提供数据下载.统 ...

  2. Shiny平台构建与R包开发(七)——Shiny APP部署

    本节展示了如何分享和部署Shiny APP.您可以将开发好的Shiny APP部署在自己的服务器上,或是将其部署在公共的平台(即shinyapps.io)上.这里仅分享后者.对于如何将Shiny AP ...

  3. Shiny平台构建与R包开发(五)——ui美化

    本节简单地向读者介绍Shiny APP中ui的美化方法. shinythemes 利用shinythemes包,您可以选择不同的bootstrap风格,并将其应用到Shiny APP中. 安装完shi ...

  4. Shiny平台构建与R包开发(四)——按钮与响应事件

    作为Shiny平台构建与R包开发教程的第四小节,本节向读者进一步强调Shiny server的工作机理,并由此设计按钮点击事件. Shiny server工作机理与问题 前面的几个小节已经向读者初步解 ...

  5. Shiny平台构建与R包开发(三)——数据输出

    作为Shiny平台构建与R包开发教程的第三小节,本节向读者展示如何利用Shiny server输出自己想要的数据,包括Rplot.Table.Text等信息. 数据输出机制 仍以上一节的案例为基础: ...

  6. Shiny平台构建与R包开发(二)——数据输入

    作为Shiny平台构建与R包开发教程的第二小节,本节向读者介绍如何利用Shiny server处理用户输入的各种信息.这些信息既包括用户向Shiny上传的数据集,也包括用户对Shiny页面的各种控件( ...

  7. Shiny平台构建与R包开发(一)——ui布局

    本节为Shiny平台构建与R包开发教程的第一小节. Getting Started 初识Shiny时,了解其工作机理非常重要.下面的案例展示了一个最简单的Shiny APP的工作机理: #DO NOT ...

  8. R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤、条件推理决策树是传统决策树的一个重要变体、条件推理树的分裂是基于显著性测试而不是熵/纯度/同质性度量来选择分裂

    R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤(Conditional inference trees).条件推理决策树是传统决策树的一个重要变体.条件推理树的分裂是基于显著性 ...

  9. R语言使用caretEnsemble包的caretList函数一次性构建多个机器学习模型、使用lattice包的bwplot函数使用箱图对比多个模型在多个指标上的性能差异

    R语言使用caretEnsemble包的caretList函数一次性构建多个机器学习模型.并使用caret包的resamples函数比较在同一数据集上多个机器学习模型的比较结果.使用lattice包的 ...

  10. R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

    R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees).使用plot函数可视化训练好的条件推理决策树.条件推理决策树的叶子节点的阴影区域表 ...

最新文章

  1. bat脚本登陆ftp服务器
  2. 通过结束进程来关闭程序
  3. 征战蓝桥 —— 2013年第四届 —— C/C++A组第4题——颠倒的价牌
  4. Mysql慢查询操作梳理
  5. 【连载】如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(1)
  6. ASP.NET AJAX深入浅出系列课程(10):基于Microsoft AJAX Library扩展客户端组件.zip(10.77 MB)...
  7. .Net/C# 实现真正的只读的 Hashtable 类型的属性 (ReadOnly Hashtable Property)
  8. maven项目在eclipse中debug
  9. Windows下命令模式安装mysql
  10. C++运算符过载详解
  11. 面试常问--你是否曾经得到过低于自己预期的成绩?如果得到过,你是怎样处理这件事情的?
  12. 跨越opengl和d3d的鸿沟(四):完结篇,平台和未来
  13. actions vuex 请求_vue中在vuex的actions中请求数据实例
  14. vue组件及生命周期
  15. ndarray 与 array 的区别 关系
  16. DSP上玩玩视频雨滴检测与消除
  17. 【MOOC课程】浙大数据结构记录(下)
  18. Socket编程之地址之间转换、字节序转换
  19. 转转推荐场景EE题解决思路
  20. 社区小程序源码-带后台

热门文章

  1. eNSP 华为模拟器更新说明
  2. 进展-Silverlight5、 windows phone 7、pc 三栖引擎,2D核心已完成
  3. Show一下2008新技术体验活动的奖品
  4. RAID6磁盘阵列数据恢复
  5. java 调用存储过程structdescriptor_Spring SimpleJdbcCall如何在存储过程调用中为oracle STRUCT指定模式...
  6. linux openssh升级8.1,ssh服务升级8.1
  7. OpenCV-图像处理(08、模糊图像一)
  8. linux怎么读取kvaser的数据,基于Python下的Kavasers CAN报文收发调试
  9. akb48_原AKB48成员板野友美结婚了!闪嫁23岁职棒球员高桥奎二
  10. opencv计算图像亮度调节_图像数据集增强方式总结和实现【数字图像处理系列四】...