图形工具重叠块对象

时间:2016-05-13 20:17:36

标签: graph-tool

如何将重叠块状态中每个节点的块成员资格转换为numpy数组?

具体来说,在推断重叠块对象时,看起来可以使用

恢复重叠的成员资格数组
blockobject = gt.minimize_blockmodel_dl(g, overlap = True)
blockpropertyvector = blockobject.get_overlap_blocks()[0]

要将其转换为numpy数组,似乎我们需要知道任何给定节点的最大成员数(让我们称之为max_overlaps)然后我们可以转换为2d数组

blockpropertyvector.get_2d_array(range(max_overlaps))

但现在我不确定如何解释结果。这个矩阵的第一行是每个节点的第一个成员资格分配,这是真的吗?如果是这样,那么我想说第二行是节点的第二个成员资格分配(如果存在),否则为0。但是0是一个可能的块号,那么我们如何知道0-i块是否包含重叠的成员资格呢?

1 个答案:

答案 0 :(得分:1)

实际上,通过这种方式,您将无法将成员资格的缺乏与成员资格区分开来。

我认为你能做的最简单的事情就是循环遍历节点:

bv = state.get_overlap_blocks()[0]
b = zeros((g.num_vertices(), max_B))
for v in g.vertices():
    b[int(v),:len(b[v])] = bv[v].a + 1

使用上述值,零值表示缺少成员资格,值r> 1。 0表示r-1组的成员资格。