我如何让igraph停止与大图崩溃?

时间:2017-02-16 15:57:42

标签: r igraph

我正在使用igraph中相当大的网络(大约200,000个边缘)。我正在计算一个紧密度中心性(谐波中心性)的版本,如下所示:

sapSet = mbo.getThisMboSet()
sapCount = sapSet.count()
saplist = []

if sapCount > 1:
   for i in range(sapCount):`enter code here`
     defaultCheck = sapSet.getMbo(i)
     saplist.append(defaultCheck.getInt("HNADEFACC"))
   defCount = saplist.count(1)
   if defCount > 1:
      errorgroup = " Please Note: you are allowed"
      errorkey = "  only One Default Account"
   if defCount < 1:
      errorgroup = " Please enter "
      errorkey = "  at leat One Default Account"
else:
   mbo.setValue("HNADEFACC",1,MboConstants.NOACCESSCHECK)

然而,这会导致R崩溃。实际上,应用于整个网络的任何网络测量都会崩溃R.我可以使用最大的连接组件(大约7,000个边缘)而不会出现问题,但不能与整个网络一起使用。我使用谐波中心性(而不是igraph的内置中心度量),因为它更适合于断开连接的图形。

我正试图找出解决方法。一种选择是将网络分成其组成部分,然后运行我的谐波中心度量。但在尝试之后:

#Create igraph network object:
g <- graph.edgelist(as.matrix(d), directed = FALSE)
g <- simplify(g)

#Normalized harmonic centrality:
h <- 1/(shortest.paths(g))
h[!is.finite(h)] <- 0
h <- (colSums(h)/gorder(h))

R再次崩溃。我通常在R Studio工作,但我也在香草,非GUI R中尝试过这个;但结果相同。

有没有人对如何解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:0)

大图占据了大量内存。因此,首先你的操作系统必须是64位,如果你的内存很低,你可能需要使用虚拟内存并增加交换文件大小。