歡迎關(guān)注”生信修煉手冊(cè)”!
在生信分析領(lǐng)域漱办,R語(yǔ)言由于其簡(jiǎn)單易用的特點(diǎn)和良好的生態(tài)環(huán)境飘哨,占用重要的一席之地定拟。其中,Bioconductor作為生信分析專(zhuān)用的R語(yǔ)言社區(qū)蹋嵌,提供了許多的R包育瓜。
Bioconductor上的所有R包可以分成4大類(lèi)別,示意圖如下
software
類(lèi)型的R包用于執(zhí)行某項(xiàng)具體的分析內(nèi)容欣尼,比如edgeR
, DESeq2
等爆雹,AnnotationData
類(lèi)型的包在R中存儲(chǔ)了對(duì)應(yīng)的數(shù)據(jù)庫(kù)停蕉,比如GO.db
等,ExperimentData
類(lèi)型的包存儲(chǔ)了實(shí)驗(yàn)數(shù)據(jù)钙态,Workflow
類(lèi)型的包提供了完整分析的pipeline慧起。本文主要介紹AnnotationData
類(lèi)型的包。
為了規(guī)范化開(kāi)發(fā)册倒,方便R包的使用蚓挤,Bioconductor的開(kāi)發(fā)者提供了幾種基礎(chǔ)的R包,用于定義幾種基礎(chǔ)信息的存儲(chǔ)方式驻子。
對(duì)于數(shù)據(jù)庫(kù)內(nèi)容的存儲(chǔ)和使用灿意,在AnnotationDbi
這個(gè)包中統(tǒng)一進(jìn)行了定義。由于采用了面向?qū)ο蟮木幊谭绞匠绾牵欣^承了這種對(duì)象的R包其使用方式是一樣的缤剧。
在Bioconductor中,有以下4種類(lèi)別的注釋信息包域慷,都繼承了AnnotationDbi
Organism level
比如human對(duì)應(yīng)的Org.Hs.eg.db
, 存儲(chǔ)了人類(lèi)的基因信息荒辕。Platform level
比如hgu133plus2.db
, 這種類(lèi)型的包主要存儲(chǔ)不同平臺(tái)的數(shù)據(jù),比如不同芯片的探針信息犹褒。Homology-level
比如hom.Dm.inp.db
,存儲(chǔ)了同源信息-
System-biology level
比如GO.db
, 存儲(chǔ)生物學(xué)相關(guān)的數(shù)據(jù)庫(kù)抵窒。
所有這些后綴為.db
的R包,其本質(zhì)都為一個(gè)sqlite
數(shù)據(jù)庫(kù)叠骑,一種輕量級(jí)的關(guān)系型數(shù)據(jù)庫(kù)李皇,只不過(guò)是通過(guò)R來(lái)進(jìn)行訪(fǎng)問(wèn)。
以GO.db
為例宙枷,在下載的源代碼中掉房,可以找到對(duì)應(yīng)的后綴為.sqlite
的數(shù)據(jù)庫(kù)文件,位于extdata
目錄下朦拖。
關(guān)系型數(shù)據(jù)庫(kù)中的基本單位是表圃阳,對(duì)于一個(gè).db
的R包而言厌衔,可以通過(guò)以下4個(gè)函數(shù)訪(fǎng)問(wèn)其中的內(nèi)容
columns
keytypes
keys
-
select
對(duì)于一個(gè)數(shù)據(jù)表而言璧帝,首先我們需要知道表頭信息,就可以通過(guò)columns
和keytypes
函數(shù)來(lái)訪(fǎng)問(wèn)得到富寿,示例如下
> keytypes(GO.db)
[1] "DEFINITION" "GOID" ? ? ? "ONTOLOGY" ? "TERM" ? ? ?
> columns(GO.db)
[1] "DEFINITION" "GOID" ? ? ? "ONTOLOGY" ? "TERM"
從以上代碼的結(jié)果可以看出睬隶,GO.db
提供的數(shù)據(jù)表共有4列。
假如想要訪(fǎng)問(wèn)其中某一列的值页徐,可以通過(guò)keys
函數(shù)苏潜,示例如下
> keys(GO.db, keytype = "GOID")[1:3]
[1] "GO:0000001" "GO:0000002" "GO:0000003"
上述代碼返回GOID
這一列的內(nèi)容。
對(duì)于數(shù)據(jù)庫(kù)而言变勇,查詢(xún)是基本操作恤左,在SQL
語(yǔ)言中贴唇,通過(guò)select
實(shí)現(xiàn),對(duì)應(yīng)的在R中通過(guò)select
函數(shù)來(lái)實(shí)現(xiàn)飞袋,示例如下
> 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
通過(guò)返回結(jié)果可以看到戳气,GO.db
提供了一張4列的數(shù)據(jù)表,GOID
表示GO編號(hào)巧鸭,DEFINITION
表示GO功能的詳細(xì)描述信息瓶您,TERM
表示功能的簡(jiǎn)單介紹,ONTOLOGY
表示GO的3大類(lèi)別纲仍。
除了基本的數(shù)據(jù)表之外呀袱,在這種類(lèi)型的包中還會(huì)提供很多其他信息,可以通過(guò)ls
函數(shù)查看郑叠,示例如下
> 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"
其中有一部分對(duì)象的類(lèi)型AnnDbBimap
, 示例如下
> GOTERM
TERM map for GO (object of class "GOTermsAnnDbBimap")
這種對(duì)象類(lèi)似基本數(shù)據(jù)結(jié)構(gòu)中的list
, 常用的操作語(yǔ)句示例如下
> 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
ls
和mappedkeys
函數(shù)都是用于查看這個(gè)列表的名稱(chēng)夜赵,只不過(guò)ls
會(huì)對(duì)所有key排序;get
和mget
選取其中的內(nèi)容,也可以像list一樣乡革,通過(guò)[[ ]]
操作符直接訪(fǎng)問(wèn)油吭。
由于和list類(lèi)似,所以經(jīng)常會(huì)將這些對(duì)象通過(guò)as.list
轉(zhuǎn)換之后署拟,在進(jìn)行操作婉宰,示例如下
> 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
需要注意的是這個(gè)步驟是非常耗時(shí)的,實(shí)際使用時(shí)推穷,可以先挑選子集心包,然后在轉(zhuǎn)換成list。
很多做GO富集分析的R包都會(huì)調(diào)用GO.db
, 掌握其基本操作馒铃,有助于理解其他封裝好的R包蟹腾。
·end·
—如果喜歡,快分享給你的朋友們吧—
掃描關(guān)注微信號(hào)区宇,更多精彩內(nèi)容等著你娃殖!