Pathview
是一個(gè)用于整合表達(dá)譜數(shù)據(jù)并用于可視化KEGG通路的一個(gè)R
包,其會(huì)先下載KEGG
官網(wǎng)上的通路圖,然后整合輸入數(shù)據(jù)對(duì)通路圖進(jìn)行再次渲染,從而對(duì)KEGG
通路圖進(jìn)行一定程度上的個(gè)性化處理,并且豐富其信息展示。(KEGG在線數(shù)據(jù)庫(kù)使用攻略)
一種方法是通過(guò)Bioconductor安裝,需要Bioconductor版本3.9,R的版本3.6 (推薦)。
if (!requireNamespace('BiocManager', quietly=TRUE)) install.packages('BiocManager')
BiocManager::install('pathview')
另一種方法是去網(wǎng)上下載包的壓縮包,https://bioconductor.org/packages/release/bioc/html/pathview.html。
下載完壓縮包之后,進(jìn)入Rstudio
,選擇Tools
——Install Packages
——Browse
,找到下載壓縮包的位置,安裝即可。
KEGG (Kyoto Encyclopedia of Genes and Genomes)
是系統(tǒng)分析基因功能、基因組信息的數(shù)據(jù)庫(kù)。它有助于研究者把基因及表達(dá)信息作為一個(gè)整體網(wǎng)絡(luò)進(jìn)行研究。KEGG
將基因組信息和基因功能信息有機(jī)地結(jié)合起來(lái),通過(guò)對(duì)細(xì)胞內(nèi)已知生物學(xué)過(guò)程進(jìn)行計(jì)算機(jī)化處理和將現(xiàn)有的基因功能解釋標(biāo)準(zhǔn)化,對(duì)基因的功能進(jìn)行系統(tǒng)化的分析。KEGG
的另一個(gè)用途是將基因組中的一系列基因用一個(gè)細(xì)胞內(nèi)的分子相互作用網(wǎng)絡(luò)連接起來(lái),如一個(gè)通路或是一個(gè)復(fù)合物,通過(guò)它們來(lái)展現(xiàn)更高一級(jí)的生物學(xué)功能。
為什么要用KEGG
的代謝通路?KEGG
提供的整合代謝途徑(pathway)查詢十分出色,包括碳水化合物、核苷、氨基酸等的代謝及有機(jī)物的生物降解,不僅提供了所有可能的代謝途徑,而且對(duì)催化各步反應(yīng)的酶進(jìn)行了全面的注解,包含有氨基酸序列、PDB庫(kù)的鏈接等等。(沒(méi)錢買KEGG怎么辦?REACTOME開(kāi)源通路更強(qiáng)大)
KEGG
是進(jìn)行生物體內(nèi)代謝分析、代謝網(wǎng)絡(luò)研究的強(qiáng)有力工具。與其他數(shù)據(jù)庫(kù)相比,KEGG
的一個(gè)顯著特點(diǎn)就是具有強(qiáng)大的圖形功能,它利用圖形而不是繁縟的文字來(lái)介紹眾多的代謝途徑以及各途徑之間的關(guān)系。
在KEGG
中有兩種代謝圖。
參考代謝通路圖 reference pathway
,是根據(jù)已有的知識(shí)繪制的具有一般參考意義的代謝圖;這種圖上所有小框都是無(wú)色的,不會(huì)有綠色的小框,并且都可以點(diǎn)擊查看更詳細(xì)的信息;
特定物種的代謝圖 species-specific pathway
,會(huì)用綠色來(lái)標(biāo)出這個(gè)物種所有的基因或酶,只有這些綠色的框點(diǎn)擊以后才會(huì)給出更詳細(xì)的信息。
這兩種圖很好區(qū)分,reference pathway
在KEGG中的名字是以map
開(kāi)頭的,比如map00010
,就是糖酵解途徑的參考圖;而特定物種的代謝通路圖開(kāi)頭三個(gè)字符不是map
而是種屬英文單詞的縮寫(xiě)(一個(gè)屬的首字母+2個(gè)種的首字母)比如酵母的糖酵解通路圖,就是sce00010
,大腸桿菌的糖酵解通路圖就應(yīng)該是eco00010
吧。
對(duì)差異基因進(jìn)行pathway
分析 (代謝通路),就是把基因表達(dá)變化映射到具體的代謝網(wǎng)絡(luò)中,可以研究某個(gè)實(shí)驗(yàn)條件下顯著改變的代謝通路,在機(jī)制研究中顯得尤為重要。
研究pathway
的原因是:生物學(xué)問(wèn)題中設(shè)定一個(gè)“蝴蝶效應(yīng)”假設(shè),1個(gè)Pathway
上游基因的改變,會(huì)導(dǎo)致下游相關(guān)基因改變,從而改變通路中大量基因的表達(dá)。
Pathview
主要用于可視化pathway
圖上的數(shù)據(jù)。pathview
可以生成KEGG視圖
和Graphviz視圖
,前者將用戶數(shù)據(jù)呈現(xiàn)在原生KEGG pathway
圖上,更自然,更易于閱讀。后者使用Graphviz
引擎對(duì)pathway
圖進(jìn)行布局,可以更好地控制節(jié)點(diǎn)或邊緣屬性和pathway
拓?fù)洹?/p>
首先我們?cè)?code>R里面調(diào)用該包,使用該包自帶的數(shù)據(jù)集。這是一個(gè)乳腺癌數(shù)據(jù)集,可以查看下演示數(shù)據(jù)是什么格式的。
列名是每個(gè)樣本名,行名是每個(gè)基因的entrez id。自己準(zhǔn)備的數(shù)據(jù)要符合這個(gè)格式,因?yàn)?code>entrez id是行名字,而entrez id
都是數(shù)字,讀取需設(shè)置check.names=F
。其它類型的ID
也支持,需要做一些參數(shù)設(shè)置或轉(zhuǎn)換,具體文后有介紹。
library(pathview)
data(gse16873.d)
head(gse16873.d)
# 讀取自己的文件可以使用類似下面的命令
# gse16873.d <- read.table('filename', sep='\t', row.names=1, check.names=F, header=T)
先看下Pathview
最常見(jiàn)的一種用法:將某個(gè)樣本的表達(dá)量(讀入的數(shù)據(jù)需要是歸一化后的表達(dá)量);其實(shí)也可以任何列數(shù)據(jù),不僅僅是表達(dá)量數(shù)據(jù),也可以是fold change
, p-value
, 組蛋白修飾數(shù)據(jù)等,人為指定的數(shù)值型數(shù)據(jù)也行 (關(guān)鍵是要懂需要展示什么數(shù)據(jù)、說(shuō)明什么問(wèn)題,原理最重要,就像GSEA基因集富集分析也是一樣);最后以color bar
的形式在KEGG
通路圖上的對(duì)應(yīng)節(jié)點(diǎn) (一定注意節(jié)點(diǎn)名字的匹配)展示;
如下例子所示,我們通過(guò)指定gene.data
和pathway.id
來(lái)觀察單個(gè)樣本在典型信號(hào)通路細(xì)胞周期
上的表達(dá)變化。該基因芯片是在人體組織上進(jìn)行的,因此species=“hsa”
。
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873', kegg.native = T)
如何獲取自己關(guān)注的通路的ID呢? 如下動(dòng)圖,可以得到Cell cyle
的ID04110
。
該例子中的圖只有一個(gè)單層,在原始圖層修改節(jié)點(diǎn)顏色,保留原始KEGG
節(jié)點(diǎn)標(biāo)簽 (節(jié)點(diǎn)名)。這樣輸出的文件大小與原始的KEGG PNG
文件一樣小,但是計(jì)算時(shí)間相對(duì)較長(zhǎng)。如果我們想要一個(gè)快速的視圖,并且不介意將輸出文件大小,我們可以通過(guò)same.layer = F
使用兩層圖。通過(guò)這種方式,節(jié)點(diǎn)顏色和標(biāo)簽被添加到原始KEGG
的額外圖層上。原來(lái)的KEGG
基因標(biāo)簽(或EC編號(hào))被替換為官方基因符號(hào)。
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873.2layer', kegg.native = T, same.layer = F)
上面的兩個(gè)例子中,我們查看了KEGG pathway
圖的數(shù)據(jù),在KEGG
圖上我們可以得到所有注釋和meta-data
,因此數(shù)據(jù)更具可讀性和解釋性。然而輸出的是PNG格式的柵格圖像。我們也可以使用Graphviz engine
重新繪制pathway
圖來(lái)查看數(shù)據(jù),這樣我們對(duì)節(jié)點(diǎn)和邊緣屬性能有更多的控制,更重要的是可以保存為PDF格式的矢量圖像。
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873', kegg.native = F, sign.pos='bottomleft')
該圖的主圖和圖例都在一個(gè)圖層或者說(shuō)一個(gè)頁(yè)面中,我們只列出KEGG邊的類型
,忽略圖例中的節(jié)點(diǎn)類型
,以節(jié)省空間。如果我們想要完整的圖例,我們可以使用兩個(gè)層來(lái)創(chuàng)建Graphviz
視圖: 第1頁(yè)是主圖,第2頁(yè)是圖例。
注意,對(duì)于Graphviz
視圖 (PDF文件),“層”的概念與KEGG
視圖 (PNG文件)略有不同。在這兩種情況下,我們都為兩層圖設(shè)置參數(shù)same.layer=F
。
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873.2layer', kegg.native = F, sign.pos='bottomleft', same.layer = F)
在Graphviz
視圖中,我們對(duì)圖形布局有更多的控制,比如可以將節(jié)點(diǎn)組拆分為獨(dú)立的節(jié)點(diǎn),甚至可以將多基因節(jié)點(diǎn)擴(kuò)展為單個(gè)基因。分裂的節(jié)點(diǎn)或擴(kuò)展的基因可能從未分裂的組或未擴(kuò)展的節(jié)點(diǎn)繼承邊。這樣我們就可以得到一個(gè)基因/蛋白-基因/蛋白相互作用網(wǎng)絡(luò)。
可以更好地查看網(wǎng)絡(luò)特性(模塊化等)和基因方面(而不是節(jié)點(diǎn)方面)的數(shù)據(jù)。注意在KEGG
視圖中,一個(gè)基因節(jié)點(diǎn)可能代表多個(gè)功能相似或重復(fù)的基因/蛋白。成員基因的數(shù)量從1到幾十不等。
為了更好的清晰度和可讀性,一般將它們作為路徑圖上的單個(gè)節(jié)點(diǎn)放在一起。因此,默認(rèn)情況下,我們不分割節(jié)點(diǎn)并單獨(dú)標(biāo)記每個(gè)成員基因。但是,我們可以通過(guò)總結(jié)基因數(shù)據(jù)來(lái)可視化節(jié)點(diǎn)數(shù)據(jù),用戶可以使用node.sum
參數(shù)指定摘要方法。
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873.split', kegg.native = F, sign.pos='bottomleft',
split.group = T)
下面的圖更復(fù)雜了,對(duì)簡(jiǎn)單通路適用,復(fù)雜通路就頭禿了??!
p <- pathview(gene.data = gse16873.d[, 1], pathway.id = '04110', species = 'hsa',
out.suffix = 'gse16873.split.expanded', kegg.native = F, sign.pos='bottomleft',
split.group = T, expand.node = T)
Pathview
為數(shù)據(jù)集成提供了強(qiáng)大的支持。它可以用來(lái)整合、分析和可視化各種各樣的生物數(shù)據(jù):基因表達(dá)、遺傳關(guān)聯(lián)、代謝產(chǎn)物、基因組數(shù)據(jù)、文獻(xiàn)和其他可映射到通路的數(shù)據(jù)類型。當(dāng)數(shù)據(jù)映射到KEGG ortholog pathways
時(shí),它可以直接用于宏基因組、微生物組或未知物種的數(shù)據(jù)。
在上面的例子中,我們查看了具有典型的信號(hào)通路的基因數(shù)據(jù)。有時(shí)候我們也想研究代謝通路。除了基因節(jié)點(diǎn)外,這些通路還有復(fù)合節(jié)點(diǎn)。因此,我們可以將基因數(shù)據(jù)和化合物數(shù)據(jù)與代謝途徑進(jìn)行整合或可視化。這里的基因數(shù)據(jù)是一個(gè)廣泛的概念,包括基因、轉(zhuǎn)錄本、蛋白質(zhì)、酶及其表達(dá)、修飾和任何可測(cè)量的屬性。化合物數(shù)據(jù)也是如此,包括代謝物、藥物、它們的測(cè)量值和屬性。這里我們?nèi)匀皇褂萌橄侔┪㈥嚵袛?shù)據(jù)集作為基因數(shù)據(jù)。然后生成模擬的化合物或代謝組數(shù)據(jù),并加載適當(dāng)?shù)幕衔颕D類型(具有足夠數(shù)量的惟一條目)進(jìn)行演示。
sim.cpd.data=sim.mol.data(mol.type='cpd', nmol=3000)
data(cpd.simtypes)
head(sim.cpd.data)
我們查看該數(shù)據(jù)部分內(nèi)容如下:
C00232 C01881 C02424 C07418 C13756 C07378
-1.09759772 0.12891537 2.07851027 0.93299245 -0.00786048 -0.09023300
我們生成了一個(gè)包含基因數(shù)據(jù)和化合物數(shù)據(jù)的KEGG
視圖。pathview
生成的代謝通路圖與原始KEGG
圖相同,只是為了更好地查看顏色,將復(fù)合節(jié)點(diǎn)放大。
p <- pathview(gene.data = gse16873.d[, 1], cpd.data = sim.cpd.data,
pathway.id ='00640', species = 'hsa', out.suffix = 'gse16873.cpd',
keys.align = 'y', kegg.native = T, key.pos = 'topright')
我們還生成了相同pathway
和數(shù)據(jù)的Graphviz
視圖。Graphviz
視圖更好地顯示了層次結(jié)構(gòu)。對(duì)于代謝通路,解析xml文件中的反應(yīng)條目,并將其轉(zhuǎn)換為基因和復(fù)合節(jié)點(diǎn)之間的關(guān)系。對(duì)復(fù)合節(jié)點(diǎn)使用省略號(hào)。標(biāo)簽是從CHEMBL
數(shù)據(jù)庫(kù)中檢索到的標(biāo)準(zhǔn)化合物名稱 (KEGG在pathway數(shù)據(jù)庫(kù)文件中沒(méi)有提供它)?;瘜W(xué)名稱是長(zhǎng)字符串,我們需要對(duì)它們進(jìn)行換行,以使其符合圖上指定的寬度。
p <- pathview(gene.data = gse16873.d[, 1], cpd.data = sim.cpd.data, pathway.id ='00640',
species = 'hsa', out.suffix = 'gse16873.cpd', keys.align = 'y', kegg.native = F,
key.pos = 'bottomright', sign.pos ='topright', cpd.lab.offset =-0.8)
在前面的所有示例中,我們查看了單個(gè)樣本數(shù)據(jù),這些數(shù)據(jù)要么是向量,要么是單列矩陣。Pathview
還可以處理多個(gè)樣本數(shù)據(jù),用于為每個(gè)樣本生成圖形。從1.1.6版開(kāi)始,Pathview
就可以整合并繪制多狀態(tài)或樣本到一個(gè)圖中。
set.seed(10)
sim.cpd.data2 = matrix(sample(sim.cpd.data, 18000, replace = T), ncol = 6)
rownames(sim.cpd.data2) = names(sim.cpd.data)
colnames(sim.cpd.data2) = paste('exp', 1:6, sep = '')
head(sim.cpd.data2, 3)
在下面的例子中,gene.data
有三個(gè)樣本,而cpd.data
有兩個(gè)。我們可以把所有這些樣品放在一張圖里,繪制KEGG
視圖或Graphviz
視圖。在這些圖中,我們看到基因節(jié)點(diǎn)和化合物節(jié)點(diǎn)被分割成多個(gè)對(duì)應(yīng)于不同狀態(tài)或樣本的片段 (注意顏色塊,之前是一個(gè)節(jié)點(diǎn)一個(gè)顏色,現(xiàn)在一個(gè)節(jié)點(diǎn)是有多個(gè)顏色,每個(gè)對(duì)應(yīng)一個(gè)樣本,基因有3個(gè),化合物有2個(gè),注意下面代碼中的1:3
和1:2
)。如果兩種數(shù)據(jù)類型中的樣本實(shí)際配對(duì),需要選擇匹配數(shù)據(jù),即gene.data
和cpd.data
的第一列來(lái)自同一個(gè)實(shí)驗(yàn)/樣本,等等。
# KEGG view
p <- pathview(gene.data = gse16873.d[, 1:3], cpd.data = sim.cpd.data2[, 1:2],
pathway.id = '00640', species = 'hsa', out.suffix = 'gse16873.cpd.3-2s',
keys.align = 'y', kegg.native = T, match.data = F, multi.state = T,
same.layer = T)
查看下繪圖的數(shù)據(jù)
head(p$plot.data.cpd)
基因表達(dá)和化合物都展示前3個(gè)樣品,一一對(duì)應(yīng)。
#KEGG view with data match
p <- pathview(gene.data = gse16873.d[, 1:3], cpd.data = sim.cpd.data2[, 1:2],
pathway.id = '00640', species = 'hsa', out.suffix = 'gse16873.cpd.3-2s.match',
keys.align = 'y', kegg.native = T, match.data = T, multi.state = T, same.layer = T)
同樣,也可以使用graphviz view
。
#graphviz view
p <- pathview(gene.data = gse16873.d[, 1:3], cpd.data = sim.cpd.data2[, 1:2],
pathway.id ='00640', species = 'hsa', out.suffix = 'gse16873.cpd.3-2s',
keys.align = 'y', kegg.native = F, match.data = F, multi.state = T,
same.layer = T, key.pos = 'bottomright', sign.pos = 'topright')
同樣,我們可以選擇分別繪制樣本,即每個(gè)圖形一個(gè)樣本。請(qǐng)注意,在這種情況下,必須匹配gene.data
和cpd.data
中的樣本,以便將其分配給同一圖表。因此,參數(shù)match.data
在這里并不是很有效。(圖3就沒(méi)有化合物的映射了)
#plot samples/states separately
p <- pathview(gene.data = gse16873.d[, 1:3], cpd.data = sim.cpd.data2[, 1:2],
pathway.id = '00640', species = 'hsa', out.suffix = 'gse16873.cpd.3-2s',
keys.align = 'y', kegg.native = T, match.data = F, multi.state = F, same.layer = T)
如上所述,同一層上的KEGG
視圖可能需要一些時(shí)間。同樣,如果我們不介意丟失原始的KEGG
基因標(biāo)簽(或EC編號(hào)),我們可以選擇使用兩層的KEGG
視圖來(lái)加快這個(gè)過(guò)程。
p <- pathview(gene.data = gse16873.d[, 1:3], cpd.data = sim.cpd.data2[, 1:2],
pathway.id = '00640', species = 'hsa', out.suffix = 'gse16873.cpd.3-2s.2layer',
keys.align = 'y', kegg.native = T, match.data = F, multi.state = T, same.layer = F)
到目前為止,我們一直在處理連續(xù)數(shù)據(jù)。但我們也經(jīng)常處理離散數(shù)據(jù)。例如,我們根據(jù)一些統(tǒng)計(jì)數(shù)據(jù)(p值、折疊變化等)選擇顯著基因或化合物列表。輸入數(shù)據(jù)可以命名為兩個(gè)層次的向量,1或0(顯著或不顯著),也可以是一個(gè)更短的顯著基因/化合物名稱列表。在接下來(lái)的兩個(gè)例子中,我們只使gene.data
和cpd.data
或gene.data
離散。
require(org.Hs.eg.db)
gse16873.t <- apply(gse16873.d, 1, function(x) t.test(x, alternative = 'two.sided')$p.value)
sel.genes <- names(gse16873.t)[gse16873.t < 0.1]
sel.cpds <- names(sim.cpd.data)[abs(sim.cpd.data) > 0.5]
我們分別查看下sel.genes
和sel.cpds
的數(shù)據(jù)結(jié)構(gòu):
選擇高亮的基因
head(sel.genes)
[1] '10000' '10003'
[3] '10007' '100128414'
[5] '100129271' '100129762'
選擇高亮的化合物
head(sel.cpds)
[1] 'C00232' 'C02424' 'C07418'
[4] 'C06633' 'C00251' 'C01059'
p <- pathview(gene.data = sel.genes, cpd.data = sel.cpds, pathway.id ='00640',
species = 'hsa', out.suffix = 'sel.genes.sel.cpd', keys.align = 'y', kegg.native = T,
key.pos = 'topright', limit = list(gene = 1, cpd = 1), bins = list(gene = 1, cpd = 1),
na.col = 'gray', discrete = list(gene = T, cpd = T))
p <- pathview(gene.data = sel.genes, cpd.data = sim.cpd.data, pathway.id = '00640',
species = 'hsa', out.suffix = 'sel.genes.cpd', keys.align = 'y', kegg.native = T,
key.pos = 'topright', limit = list(gene = 1, cpd = 1), bins = list(gene = 1, cpd = 10),
na.col = 'gray', discrete = list(gene = T, cpd = F))
pathview
的一個(gè)顯著特點(diǎn)是它強(qiáng)大的ID映射能力。集成的Mapper
模塊將10多種基因或蛋白ID、20多種化合物或代謝物ID映射到標(biāo)準(zhǔn)KEGG
基因或化合物ID。換句話說(shuō),使用這些不同ID類型命名的用戶數(shù)據(jù)可以精確地映射到目標(biāo)KEGG
路徑。Pathview
適用于大約4800個(gè)物種的路徑,物種可以以多種格式指定:KEGG代碼
、科學(xué)名稱
或常用名稱
。
cpd.cas <- sim.mol.data(mol.type = 'cpd', id.type = cpd.simtypes[2], nmol = 10000)
gene.ensprot <- sim.mol.data(mol.type = 'gene', id.type = gene.idtype.list[4], nmol = 50000)
同樣查看cpd.simtypes
、cpd.cas
和gene.ensport
的數(shù)據(jù)結(jié)構(gòu):
head(cpd.simtypes)
[1] 'Beilstein Registry Number'
[2] 'CAS Registry Number'
[3] 'ChEMBL COMPOUND'
[4] 'KEGG COMPOUND accession'
[5] 'KEGG DRUG accession'
[6] 'Patent accession'
head(cpd.cas)
是一個(gè)named vactor
,128470-16-6
、465-42-9
、25812-30-0
為化合物名字,下面的數(shù)字0.9594129
是含量。(不知道為什么會(huì)模擬出負(fù)值?可能是歸一化(scale
)后的數(shù)據(jù)。具體見(jiàn)R語(yǔ)言 - 熱圖美化)。
128470-16-6 465-42-9
0.9594129 0.6882760
25812-30-0 4790-08-3
-1.5775357 1.2579969
95789-30-3 138-14-7
-1.9112655 -0.1616219
head(gene.ensprot)
是一個(gè)named vactor
,ENSP00000414006
是基因名字,-0.1609490
基因表達(dá)量
ENSP00000414006 ENSP00000403857
-0.1609490 1.5800692
ENSP00000444905 ENSP00000434312
0.2108686 -0.6047296
ENSP00000493916 ENSP00000338796
-0.9955757 0.5357721
注意參數(shù)中的gene.idtype
和cpd.idtype
,用來(lái)指定基因和化合物的ID類型。
p <- pathview(gene.data = gene.ensprot, cpd.data = cpd.cas, gene.idtype = gene.idtype.list[4],
cpd.idtype = cpd.simtypes[2], pathway.id = '00640', species = 'hsa', same.layer = T,
out.suffix = 'gene.ensprot.cpd.cas', keys.align = 'y', kegg.native = T,
key.pos ='bottomright', sign.pos = 'topright', limit = list(gene = 3, cpd = 3),
bins = list(gene = 6, cpd = 6))
對(duì)于不在自動(dòng)映射列表中的外部ID,我們可以使用mol.sum
函數(shù) (也是Mapper模塊的一部分)顯式地進(jìn)行ID和數(shù)據(jù)映射。這里我們需要提供id.map
(外部ID和KEGG標(biāo)準(zhǔn)ID之間的映射矩陣)。我們使用ID映射函數(shù)id2eg
和cpdidmap
等來(lái)得到id.map
矩陣。注意,這些ID映射函數(shù)可以獨(dú)立于pathview 主函數(shù)使用。
id.map.cas <- cpdidmap(in.ids = names(cpd.cas), in.type = cpd.simtypes[2],
out.type = 'KEGG COMPOUND accession')
cpd.kc <- mol.sum(mol.data = cpd.cas, id.map = id.map.cas)
id.map.ensprot <- id2eg(ids = names(gene.ensprot), category = gene.idtype.list[4], org = 'Hs')
gene.entrez <- mol.sum(mol.data = gene.ensprot, id.map = id.map.ensprot)
p <- pathview(gene.data = gene.entrez, cpd.data = cpd.kc, pathway.id = '00640',
species = 'hsa', same.layer = T, out.suffix = 'gene.entrez.cpd.kc', keys.align = 'y',
kegg.native = T, key.pos ='bottomright', sign.pos = 'topright',
limit = list(gene = 3, cpd = 3), bins = list(gene = 6, cpd = 6))
當(dāng)對(duì)KEGG
處理時(shí),物種是一個(gè)棘手但重要的問(wèn)題。KEGG
擁有自己的物種專用命名法和數(shù)據(jù)庫(kù),其中包括大約4800個(gè)基因組完整的生物體。換句話說(shuō),這些生物體的基因數(shù)據(jù)都可以通過(guò)pathview
進(jìn)行映射、可視化和分析。這種全面的物種覆蓋是pathview數(shù)據(jù)集成能力的一個(gè)突出特點(diǎn)。然而,KEGG
并不以同樣的方式對(duì)待所有這些生物體/基因組。KEGG
使用NCBI GeneID(或Entrez基因)作為最常見(jiàn)的模型動(dòng)物的默認(rèn)ID,包括人類、小鼠、大鼠等,以及一些作物,如大豆、葡萄和玉米。另一方面,KEGG
對(duì)所有其他生物體使用 Locus 標(biāo)記和其他id,包括動(dòng)物、植物、真菌、原生生物以及細(xì)菌和古生菌。
Pathview帶有一個(gè)數(shù)據(jù)矩陣korg
,其中包括支持的KEGG物種數(shù)據(jù)和默認(rèn)基因ID的完整列表。讓我們探索korg
數(shù)據(jù)矩陣,以便對(duì)KEGG
物種及其Gene ID
的使用有所了解。
data(korg)
head(korg)
ktax.id tax.id kegg.code scientific.name common.name entrez.gnodes kegg.geneid
[1,] 'T01001' '9606' 'hsa' 'Homo sapiens' 'human' '1' '374659'
[2,] 'T01005' '9598' 'ptr' 'Pan troglodytes' 'chimpanzee' '1' '474020'
[3,] 'T02283' '9597' 'pps' 'Pan paniscus' 'bonobo' '1' '100989900'
[4,] 'T02442' '9595' 'ggo' 'Gorilla gorilla gorilla' 'western lowland gorilla' '1' '101125212'
[5,] 'T01416' '9601' 'pon' 'Pongo abelii' 'Sumatran orangutan' '1' '100172878'
[6,] 'T03265' '61853' 'nle' 'Nomascus leucogenys' 'northern white-cheeked gibbon' '1' '105739221'
ncbi.geneid ncbi.proteinid uniprot
[1,] '374659' 'NP_001273380' 'Q8N4P3'
[2,] '474020' 'XP_001140087' 'Q1XHV8'
[3,] '100989900' 'XP_003811308' NA
[4,] '101125212' 'XP_018886437' 'G3QNH0'
[5,] '100172878' 'NP_001125944' 'Q5R9G0'
[6,] '105739221' 'XP_012359712' 'G1RK33'
#number of species which use Entrez Gene as the default ID
sum(korg[,'entrez.gnodes']=='1',na.rm=T) #204
#number of species which use other ID types or none as the default ID
sum(korg[,'entrez.gnodes']=='0',na.rm=T) #5041
#new from 2017: most species which do not have Entrez Gene annotation any more
na.idx=is.na(korg[,'ncbi.geneid'])
sum(na.idx) #4674
從上面的korg
的探索中,我們看到4800個(gè)KEGG
物種中,只有少數(shù)沒(méi)有NCBI(Entrez)基因ID或基因ID(注釋)其中的一個(gè)。幾乎所有物種都具有默認(rèn)的KEGG
基因ID(通常是Locus標(biāo)簽)和Entrez Gene ID注釋。因此,pathview接受所有這些物種的gene.idtype =“kegg”或“Entrez”
(不區(qū)分大小寫(xiě))。用戶需要確保正確的gene.idtype
是特定的,因?yàn)槌?5種常見(jiàn)物種外,KEGG
和Entrez
基因ID不同。對(duì)于19種,Bioconductor提供基因注釋包。用戶可以自由地輸入gene.data
和其他gene.idtype
。有關(guān)這些Bioconductor注釋物種和額外基因ID類型的列表允許:
data(bods)
bods
package species kegg code id.type
[1,] 'org.Ag.eg.db' 'Anopheles' 'aga' 'eg'
[2,] 'org.At.tair.db' 'Arabidopsis' 'ath' 'tair'
[3,] 'org.Bt.eg.db' 'Bovine' 'bta' 'eg'
[4,] 'org.Ce.eg.db' 'Worm' 'cel' 'eg'
[5,] 'org.Cf.eg.db' 'Canine' 'cfa' 'eg'
[6,] 'org.Dm.eg.db' 'Fly' 'dme' 'eg'
[7,] 'org.Dr.eg.db' 'Zebrafish' 'dre' 'eg'
[8,] 'org.EcK12.eg.db' 'E coli strain K12' 'eco' 'eg'
[9,] 'org.EcSakai.eg.db' 'E coli strain Sakai' 'ecs' 'eg'
[10,] 'org.Gg.eg.db' 'Chicken' 'gga' 'eg'
[11,] 'org.Hs.eg.db' 'Human' 'hsa' 'eg'
[12,] 'org.Mm.eg.db' 'Mouse' 'mmu' 'eg'
[13,] 'org.Mmu.eg.db' 'Rhesus' 'mcc' 'eg'
[14,] 'org.Pf.plasmo.db' 'Malaria' 'pfa' 'orf'
[15,] 'org.Pt.eg.db' 'Chimp' 'ptr' 'eg'
[16,] 'org.Rn.eg.db' 'Rat' 'rno' 'eg'
[17,] 'org.Sc.sgd.db' 'Yeast' 'sce' 'orf'
[18,] 'org.Ss.eg.db' 'Pig' 'ssc' 'eg'
[19,] 'org.Xl.eg.db' 'Xenopus' 'xla' 'eg'
data(gene.idtype.list)
gene.idtype.list
'SYMBOL' 'GENENAME' 'ENSEMBL' 'ENSEMBLPROT' 'UNIGENE' 'UNIPROT' 'ACCNUM' 'ENSEMBLTRANS' 'REFSEQ' 'ENZYME' 'TAIR' 'PROSITE' 'ORF'
所有先前的例子用了人類數(shù)據(jù),其中Entrez Gene
是KEGG
的默認(rèn)基因ID。Pathview
現(xiàn)在(從版本1.1.5開(kāi)始)顯式處理使用Locus標(biāo)簽或其他基因ID作為KEGG
默認(rèn)ID的物種。以下是大腸桿菌菌株K12數(shù)據(jù)的幾個(gè)例子。首先,我們使用大腸桿菌K12的默認(rèn)KEGG ID
(基因座標(biāo)簽)處理基因數(shù)據(jù)。
eco.dat.kegg <- sim.mol.data(mol.type='gene',id.type='kegg',species='eco',nmol=3000)
head(eco.dat.kegg)
查看部分eco.dat.kegg
數(shù)據(jù):
b3649 b0486 b3312 b3566 b3945 b2936
0.3116743 0.9873035 -1.5734323 1.8890136 0.2399454 0.4556519
p <- pathview(gene.data = eco.dat.kegg, gene.idtype='kegg', pathway.id = '00640',
species = 'eco', out.suffix = 'eco.kegg', kegg.native = T, same.layer=T)
我們也可以用與人類相同的方法對(duì)大腸桿菌K12的Entrez Gene ID
進(jìn)行基因數(shù)據(jù)處理。
eco.dat.entrez <- sim.mol.data(mol.type='gene',id.type='entrez',species='eco',nmol=3000)
head(eco.dat.entrez)
查看部分eco.dat.entrez
數(shù)據(jù):
948629 945263 948265 948536 948973 947881
-0.2516281 0.3116743 0.9873035 -1.5734323 1.8890136 0.2399454
p <- pathview(gene.data = eco.dat.entrez, gene.idtype='entrez', pathway.id = '00640',
species = 'eco', out.suffix = 'eco.entrez', kegg.native = T, same.layer=T)
基于上述bods數(shù)據(jù),大腸桿菌K12在Bioconductor中有注釋。因此,我們可以進(jìn)一步研究其基因數(shù)據(jù)與其他ID類型,例如,官方基因符號(hào)。在調(diào)用pathview
時(shí),首先需要將這些數(shù)據(jù)映射到Entrez Gene ID
(如果還沒(méi)有),然后再映射到默認(rèn)的KEGG ID
(Locus標(biāo)簽)。因此,它比上一個(gè)例子花費(fèi)更長(zhǎng)的時(shí)間。
egid.eco=eg2id(names(eco.dat.entrez), category='symbol', pkg='org.EcK12.eg.db')
eco.dat.symbol <- eco.dat.entrez
names(eco.dat.symbol) <- egid.eco[,2]
head(eco.dat.kegg)
p <- pathview(gene.data = eco.dat.symbol, gene.idtype='symbol', pathway.id = '00640', species = 'eco', out.suffix = 'eco.symbol.2layer', kegg.native = T, same.layer=F)
重要的是,當(dāng)數(shù)據(jù)被映射到KEGG ortholog pathways
時(shí),pathview
可以直接用于宏基因組或微生物組數(shù)據(jù)。來(lái)自KEGG
中未注釋和未包含的任何新物種(非KEGG物種)的數(shù)據(jù)也可以通過(guò)pathview
用同樣的方法映射到KEGG ortholog pathways
中進(jìn)行分析和可視化。在下一個(gè)例子中,我們首先模擬映射的KEGG ortholog
基因數(shù)據(jù)。然后將數(shù)據(jù)作為gene.data
輸入,其中species =“ko”
。
ko.data=sim.mol.data(mol.type='gene.ko', nmol=5000)
head(ko.data)
查看一下ko.data
數(shù)據(jù)
K01859 K15874 K04035 K16205 K16093 K09447
-0.5198690 0.5832773 -1.3411454 0.5746940 0.2157879 -1.1339828
p <- pathview(gene.data = ko.data, pathway.id = '04112', species = 'ko', out.suffix = 'ko.data', kegg.native = T)
https://academic.oup.com/nar/article/45/W1/W501/3804420
https://bioconductor.org/packages/release/bioc/html/pathview.html
聯(lián)系客服