【问题标题】:Transfering network data from R to Gephi将网络数据从 R 传输到 Gephi
【发布时间】:2020-06-01 01:57:44
【问题描述】:

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

write_delim(x, path, delim = ",", na = na, append = append, col_names = col_names, 中的错误: is.data.frame(x) 不是 TRUE

这是我的完整代码:

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?

【问题讨论】:

    标签: r igraph gephi network-analysis writexl


    【解决方案1】:
    1. 您应该考虑Cytoscape,它比 Gephi 效率高得多(例如,Cytoscape 在导入大网络时提示您:“这是一个非常庞大的网络,您确定要绘制那个?” vs. Gephi 让你的计算机在同一个网络上冻结和崩溃)。

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

    3. 在您最喜欢的网络分析程序中导入“edges-list”或“nodes-list”(Cytoscape 只需要一些指示即可从 excel 边缘列表中导入图形,并向您展示一些流行的-up of your data:您在导入之前会看到一个数据样本)。您可以在 cytoscape 或 Gephi 中将图形作为边列表(csv 或 xls)导入(例如,tutorial to import edges-list.csv

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

    【讨论】:

    • 不客气。也许您错过了从边缘列表导入网络的可能性?我进行了编辑 (3.)。
    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 2020-11-23
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2018-10-18
    • 1970-01-01
    相关资源
    最近更新 更多