2019-01-06可视化kegg通路-pathview包

原贴地址:http://www.bioinfo-scrounger.com/archives/639


Pathview是一个用于整合表达谱数据并用于可视化kegg通路的一个R包,其会先下载kegg官网上的通路图,然后整合输入数据对通路图进行再次渲染(加工?),从而对kegg通路图进行一定程度上的个性化处理

Pathview是一个bioconductor包,正常安装即可

    source("https://bioconductor.org/biocLite.R")    biocLite("pathview")

以其自带测试数据集,对Pathview包的可视化功能做个整理,用法很简单,主要为围绕着pathview这个作图函数(参数很多,用?pathview查看下各个参数的说明),只是需要将数据整理或者整合成其需要的输入数据格式即可

先看下demo数据是什么格式,列名是每个样本名,行名是每个gene的entrez id

> head(gse16873.d)              DCIS_1      DCIS_2      DCIS_3      DCIS_4      DCIS_5      DCIS_610000    -0.30764480 -0.14722769 -0.023784808 -0.07056193 -0.001323087 -0.1502681310001      0.41586805 -0.33477259 -0.513136907 -0.16653712  0.111122223  0.1340073410002      0.19854925  0.03789588  0.341865341 -0.08527420  0.767559264  0.1582860910003    -0.23155297 -0.09659311 -0.104727283 -0.04801404 -0.208056443  0.03344448100048912 -0.04490724 -0.05203146  0.036390376  0.04807823  0.027205816  0.0544473910004    -0.08756237 -0.05027725  0.001821133  0.03023835  0.008034394 -0.06860749

先看下Pathview最常见的一种用法:将某个样本的表达量(测试数据已经是归一化后的表达量);其实也可以任何列数据,不仅仅是表达量数据,也可以是foldchange等数据,人为特定的数值型数据也行;最后以color

bar的形式在kegg通路图上的对应节点展示;如下例子所示,取第一个样本的数值最为gene.data,通路选择04110,物种为hsa

p <- pathview(gene.data = gse16873.d[, 1], pathway.id = "04110", species = "hsa", out.suffix = "gse16873")

图中右上角color bar是可以通过参数limit来调整的,默认是limit=list(gene=1, cpd=1),即gene.data的限定范围在(-1,1),cpd.data的限定范围在c(-1,1);如果有其他需要可以设置为limit=list(gene=2, cpd=1)等;如果想最大值和最小值不对称则limit = list(gene=c(-1,2))即可

如果想将color bar分割的更加密集一些,则可以修改默认参数bins = list(gene = 10, cpd = 10)为20。。。只能说Pathview作者好细心。。

接下来看看Pathview如何展示整合数据的,如基因和代谢组的数据在kegg通路上整合可视化

先载入代谢物相关数据,如

sim.cpd.data=sim.mol.data(mol.type="cpd", nmol=3000)> head(sim.cpd.data)    C02787      C08521      C01043      C11496      C07111      C00031 -1.15259948  0.46416071  0.72893247  0.41061745 -1.46114720 -0.01890809

然后通过cpd.data参数将代谢物数据加入到pathview函数中,如:

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")

keys.align = "y"控制color bar对齐方式,key.pos = "topright"则是对应color bar在图上的位置(主要有bottomleft,bottomright,topleft以及topright)

Pathview不仅能整合不同组学数据(上述例子是转录组和代谢组),还可以整合多个样本的数据,比如我们在上面看到gene.data只导入了一列数据,其实Pathview支持多列(也就是多个样本)数据的导入,cpd.data也一样

如按照说明文档中的模拟一组多样本的代谢物表达谱数据(也似乎是归一化后的)

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)            exp1      exp2      exp3      exp4      exp5      exp6

C02787 -0.5425224 1.7940544 -0.2629972  0.2729004 -0.4897083 1.05131740C08521 -1.1903358 0.4448658  2.6074747 -0.9163451  0.1239377 0.57827710C01043  0.3391817 1.6855815  1.0203767 -1.3184792  0.4727454 0.03381888

然后还是使用pathview函数作图,相比上面例子增加了参数match.data = F,主要用于表示gene和cpd样本数是否要匹配;multi.state = T则表示多个样本在同一个图上显示

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)

正如之前说的,Pathview不仅能展示连续性数据,还可以展示离散型数据(如:差异显著OR不显著,上调OR下调等),我先模拟一个(0,1)离散型数据

testdata2 <- data.frame(sample1=sample(c(0,1), 10000, replace = T), stringsAsFactors = F)row.names(testdata2) <- row.names(gse16873.d)[1:10000]

然后在pathview函数中将limit = list(gene = c(0,1))和bins = list(gene = 1)设置为一致;由于默认颜色是低(绿色),中(灰色),高(红色),而我们测试数据是0,1两个数字,所以需要将mid设置为红色mid = list(gene = "red"),这样0就是绿色,1就是红色了

p <- pathview(gene.data = testdata, pathway.id = "00640", species = "hsa",

              out.suffix = "test.genes",discrete = list(gene = T), kegg.native = T,

              limit = list(gene = c(0,1)), bins = list(gene = 1), mid = list(gene = "red"))

从我们之前的测试数据中可看到,pathview函数默认使用的Id是entrez id,从默认参数gene.idtype="entrez"可得;对于绝大多数真核生物来说,其entrez id确实等于其对应的kegg id,但是有些物种还是特例的,比如拟南芥。。。当然Pathview包给出了一些id转化方法(但我一般不用,因为我比较喜欢自己来转化);因此一般我们能拿到的就已经是kegg id了,比如拟南芥的ath:AT4G17260,这是需要设置gene.idtype=kegg,这里需要注意的,gene.data参数输入的不是ath:AT4G17260而是AT4G17260,下面以一个例子说明

先模拟一个数据

testid <- data.frame(expr = rnorm(5), stringsAsFactors = F)row.names(testid) <- c("AT4G17260", "AT2G14170", "AT2G20420", "AT1G06550", "AT1G36160")

然后还是以通路00640为例,物种是拟南芥

p <- pathview(gene.data = testid, pathway.id = "00640", species = "ath",

              gene.idtype = "kegg", out.suffix = "testid")

但是当物种是kegg未收录的物种,这是可能用的不再是kegg id还是K号,如K00016,这时的通路则是KEGG ortholog pathways,物种设定为ko,即:species = "ko"

testko <- data.frame(expr = rnorm(5), stringsAsFactors = F)row.names(testko) <- c("K00016", "K01026", "K00140", "K18371", "K17741")

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容