RCyjs 从邻接矩阵列中指定节点标签

RCyjs specifying node labels from adjacency matrix columns

我计划制作一个交互式应用程序,用户可以通过该应用程序将数据上传到网站,而我的应用程序将从这些数据中 return 一个 Cytoscape (RCyjs) 图表。我将向用户指定图表中的节点将根据正在读取的数据的列进行标记....

例如,我希望我的应用程序通过 RCyjs 实现,因此当用户上传包含数据的文本文件时,我可以制作邻接矩阵并使用类似以下代码的内容:

> data<-read.table("text_file_containing_data.txt", sep="\t")
> p1<-cor(data[1:20,1:20], use="p") #correlations taken from sample of
> library(graph) 
> library(RCyjs) 
> library(igraph)
> rcy<-RCyjs(portRange=9047:9057, quiet=TRUE, graph=igraph.to.graphNEL(simplify(graph_from_adjacency_matrix(p1, weighted=T))))

所以我想知道如何让输出看起来像这样:

RCyjs命令中是否有允许节点名称由数据集中的参数指定的命令,例如列名?在 RCyjs 手册中,似乎说 node.attribute.namenodes 等参数可以在 RCyjs 命令中指定,例如

    for (i in colnames(p1)){
        nodeDataDefaults(g, "label") <- colnames(p1)[i]
        }
    setNodeLabelRule(rcy, "label")
    redraw(rcy)

但这对图表没有影响

当我检查上述命令的输出时,我得到:

    noa(g, "label")
    6450255 2570615 6370619 2600039 2650615 5340672 2000519 3870044 7050209 1580181 5220554 5390438 
    NA      NA      NA      NA      NA      NA      NA      NA      NA      NA      NA      NA 
    6420681 4760377 2370438 4050154 1740066 4830092 3610072 6480136 
    NA      NA      NA      NA      NA      NA      NA      NA 

所以也许我在上面的命令中遗漏了一些我应该在图形包中最初标记它们的地方,但我似乎无法让它工作......

我也试过以下方法:

  nodes<-getNodes(rcy)
  setNodeLabelRule(rcy, for(i in nodes[,1]){
       i
        }
   )

但是图表没有按我希望的方式标注...

想知道这是为什么....

在 RCyjs 包附带的插图中,您可以找到这些行(查找示例 3,缺氧诱导):

RCyjs package vignette

在第一次设置默认值后显式地将节点数据属性分配给 graphNEL:

nodeDataDefaults(g, attr="label") <- "default node label"
nodeData (g, all.nodes, "label") = all.nodes

据我所知,您跳过了第二步。 完整序列可能如下所示:

all.nodes <- colnames(p1)
g <- new("graphNEL", edgemode = "directed")
g <- addNode(all.nodes, g)
nodeDataDefaults(g, attr="label") <- ""  # initialize
  # vector assignment of labels 
nodeData(g, all.nodes, attr="label") <- all.nodes
  • 保罗