KEGGREST
#会了它就可以知道哪个基因属于哪个通路,以及不同通路中包含的基因
#参考https://www.jieandze1314.com/post/cnposts/185/
# if (!require("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")
# BiocManager::install("KEGGREST")
library(KEGGREST)
library(tidyverse)
# 1.1先看看能获取到数据库的什么内容
listDatabases()
# > listDatabases()
# [1] "pathway"  "brite"    "module"   "ko"       "genome"   "vg"       "ag"       "compound" "glycan"  
# [10] "reaction" "rclass"   "enzyme"   "disease"  "drug"     "dgroup"   "environ"  "genes"    "ligand"  
# [19] "kegg"
#获取全部物种 耗时可根据提共的链接访问
#keggList("organism")
# http://rest.kegg.jp/list/organism
#如果直接用keggList("pathway") 得到的是map的通路
head(keggList("pathway"))
# > head(keggList("pathway"))
# path:map00010                              path:map00020 
# "Glycolysis / Gluconeogenesis"                "Citrate cycle (TCA cycle)" 
# path:map00030                              path:map00040 
# "Pentose phosphate pathway" "Pentose and glucuronate interconversions" 
# path:map00051                              path:map00052 
# "Fructose and mannose metabolism"                     "Galactose metabolism" 
## 总共有多少条map通路
length(keggList("pathway"))
# [1] 551
#如果想获得某物种的全部通路(比如人)
res <- keggList("pathway", "hsa") 
length(res)
# [1] 347
# 347条人的通路
# 如果想根据一些关键词挑选通路【比较重要】
# 比如我现在想看人类的通路中和细胞凋亡、分化有关的
options(stringsAsFactors = F)
pat=keggList("pathway", "hsa") 
pat=as.data.frame(res)
pat$id=stringr::str_split(rownames(pat),":",simplify = T)[,2]
# 看到我们这里设置了不区分大小写(这里写apoptosis,但识别出来的是Apoptosis);并且不用写全单词(这里写的是different,但会识别出differentiation)
p=pat[grepl('different|apoptosis',pat[,1],ignore.case=T),] 
p
# > p
# res       id
# path:hsa04210                        Apoptosis - Homo sapiens (human) hsa04210
# path:hsa04215     Apoptosis - multiple species - Homo sapiens (human) hsa04215
# path:hsa04380       Osteoclast differentiation - Homo sapiens (human) hsa04380
# path:hsa04658 Th1 and Th2 cell differentiation - Homo sapiens (human) hsa04658
# path:hsa04659        Th17 cell differentiation - Homo sapiens (human) hsa04659
# 2.3 利用keggGet()提取指定信息
# 来查看一个人类的基因和一个大肠杆菌的基因
query <- keggGet(c("hsa:10458", "ece:Z5100"))
length(query)
names(query[[1]])
# > names(query[[1]])
# [1] "ENTRY"     "SYMBOL"    "NAME"      "ORTHOLOGY" "ORGANISM"  "PATHWAY"   "NETWORK"   "BRITE"    
# [9] "POSITION"  "MOTIF"     "DBLINKS"   "STRUCTURE" "AASEQ"     "NTSEQ"  
# 看看这个基因涉及的通路
query[[1]]$PATHWAY
# > query[[1]]$PATHWAY
# hsa04520                                hsa04810 
# "Adherens junction"      "Regulation of actin cytoskeleton" 
# hsa05130                                hsa05135 
# "Pathogenic Escherichia coli infection"                    "Yersinia infection" 
#和网页一致:https://www.kegg.jp/dbget-bin/www_bget?hsa:10458
# 获得蛋白序列
keggGet(c("hsa:10458", "ece:Z5100"), "aaseq") 
# > keggGet(c("hsa:10458", "ece:Z5100"), "aaseq") 
# AAStringSet object of length 2:
#   width seq                                                                        names               
# [1]   552 MSLSRSEEMHRLTENVYKTIMEQFNPSLRNFIAMGK...VQLKPTVTNDRCDLSAQGPEGREHGDGSARTLAGR hsa:10458 K05627 ...
# [2]   248 MLNGISNAASTLGRQLVGIASRVSSAGGTGFSVAPQ...PARQAPPPPTGPSGLPPLAQALKDHLAAYEQSKKG ece:Z5100 K12786 ...
# 获得DNA序列
keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")
# > keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")
# DNAStringSet object of length 2:
#   width seq                                                                        names               
# [1]  1659 ATGTCTCTGTCTCGCTCAGAGGAGATGCACCGGCTC...GGGATGGGAGCGCCCGCACCCTGGCTGGAAGATGA hsa:10458 K05627 ...
# [2]   747 ATGCTTAATGGAATTAGTAACGCTGCTTCTACACTA...ATTTAGCTGCCTATGAGCAATCGAAGAAAGGGTAA ece:Z5100 K12786 ...
# 如果想提取序列可以直接as.character(),例如
as.character(keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")[1])
as.character(keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")[2])
# > as.character(keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")[1])
# hsa:10458 K05627 BAI1-associated protein 2 | (RefSeq) BAIAP2, BAP2, FLAF3, IRSP53, WAML; BAR/IMD domain containing adaptor protein 2 (N) 
# "ATGTCTCTGTCTCGCTCAGAGGAGATGCACCGGCTCACGGAAAATGTCTATAAGACCATCATGGAGCAGTTCAACCCTAGCCTCCGGAACTTCATCGCCATGGGGAAGAATTACGAGAAGGCACTGGCAGGTGTGACGTATGCAGCCAAAGGCTACTTTGACGCCCTGGTGAAGATGGGGGAGCTGGCCAGCGAGAGCCAGGGCTCCAAAGAACTCGGAGACGTTCTCTTCCAGATGGCTGAAGTCCACAGGCAGATCCAGAATCAGCTGGAAGAAATGCTGAAGTCTTTTCACAACGAGCTGCTTACGCAGCTGGAGCAGAAGGTGGAGCTGGACTCCAGGTATCTGAGTGCTGCGCTGAAGAAATACCAGACTGAGCAAAGGAGCAAAGGCGACGCCCTGGACAAGTGTCAGGCTGAGCTGAAGAAGCTTCGGAAGAAGAGCCAGGGCAGCAAGAATCCTCAGAAGTACTCGGACAAGGAGCTGCAGTACATCGACGCCATCAGCAACAAGCAGGGCGAGCTGGAGAATTACGTGTCCGACGGCTACAAGACCGCACTGACAGAGGAGCGCAGGCGCTTCTGCTTCCTGGTGGAGAAGCAGTGCGCCGTGGCCAAGAACTCCGCGGCCTACCACTCCAAGGGCAAGGAGCTGCTGGCGCAGAAGCTGCCGCTGTGGCAACAGGCCTGTGCCGACCCCAGCAAGATCCCGGAGCGCGCGGTGCAGCTCATGCAGCAGGTGGCCAGCAACGGCGCCACCCTCCCCAGCGCCCTGTCGGCCTCCAAGTCCAACCTGGTCATTTCCGACCCCATTCCGGGGGCCAAGCCCCTGCCGGTGCCCCCCGAGCTGGCACCGTTCGTGGGGCGGATGTCTGCCCAGGAGAGCACACCCATCATGAACGGCGTCACAGGCCCGGATGGCGAGGACTACAGCCCGTGGGCTGACCGCAAGGCTGCCCAGCCCAAATCCCTGTCTCCTCCGCAGTCTCAGAGCAAGCTCAGCGACTCCTACTCCAACACACTCCCCGTGCGCAAGAGCGTGACCCCAAAAAACAGCTATGCCACCACCGAGAACAAGACTCTGCCTCGCTCGAGCTCCATGGCAGCCGGCCTGGAGCGCAATGGCCGTATGCGGGTGAAGGCCATCTTCTCCCACGCTGCTGGGGACAACAGCACCCTCCTGAGCTTCAAGGAGGGTGACCTCATTACCCTGCTGGTGCCTGAGGCCCGCGATGGCTGGCACTACGGAGAGAGTGAGAAGACCAAGATGCGGGGCTGGTTTCCCTTCTCCTACACCCGGGTCTTGGACAGCGATGGCAGTGACAGGCTGCACATGAGCCTGCAGCAAGGGAAGAGCAGCAGCACGGGCAACCTCCTGGACAAGGACGACCTGGCCATCCCACCCCCCGATTACGGCGCCGCCTCCCGGGCCTTCCCCGCCCAGACGGCCAGCGGCTTCAAGCAGAGGCCCTACAGTGTGGCCGTGCCCGCCTTCTCCCAGGGCCTGGATGACTATGGAGCGCGGTCCATGAGCAGGAATCCCTTTGCCCACGTCCAGCTGAAGCCGACAGTGACCAACGACAGGTGTGATCTGTCCGCCCAAGGGCCAGAAGGCCGGGAGCACGGGGATGGGAGCGCCCGCACCCTGGCTGGAAGATGA"
# > as.character(keggGet(c("hsa:10458", "ece:Z5100"), "ntseq")[2])
# ece:Z5100 K12786 LEE-encoded effector EspF | (GenBank) espF; espF (N) 
# "ATGCTTAATGGAATTAGTAACGCTGCTTCTACACTAGGGCGGCAGCTTGTAGGTATCGCAAGTCGAGTGAGCTCTGCGGGGGGAACTGGATTTTCTGTAGCCCCTCAGGCCGTGCGTCTTACTCCGGTGAAAGTTCATTCCCCTTTTTCTCCAGGCTCGTCGAATGTTAATGCGAGAACGATTTTTAATGTGAGCAGCCAGGTGACTTCATTTACTCCCTCTCGTCCGGCACCGCCGCCACCGACAAGTGGACAGGCATCCGGGGCATCCCGACCTTTACCGCCCATTGCACAGGCATTAAAAGAGCACTTGGCTGCCTATGAAAAATCGAAAGGTCCTGAGGCTTTAGGTTTTAAGCCCGCCCGTCAGGCACCGCCGCCACCGACAAGTGGACAGGCATCCGGGGCATCCCGACCTTTACCGCCCATTGCACAGGCATTAAAAGAGCACTTGGCTGCCTATGAAAAATCGAAAGGTCCTGAGGCTTTAGGTTTTAAGCCCGCCCGTCAGGCACCGCCGCCACCGACAAGTGGACAGGCATCCGGGGCATCCCGACCTTTACCGCCCATTGCACAGGCATTAAAAGAGCACTTGGCTGCCTATGAAAAATCGAAAGGTCCTGAGGCTTTAGGTTTTAAGCCCGCCCGTCAGGCACCACCGCCACCGACAGGGCCTAGTGGACTACCGCCCCTTGCACAGGCATTAAAAGATCATTTAGCTGCCTATGAGCAATCGAAGAAAGGGTAA" 
#如果想看单个通路的图片
# png <- keggGet("hsa05130", "image") 
# t <- tempfile()
# # library(png)
# # writePNG(png, t)
# # if (interactive()) browseURL(t)
#  根据通路找基因【常用】
# 先看单个通路的操作
# 首先得到全部的基因结果(其中会包含Entrez ID和Symbol以及详细的基因信息)
all=keggGet('hsa04210')[[1]]$GENE
# [271] "5595"                                                                                                     
# [272] "MAPK3; mitogen-activated protein kinase 3 [KO:K04371] [EC:2.7.11.24]" 
entrez=all[seq(1,length(all),2)]
symbol=stringr::str_split(all[seq(2,length(all),2)],";",simplify = T)[,1]
id=data.frame(entrezID=entrez,symbolID=symbol)
# 根据一些关键词挑选了通路,并保持为p
p=pat[grepl('different|apoptosis',pat[,1],ignore.case=T),] 
p
# > p
# res       id
# path:hsa04210                        Apoptosis - Homo sapiens (human) hsa04210
# path:hsa04215     Apoptosis - multiple species - Homo sapiens (human) hsa04215
# path:hsa04380       Osteoclast differentiation - Homo sapiens (human) hsa04380
# path:hsa04658 Th1 and Th2 cell differentiation - Homo sapiens (human) hsa04658
# path:hsa04659        Th17 cell differentiation - Homo sapiens (human) hsa04659
# 之前p是字符串,现在变成列表,用于存储一会得到的各个结果
pp=lapply(p$id, function(x){
  # 其实还是像单个处理一样
  all=keggGet(x)[[1]]$GENE
  entrez=all[seq(1,length(all),2)]
  symbol=stringr::str_split(all[seq(2,length(all),2)],";",simplify = T)[,1]
  id=data.frame(entrezID=entrez,symbolID=symbol)
})
names(pp)=as.character(p$id)
# 搜索基因信息中的两个词
head(keggFind("genes", c("shiga", "toxin")),3)
#搜索化学公式
head(keggFind("compound", "C7H10O5", "formula"))
# 利用keggConv()转换KEGG ID
keggConv("ncbi-proteinid", c("hsa:10458", "ece:Z5100"))
head(keggLink("pathway", "hsa"))
# 或者指定一个或多个基因(基因支持跨物种)
keggLink("pathway", c("hsa:10458", "ece:Z5100"))
####################总结#########
# 找全部通路
# keggList("pathway")
# 
# 根据基因找通路
# keggLink("pathway", c("hsa:10458", "ece:Z5100"))
# 
# 根据关键词找通路
# options(stringsAsFactors = F)
# pat=keggList("pathway", "hsa") 
# pat=as.data.frame(res)
# pat$id=stringr::str_split(rownames(pat),":",simplify = T)[,2]
# # 看到我们这里设置了不区分大小写(这里写apoptosis,但识别出来的是Apoptosis);并且不用写全单词(这里写的是different,但会识别出differentiation)
# p=pat[grepl('different|apoptosis',pat[,1],ignore.case=T),] 
# 根据通路找基因
# # 这个p可以自己定义,也可以根据上面关键词找通路
# p=pat[grepl('different|apoptosis',pat[,1],ignore.case=T),] 
# # 之前p是字符串,现在变成列表,用于存储一会得到的各个结果
# p=as.list(p)
# pp=lapply(p, function(x){
#   # 其实还是像单个处理一样
#   all=keggGet(x)[[1]]$GENE
#   entrez=all[seq(1,length(all),2)]
#   symbol=stringr::str_split(all[seq(2,length(all),2)],";",simplify = T)[,1]
#   id=data.frame(entrezID=entrez,symbolID=symbol)
# })
# names(pp)=as.character(p)
1 前言
在正式学习这个包之前,还是先补充一点KEGG数据库的知识吧

KEGG数据库是一个综合数据库,其中我们最常用的就是通路(PATHWAY)了,主要介绍了细胞生化过程(还有图注),如细胞代谢、细胞周期、膜转运、信号传递。但PATHWAY只能算上是一个小分支,全部的数据库可以看下面:

1.1 首先,KEGG主要有4大分类
系统信息 Systems information

基因组信息 Genomic information

化学信息 Chemical information

健康信息Health information

后来健康信息+药物标签 Drug labels = KEGG MEDICUS

然后每个分类下面又有自己的子数据库,比如常用的pathway数据库就是在系统信息之下的
1.2 每个分类都有各自的颜色
1.3 每个分支有各自的作用
来自官网的描述:https://www.kegg.jp/kegg/kegg1a.html
KEGG数据库是生物系统的数据重现,由基因、蛋白质(基因组信息)和化学物质(化学信息)的分子模块组建而成。这些分子模块之间构成了相互作用的关系网络(系统信息)。另外还包含了对生命活动有影响的疾病和药物资源(健康信息和药物信息)。
1.4 比较常用的子数据库
1.4.1 KEGG PATHWAY代谢通路数据库
来自:https://www.kegg.jp/kegg/kegg3a.html

包含了许多手工绘制或计算机模拟的代谢通路,包含了细胞过程、遗传信息、新陈代谢、疾病、药物开发等的分子互作和反应网络图。

每个pathway map都是通过2-4个字母的前缀 + 5位数字组成

其中前缀有5种类型:

map - Reference pathway:手工绘制;根据已有的知识绘制的全面的供参考的代谢图,也是为后面几种的基础。图中的小框都是白色(后期可以填充);每个节点表示某个基因、该基因编码的酶或者酶参与的反应,可以点击其中的链接查看详细信息
org - Organism-specific pathway map:计算机模拟;物种特有的代谢通路;绿色小框表示物种特有的基因或酶,点击绿色框的基因会看到更详细的信息
ko - Reference pathway (KO):计算机模拟,节点只代表基因;点击蓝色框会看到直系同源基因信息
ec - Reference pathway (EC):计算机模拟,节点只代表相关的酶
rn - Reference pathway (Reaction):计算机模拟,节点只代表参与的某个反应、反应物及反应类型

1.4.2 KEGG ORTHOLOGY 直系同源数据库
这个数据库是基于:同源基因功能相似。会把每个功能已知的基因和其他同源的基因归为一类,即一个KO号,它不分物种,比如ko00010(https://www.kegg.jp/kegg-bin/show_pathway?ko00010)就是糖酵解
图中又这么几个形状:

圆角矩形:其他的KO通路

**方框:**如果把鼠标悬停在方框上,就会弹出K+数字。比如这里的K02777、K02779等,表示所有物种的一个同源基因
至于这个同源基因在各个物种中分别是什么,可以看详情,例如K02777(h**小圆圈:**如果把鼠标悬停在方框上,会弹出化合物信息(C符号)ttps://www.kegg.jp/dbget-bin/www_bget?ko:K02777)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇