我要做什么
我正在使用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)
}
答案 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
希望有帮助!