0

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

write_delim(x, path, delim = ",", na = na, append = append, 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?

4

1 回答 1

2
  1. 您应该考虑Cytoscape,它比 Gephi 效率更高(例如,Cytoscape 在导入大型网络时提示您:“这是一个非常庞大的网络,您确定要绘制它吗?” vs. Gephi 让您计算机冻结并与同一网络崩溃)。

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

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

PS:如果我错过了“从 igraph 转换为 Gephi”的目标,根据这个网站,“Gephi 有自己的包,即 R 的 rgexf 包,它为使用自定义矩阵/数据框数据创建 Gephi 样式图提供了一些支持" (您应该注意每个节点列表和边缘列表所需的两列)。这似乎是实验性的,但在您的情况下可能有用,请参见此处此处

于 2020-05-31T08:08:18.623 回答