如何使用R语言优雅地解析KEGG KO 的htext文件?

KEGG KO的分析想必大家都不陌生,但是不知道什么原因,KEGG官方的各种文件都搞得遮遮掩掩,无论是做基因注释还是数据可视化,大家都非常难受。其中对于注释出来的KO号怎么进行KO号名称和代谢通路的注释,由于官方没有提供相应的一一对应表,所以对于数据分析与可视化来说十分不方便。。。。

好在KEGG官方并不是完全不给机会,提供了所谓的htext文件和网页让你进行分析,htext格式如下

图片

是不是看了感觉摸不到头脑?这玩意要怎么用来数据分析?

于是小编上网搜各种分析流程和教程之类的,也算是找到几个python或者perl脚本之类的,但是使用过后,发现要么就是出错,要么分析出来的效果不尽人意,所以小编打算自己动手写代码进行分析。因为小编目前对R比较熟悉,所以尝试着用R进行分析。废话不多说,具体代码和流程如下。


1. 下载htext文件

进入www.kegg.jp/kegg-bin/get_htext?htext=ko00001网站,点击左上角的Download json,下载json文件。

图片

2. 开始使用R进行分析

1. 设置工作目录并读取json文件

setwd("~/代码驿站/自写代码/data")
library(rjson)
jsonData = fromJSON(file ="ko00001.json")
a=jsonData$name
b=jsonData$children

读取得到的为list格式,如下、

图片

2. 解析list

list格式也算是R里面最复杂的格式,不过也没那么复杂,只要仔细观察,你就可以找到这个list里面的一些规律,有兴趣的朋友可以自己点进去看看,这里我不多说了,直接上代码。。

c=NULL
for (i in 1:length(b)) {
for (j in 1:length(b[[i]]$children)) {
for (w in 1:length(b[[i]]$children[[j]]$children)) {
for (x in 1:length(b[[i]]$children[[j]]$children[[w]]$children)) {

c=rbind(c,c(
  b[[i]]$name,
  b[[i]]$children[[j]]$name,
  b[[i]]$children[[j]]$children[[w]]$name,
  b[[i]]$children[[j]]$children[[w]]$children[[x]]$name
            ))
  
}
}  
}
}

​​​​​这段代码就是解析json文件的核心代码了,接下来的工作大家也可以使用自己的需求进行写,小编在这里演示一下自己的方法。

3. 后期整理

library(stringr)
c=as.data.frame(c)
c$V1=substring(c$V1,7,nchar(c$V1))
c$V2=substring(c$V2,7,nchar(c$V2))
c$V3=substring(c$V3,7,nchar(c$V3))
#去除前6个用不到的字符(如果需要使用,则使用下面的代码先替换第一个空格,再进行分离)

library(tidyr)
d = separate(data=c, col = V3,  into=c('V3', 'pathway_id'), sep ="[[]" )
d$pathway_id =str_replace_all(d$pathway_id,c("]"=""))
#分离出代谢通路ko号

d$V4 =sub("  ", "$", d$V4)
d = separate(data=d, col = V4,  into=c('V4', 'KO_name'), sep ="[$]" )
#分离出K号

d$KO_name =sub(";", "$", d$KO_name)
d = separate(data=d, col = KO_name,  into=c('gene', 'KO_name'), sep ="[$]" )
#分离出kegg的基因

d$KO_name =sub("[[]EC:", "$", d$KO_name)
d = separate(data=d, col = KO_name,  into=c('KO_name', 'EC'), sep ="[$]" )
d$EC =gsub("[]]", "", d$EC)
#分离出每个K号的名称以及对应的EC编号

这里为了避免出现错误的分离,因此小编首先进行了一些替换,然后再进行分离。

4. 出表!

names(d)[c(1,2,3,5)]=c("level1","level2","level3","KO")

write.table(d, file = "kegg pathway htext.txt", quote = F, sep = "\t", row.names = F, col.names = T)

最后得到的表如下:

图片

完美符合数据分析所需要的表格格式!

当然也有小伙伴可能会嫌麻烦,因此小编在这里也提供了一个脚本以及解析到的文件,地址为

nashanghenzan/KEGG-KO-htext-file-parser: the rscript to parse KEGG hierarchical text file (github.com)

更多内容,请关注公众号plantmicrobiome(宏组学)

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值