RCy3 2.18.0
本插图将展示如何在一个iGraph网络上执行基本的网络操作,并使用这些信息直接从R中使用RCy3包自定义它在Cytoscape中的外观
*来自Vessy的“Fun with R blog”:http://www.vesnam.com/Rblog/viznets5/
如果(!"RCy3" %in% installed.packages()){install.packages("BiocManager") BiocManager::install("RCy3")} library(RCy3) if(!"igraph" %in% installed.packages()){install.packages("igraph")} library(igraph) if(!"plyr" %in% installed.packages()){install.packages("plyr")} library(plyr)
RCy3的全部意义在于与Cytoscape连接。您需要安装并启动Cytoscape:
cytoscapePing ()
数据格式:3个变量的数据框架;变量1和变量2对应交互;变量3是交互的权重
lesmis <- system.file("extdata"," lessis .txt", package="RCy3")数据集<-读取。table(lesmis, header = FALSE, sep = "\t")
创建图形。使用simplify来确保没有重复的边或self循环
gD <- igraph::simplify(igraph::graph.data.frame(dataSet, directed=FALSE))
验证节点(77)和边(254)的数量:
igraph: vcount (gD) igraph: ecount (gD)
计算用于演示不同绘图能力的一些节点属性和节点相似性
计算所有节点的度
degAll <- igraph::degree(gD, v = igraph:: v (gD), mode = "all")
计算所有节点的中间值
betAll <- igraph:: betweness (gD, v = igraph::v (gD), directed = FALSE) / ((igraph::vcount(gD) - 1) * (igraph::vcount(gD)-2) / 2) betAll。norm <- (betAll - min(betAll))/(max(betAll) - min(betAll)) rm(betAll)
计算所有节点对之间的骰子相似度
dsAll <- igraph::相似度。骰子(gD, vids = igraph::V(gD), mode = "all")
根据计算出的节点属性/相似性添加新的节点属性
gD <- igraph::set.vertex。attribute(gD, "degree", index = igraph::V(gD), value = degAll) gD <- igraph::set.vertex。属性(gD, " betweness ", index = igraph::V(gD), value = betAll.norm)
检查属性。除了“name”,你现在应该能看到“degree”和“betweeness”了。
总结(gD)
现在是edge属性。
F1 <- function(x) {data.frame(V4 = dsAll[which(igraph::V(gD)$name == as.character(x$V1)), which(igraph::V(gD)$name == as.character(x$V2))])}数据集。ext <- plyr::ddply(dataSet, .variables=c("V1", "V2", "V3"), function(x) data.frame(F1(x))) gD <- igraph::set.edge。attribute(gD, "weight", index = igraph::E(gD), value = 0) gD <- igraph::set.edge。属性(gD, "similarity", index = igraph::E(gD), value = 0)
注:dataSet中交互的顺序。ext与它在dataSet或边缘列表中的不一样,因此这些值不能直接赋值
for (i in 1:nrow(dataSet.ext)) {igraph::E(gD)[as.character(dataSet.ext$V1) %——% as.character(dataSet.ext$V2)]$weight <- as.numeric(dataSet.ext$V3) igraph::E(gD)[as.character(dataSet.ext$V1) %——% as.character(dataSet.ext$V2)]$similarity <- as.numeric(dataSet.ext$V4)} rm(dataSet,dsAll, i, F1)
检查边缘属性。你会看到“权重”和“相似度”被加了进去。
总结(gD)
更新:您可以直接从图例到Cytoscape,发送所有属性并显示图形!
createNetworkFromIgraph (gD,新。title =“悲惨世界”)
可用的布局列表可以从R访问如下:
getLayoutNames ()
我们将选择“fruchterman-rheingold”布局。要查看给定布局的属性,请使用:
getLayoutPropertyNames(“fruchterman-rheingold”)
我们可以选择任何我们想要的属性,并将它们作为空格分隔的字符串提供:
layoutNetwork('fruchterman-rheingold gravity_multiplier=1 nIterations=10')
但这是一个疯狂的布局,所以让我们尝试“力导向”:
layoutNetwork('force-directed defaultSpringLength=70 defaultSpringCoefficient=0.000003')
节点…
setNodeColorMapping('degree', c(min(degAll), mean(degAll), max(degAll)), c('#F5EDDD', '#F59777', '#F55333') lockNodeDimensions(TRUE) setNodeSizeMapping(' betweness ', c(min(betAll.norm), mean(betAll.norm), max(betAll.norm)), c(30,60,100))
边缘…
setEdgeLineWidthMapping('weight', c(min(as.numeric(dataSet.ext$V3)), mean(as.numeric(dataSet.ext$V3)), max(as.numeric(dataSet.ext$V3))), c(1,3,5)) setEdgeColorMapping('weight', c(min(as.numeric(dataSet.ext$V3)), mean(as.numeric(dataSet.ext$V3)), max(as.numeric(dataSet.ext$V3))), c('#BBEE00', '#77AA00', '#558800')))
在定义了节点和边缘规则之后,我们将定义自己的默认颜色/大小模式,因为在使用规则时可能会出现问题
setBackgroundColorDefault('#D3D3D3') setNodeBorderColorDefault('#000000') setNodeBorderWidthDefault(3) setNodeShapeDefault('椭圆')setNodeFontSizeDefault(20) setNodeLabelColorDefault('#000000')
瞧!全部完成。
cytoscapeVersionInfo ()
sessionInfo ()