如何在cytoscape中导入igraph及其设置(节点的颜色等)?

时间:2018-08-01 03:53:36

标签: r igraph cytoscape

我要做什么

我正在使用igraph R软件包来创建和可视化感兴趣的网络。

R中的布局非常糟糕。我想在Cytoscape中导入我的网络,以便自己安排布局。

什么不起作用

我保存了igraph对象,并使用RCy3 R包(函数createNetworkFromIgraph)将其导出到cytoscape中。但是,网络格式化(节点colora等)丢失了!有没有办法保留格式并将其传输到Cytoscape?

我的代码

library(igraph)

network_graph <- graph_from_data_frame(d = network_df, directed = F)  
vertices = unique(as.character(network_df[,2]))
netm <- get.adjacency(network_graph, sparse = F)

network_df是一个包含源,目标和值的data.frame。这是头:

  source      target  means
  colchicine  TUBB1 0.08330359
  colchicine    TTL 0.08330359
  colchicine  TTLL2 0.08330359
  colchicine TUBA4A 0.08330359
  colchicine TUBB2B 0.08330359
  colchicine   BRD4 0.08330359

选择布局(fr或kk都适合稀疏图形)

l <- layout_with_fr(network_graph)

坐标的归一化,所以我们知道图形在基本图形坐标中的大小

l <- norm_coords(l, ymin=-1, ymax=1, xmin=-1, xmax=1)

为节点提供颜色标量。提供节点值的分隔符,以使它们处于不同的颜色阴影

pal <- colorRampPalette(c("red", "slateblue"))(6)
values <- network_df$means
bks <- pheatmap:::generate_breaks(values, length(pal), center = F)
cols <- pheatmap:::scale_colours(values, col=pal, breaks=bks, na_col = "grey")
network_df$cols <- cols
shapes = c(rep('square',10), rep('circle', dim(network_df)[1]-10)) 

save.image('igraph_drug_targets.RData')

这是我要在Cytoscape中绘制的部分

plot(network_graph, rescale = F, layout=l*1.0, vertex.label = NA, 
vertex.shape=shapes, vertex.frame.color = "gray20", edge.arrow.size = 
.5, vertex.color = network_df$cols, vertex.size = 5,  edge.color = 
rgb(0,0,0,0.4), edge.width = 0.3, xlim = c(-1.3, 1.3), ylim = c(-1.3, 
1.3))

添加自定义文本标签

for(j in 1:nrow(netm)) 
text(l[j,1], l[j,2], labels=rownames(netm)[j], pos = 3,  cex = 0.7, font = 2)

在颜色键中生成矩形的y坐标

rect_series = seq(0.3, 1, length.out = max(network_df$means) + 1)

循环在颜色键内绘制矩形

pal2 <- c(pal1[1], rev(pal[1:length(pal)-1]))

for(q in 1:max(network_df$means+1)){ 
    rect(1.1, rect_series[q], 1.2, 
    rect_series[q+1], col = pal2[q], border = NA)
    rect(1.1, 0.3, 1.2, 1)
    text(1.2, 0.3, min(network_df$means, 2), pos = 4)
    text(1.2, 1, round(max(network_df$means, 2),2), pos = 4)
    text(1.2, 1.1, labels = "Log10 normalized counts", pos = 4)

}

1 个答案:

答案 0 :(得分:1)

由于未发布任何代码,因此我建议一些替代方法。

我要做的是创建一个包含网络的数据框(2列,N行数据框),您可以轻松地从R中导出数据并将其作为 .sif 文件导入Cytoscape。

然后我将创建另一个包含节点属性的数据框:

  Node_Name | Attribute_1 | ... | Attribute_N
   node1    |   protein   | ... |    ...
   node2    |     RNA     | ... |    ...
   nodeN    |    gene     | ... |    ...

等...,以便您可以在Cytoscape中作为表格导入。这样,您现在可以利用Cytoscape Style编辑器的潜力。考虑到赋予节点的属性对于将特定的形状,颜色和大小应用于不同种类的节点非常有用。 边缘的工作原理相同(也许您还需要不同类型的边缘):创建包含边缘属性的数据框,然后将其导入Cytoscape。

如果您想浏览R并用它创建漂亮的图形,强烈建议您看一下以下链接:http://kateto.net/network-visualization

编辑:

我的R版本上的RCy3似乎无法正常工作,因此我无法通过提供代码来真正为您提供帮助。

但是,由于您可以在Cytoscape中创建,导入,导出并应用自己的自定义样式并将其应用于网络,因此我认为您应该做的是以下几点。 使用建议的功能,即 createNetworkFromIgraph(),您可以构建Cytoscape图。然后,您应该使用函数 createVisualStyle()创建新样式,最后,应将此样式应用于网络,如此处所述:https://www.bioconductor.org/packages/release/bioc/manuals/RCy3/man/RCy3.pdf

希望有帮助!