1949589
参考曾老师的文章,这个知识点挺好的,后面可以结合GSVA继续分析。
利用下面的代码就可以将12大代谢的通路相关基因提取出来,再进行构建基因集进行GSVA分析(这部分内容后面会分布),或许不想自己做的可以跟我要,不过我只构建了rat的
dir.create('../12Metabolism')
setwd('../12Metabolism/')
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("KEGGREST")
library(KEGGREST)
library(stringr)
org <- keggList('organism')
head(org)
org[str_detect(org[,3],"rat"),]
rno_path <- keggLink("pathway","rno")
length(rno_path)
names(rno_path)[1:6]
length(unique(names(rno_path)))
length(unique(rno_path))
meta1= unique(rno_path)[grepl('rno00',unique(rno_path))]
meta2=unique(rno_path)[grepl('rno010',unique(rno_path))]
meta3=unique(rno_path)[grepl('rno011',unique(rno_path))]
meta4=unique(rno_path)[grepl('rno012',unique(rno_path))]
meta5=unique(rno_path)[grepl('rno013',unique(rno_path))]#这部分对照一下KEGG官网就清楚了
meta=c(meta1,meta2,meta3,meta4,meta5)
rno_info <- lapply(meta, keggGet)
nm=unlist(lapply( rno_info , function(x) x[[1]]$NAME))
genes = unlist(lapply(rno_info, function(x) {
if (is.null(x) || length(x) == 0) {
return(NA) # 如果x为空或不存在,返回NA
}
g = x[[1]]$GENE
if (is.null(g) || length(g) < 2) {
return(NA) # 如果g不存在或长度小于2,返回NA
}
g = g[seq(2, length(g), by = 2)] # 从第二个元素开始,步长为2
if (length(g) == 0) {
return(NA) # 如果过滤后的g为空,返回NA
}
paste(str_split(g, ';', simplify = TRUE)[, 1], collapse = ';')
}))
cleaned_pathways <- sub(" - Rattus norvegicus \\(rat\\)", "", nm)
df =data.frame(
hsa= meta,
nm=cleaned_pathways,
gene=genes
)
Metabolism=df[1:85,]
write.csv(Metabolism,'12Metabolism.csv')