我们的基因体时代-AI, Data和生物资讯 Day22- 基因注释资料在Bioconductor中的物件:AnnotatioDBI

上一篇我们的基因体时代-AI, Data和生物资讯 Day21- 基因注释资料在Bioconductor中物件:IRanges和GenomicRanges往下介绍在R里面Bioconductor系统中,处理基因注释的资料结构,从最简单的IRanges和GenomicRanges开始。

为了实际用真实世界的资料来分享GenomicRanges物件的进阶用法前,得介绍怎麽去取得真实世界资料库的基因注释资料,比如我想要取得关於血型基因ABO所谓在的染色体或是我想知道BRCA1和BRCA2分别在哪里以及长度,这边就要介绍Bioconductor中重要的一个架构包:AnnotationHub,这个包可以方便R的开发者将资料打包成library,让使用者安装library後,就能使用这个资料,而AnnotationHub便是用来建构这类资料库的方式,所以只要会了Annotationhub的语法,大致上便能使用蛮多基因科学家开发的资料library。

唾手取得人类基因体的资讯:AnnotationDBI

这边起手式,先来介绍三个library,可以轻松用R来获取.....上亿美元的结晶:人类基因组资讯,光想到可以这麽轻松得取用这些资料,便觉得现在人真的很幸福,分别是TxDb.Hsapiens.UCSC.hg19.knownGene, TxDb.Hsapiens.UCSC.hg38.knownGene和org.Hs.eg.db,前面两个包顾名思义就是旧版hg19和新版的hg38,org.Hs.eg.db则是人类基因组的基本资料,先来安装一些有人类基因体资料的包。

## 使用Bioconductor来安装这些library
BiocManager::install("TxDb.Hsapiens.UCSC.hg38.knownGene")
BiocManager::install("TxDb.Hsapiens.UCSC.hg19.knownGene")
BiocManager::install("org.Hs.eg.db")
## 安装後loading
library(TxDb.Hsapiens.UCSC.hg19.knownGene)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
library(org.Hs.eg.db)

TxDb.hg19 <- TxDb.Hsapiens.UCSC.hg19.knownGene
TxDb.hg38 <- TxDb.Hsapiens.UCSC.hg38.knownGene

直接呼叫这些资料库,可以看到资料库的一些细节,这边开始就必须要有一些domain knowledge,比如基本分子生物学的知识,否则会看不太懂它的意思。

> org.Hs.eg.db
OrgDb object:
| DBSCHEMAVERSION: 2.1
| Db type: OrgDb
| Supporting package: AnnotationDbi
| DBSCHEMA: HUMAN_DB
| ORGANISM: Homo sapiens
| SPECIES: Human
| EGSOURCEDATE: 2020-Sep23
| EGSOURCENAME: Entrez Gene
| EGSOURCEURL: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA
| CENTRALID: EG
| TAXID: 9606
| GOSOURCENAME: Gene Ontology
| GOSOURCEURL: http://current.geneontology.org/ontology/go-basic.obo
| GOSOURCEDATE: 2020-09-10
| GOEGSOURCEDATE: 2020-Sep23
| GOEGSOURCENAME: Entrez Gene
| GOEGSOURCEURL: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA
| KEGGSOURCENAME: KEGG GENOME
| KEGGSOURCEURL: ftp://ftp.genome.jp/pub/kegg/genomes
| KEGGSOURCEDATE: 2011-Mar15
| GPSOURCENAME: UCSC Genome Bioinformatics (Homo sapiens)
| GPSOURCEURL: 
| GPSOURCEDATE: 2020-Aug27
| ENSOURCEDATE: 2020-Aug18
| ENSOURCENAME: Ensembl
| ENSOURCEURL: ftp://ftp.ensembl.org/pub/current_fasta
| UPSOURCENAME: Uniprot
| UPSOURCEURL: http://www.UniProt.org/
| UPSOURCEDATE: Mon Oct  5 00:18:02 2020

从呼叫org.Hs.eg.db後显示的资讯,其实蛮清楚的说明这个资料包的细节,这是一个专属人类(Homo sapiens)的注释资料包,可以看出里面有来自NCBI Entrez Gene, KEGG genome, UCSC Genome Bioinformatics, Ensembl, Uniprot的资讯,甚麽时候的版本等等。

> TxDb.hg19
TxDb object:
# Db type: TxDb
# Supporting package: GenomicFeatures
# Data source: UCSC
# Genome: hg19
# Organism: Homo sapiens
# Taxonomy ID: 9606
# UCSC Table: knownGene
# Resource URL: http://genome.ucsc.edu/
# Type of Gene ID: Entrez Gene ID
# Full dataset: yes
# miRBase build ID: GRCh37
# transcript_nrow: 82960
# exon_nrow: 289969
# cds_nrow: 237533
# Db created by: GenomicFeatures package from Bioconductor
# Creation time: 2015-10-07 18:11:28 +0000 (Wed, 07 Oct 2015)
# GenomicFeatures version at creation time: 1.21.30
# RSQLite version at creation time: 1.0.0
# DBSCHEMAVERSION: 1.1
> TxDb.hg38
TxDb object:
# Db type: TxDb
# Supporting package: GenomicFeatures
# Data source: UCSC
# Genome: hg38
# Organism: Homo sapiens
# Taxonomy ID: 9606
# UCSC Table: knownGene
# UCSC Track: GENCODE v32
# Resource URL: http://genome.ucsc.edu/
# Type of Gene ID: Entrez Gene ID
# Full dataset: yes
# miRBase build ID: NA
# transcript_nrow: 247541
# exon_nrow: 687521
# cds_nrow: 302763
# Db created by: GenomicFeatures package from Bioconductor
# Creation time: 2019-10-21 20:50:00 +0000 (Mon, 21 Oct 2019)
# GenomicFeatures version at creation time: 1.37.4
# RSQLite version at creation time: 2.1.2
# DBSCHEMAVERSION: 1.2

这两个分别是两个版本的TxDb档案,一个是hg19版本,在2015年创建,新的版本hg38,则是在2019年创建,而hg19版本的转录资讯只有829602笔,而新的hg38版本则有247541笔。这些资料是以传统的SQL模式储存的,所以有几个函数可以用来撷取这些资料库,这些函数对於用过SQL系统资料库的人应该蛮熟悉的,主要有几个:

  • columns
  • keytypes
  • select

我们以TxDb.hg19为范例,看其columns和keytypes下会显示出什麽,keytypes显示的是这个资料包可以用什麽资讯来做query,而columns则是哪些栏位可以从query後得到的栏位。

> keytypes(TxDb.hg19)
[1] "CDSID"    "CDSNAME"  "EXONID"   "EXONNAME" "GENEID"   "TXID"     "TXNAME"  
> columns(TxDb.hg19)
 [1] "CDSCHROM"   "CDSEND"     "CDSID"      "CDSNAME"    "CDSSTART"   "CDSSTRAND" 
 [7] "EXONCHROM"  "EXONEND"    "EXONID"     "EXONNAME"   "EXONRANK"   "EXONSTART" 
[13] "EXONSTRAND" "GENEID"     "TXCHROM"    "TXEND"      "TXID"       "TXNAME"    
[19] "TXSTART"    "TXSTRAND"   "TXTYPE"   

藉由keytypes和columns就能知道个别资料包可以用什麽资讯来query,以及可以从中得到什麽资讯。下面示范由TxDb.hg19资料中,找寻基因ABO中,在hg19版本中,所具有的CDS资讯,我们用基因ABO在EMBL的编码。

AnnotationDbi::select(TxDb.hg19,
                      keys = c("28"),
                      keytype = c("GENEID"),
                      columns = c("CDSCHROM", "CDSSTART", "CDSEND", "CDSID"))

下面是query回来的资讯,可以知道这个ABO基因位在染色体九号上面,然後里面有几个外显子区域都清楚列出来。

  GENEID  CDSID CDSCHROM  CDSSTART    CDSEND
1     28 111190     chr9 136150578 136150605
2     28 111189     chr9 136137502 136137571
3     28 111188     chr9 136136721 136136777
4     28 111187     chr9 136135223 136135270
5     28 111186     chr9 136133487 136133522
6     28 111185     chr9 136132911 136132929
7     28 111184     chr9 136132796 136132908
8     28 111183     chr9 136131053 136131743
9     28 111182     chr9 136131053 136131694

下一篇我们就可以利用从这些资料包的资讯来转换成GenomicRanges来做进一步的分析了!

参考阅读:

Software for Computing and Annotating Genomic Ranges, 2013, PLoS Computational Biology

我们的基因体时代-Bioconductor:基因体学研究的好帮手(一)
我们的基因体时代-理解Bioconductor系列(一):Bioconductor中的Annotation资源

Morgan M, Shepherd L (2021). AnnotationHub: Client to access AnnotationHub resources. R package version 3.0.1.

Team BC, Maintainer BP (2019). TxDb.Hsapiens.UCSC.hg38.knownGene: Annotation package for TxDb object(s). R package version 3.4.6.

Carlson M, Maintainer BP (2015). TxDb.Hsapiens.UCSC.hg19.knownGene: Annotation package for TxDb object(s). R package version 3.2.2.

Carlson M (2019). org.Hs.eg.db: Genome wide annotation for Human. R package version 3.8.2.


这个月的规划贴在这篇文章中我们的基因体时代-AI, Data和生物资讯 Overview,也会持续调整!我们的基因体时代是我经营的部落格,如有对於生物资讯、检验医学、资料视觉化、R语言有兴趣的话,可以来交流交流!


<<:  30天学会 Python: Day 6- 你的加法不是你的加法

>>:  Day22 javascript 弹窗

开机自启动 Seafile

对于运行 systemd 的系统 创建 systemd 服务管理文件,将以下示例中 ${seafil...

TypeScript | Type 研究心得纪录 2

我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 ...

使用工具测试

这次我是要使用node.js来学习爬虫。为什麽会用node.js呢?一开始我看许多人是用python...

【Day 03】- 打针!打针!从 R0 注入的那件事!

Agenda 资安宣言 测试环境与工具 学习目标 技术原理与程序码 References 下期预告 ...

[Day08] swift & kotlin 入门篇!(6) 流程控制-循序,选择,重复

流程控制 基础语法过後就是流程控制了 流程控制结束就可以进入快乐的开发阶段搂~ 流程控制是程序设计中...