将网络数据从 R 传输到 Gephi



我使用igraph,hmisc和基质包基于R中的微生物丰度相关性生成了一个微生物网络。现在我想在 Gephi 中处理它。为此,我必须将我的数据传输到 Gephi。我尝试从此数据准备CSV文件,但发现此错误:

write_delim(x, 路径, delim = ",", na = na, 追加 = 追加, col_names = col_names, 中的错误: is.data.frame(x( 不是真的

这是我的完整代码:

library(igraph)
library(Hmisc)
library(Matrix)
library(writexl)
otu.table <- read.csv(file.choose(), header = T, row.names = 1)
tax <- read.csv(file.choose(), header = T, row.names = 1)
dim(otu.table)
otu.table.filter <- otu.table[ ,colSums(otu.table) >= 0.1]
dim(tax)
otu.cor <- rcorr(as.matrix(otu.table), type="spearman", )
otu.pval <- forceSymmetric(otu.cor$P)
sel.tax <- tax[rownames(otu.pval),,drop=FALSE]
all.equal(rownames(sel.tax), rownames(otu.pval))
p.yes <- otu.pval<0.001
r.val = otu.cor$r>0.8 # select all the correlation values 
p.yes.r <- r.val*p.yes
p.yes.r <- abs(p.yes.r)>0.8 # output is logical vector
p.yes.rr <- p.yes.r*r.val 
adjm <- as.matrix(p.yes.rr)
colnames(adjm) <- as.vector(sel.tax$Phylum)
rownames(adjm) <- as.vector(sel.tax$Phylum)
net.grph=graph.adjacency(adjm,mode="undirected",weighted=TRUE,diag=FALSE)
edgew<-E(net.grph)$weight
V(net.grph)$color <- tax$Phylum
bad.vs<-V(net.grph)[degree(net.grph) == 0] 
net.grph <-delete.vertices(net.grph, bad.vs)
plot(net.grph,
vertex.size=8,
vertex.frame.color="black",
edge.curved=F,
edge.width=edgew,
layout=layout.fruchterman.reingold,
edge.color=ifelse(edgew > 1,"red","blue"),
vertex.label=NA,
vertex.label.color="black",
vertex.label.family="Times New Roman",
vertex.label.font=0.1)
write_csv(net.graph,"Documents\R Analysis\mydata.xlsx")

请告诉我如何将此数据传输给 Gephi?

你应该考虑 Cytoscape,它比 Gephi
  1. 效率高得多(例如,Cytoscape 在导入一个大型网络时会提示你:"这是一个非常庞大的网络,你确定要绘制它吗?"与 Gephi 使您的计算机冻结并崩溃与相同的网络(。

  2. 为了在程序中导入您的网络,您必须在csv或xls文件上编写边缘列表和(最终(节点列表。从 R 环境中的 Igraph 对象中,使用 :igraph::as_edgelist(some_igraph_network_objet, names = T)将图形导出到 data.frame,它返回"图形的标准表示",即边列表(见 https://igraph.org/r/doc/as_edgelist.html(。然后将其写入您的机器,带有一些write.csv或一些 excel 文件(例如,xlsx::write.xlsx(。如果需要,节点列表的想法相同。

  3. 将"边缘列表">
  4. 或"节点列表"导入您喜欢的网络分析程序中(Cytoscape只需要一些指示即可从Excel边缘列表导入图形,并向您显示一些数据的弹出窗口:您在导入之前会看到数据样本(。您可以将图形作为边缘列表(csv或xls(,在cytoscape或Gephi中导入(例如,导入边缘列表的教程.csv(

PS:如果我错过了"从 igraph 转换为 Gephi"的目标,根据这个网站,"Gephi 有自己的包,R 的 rgexf 包,它为从自定义矩阵/数据帧数据创建 Gephi 样式的图提供了一些支持"(你应该照顾两列,每个节点列表和边缘列表都需要(。这似乎是实验性的,但可能对您有用,请参阅此处和此处。

最新更新