KEGGgraph R包中的mergeKEGGgraphs函数存在错误。代码(如下)产生以下错误(也在下面)。我已经抓取了函数的代码,并得出结论(希望是正确的),这个错误是由于下面的行:
keggnodeing <- match(nodes(g), keggnodenames)
mergedkeggnode <- keggnodes[keggnodeing]
names(mergedkeggnode) <- sapply(mergedkeggnode, getName)
发生错误是因为节点(g)生成条目列表中所有图形的条目ID(连接),这些图形是在函数mergeKEGGgraphs开头使用mergeGraphs合并的。但是,keggnodenames生成显示名称 - 而不是条目ID。因此,当您进行匹配(nodes(g),keggnodenames)时,所有条目都将为null。条目ID和显示名称之间没有匹配!
问题:如何解决此错误,以便成功合并这些路径图?
以下代码的错误消息:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘getName’ for signature ‘"NULL"’
驱动程序脚本:
require(KEGGgraph)
require(KEGG.db)
require(XML)
require(RCurl)
tmp <- as.list(KEGGPATHNAME2ID)
j=1
kegg <- list()
names.kegg <- NULL
for (i in 1:length(tmp)) {
file <- getKGMLurl(tmp[[i]], organism="hsa")
xData <- getURL(file)
if (xData!="\n") {
doc <- xmlParse(xData)
saveXML(doc, file=sprintf("hsa%s.xml", tmp[[i]]))
kegg.pathway <- parseKGML2(sprintf("hsa%s.xml", tmp[[i]]))
kegg[j] <- KEGGpathway2Graph(kegg.pathway,genesOnly=FALSE,expandGenes=FALSE)
names.kegg[j] <- names(tmp[i])
j<-j+1
} else {
print(sprintf("i = %d, hsa%s.xml no data", i, tmp[[i]]))
}
}
names(kegg) <- names.kegg
kegg.merged <- mergeKEGGgraphs(kegg, edgemode = "directed")