图形工具重叠块对象

Graph-tool Overlap Block Object

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

具体来说,当推断重叠块对象时,重叠成员数组似乎可以用

恢复
blockobject = gt.minimize_blockmodel_dl(g, overlap = True)
blockpropertyvector = blockobject.get_overlap_blocks()[0]

要将其转换为 numpy 数组,似乎我们需要了解任何给定节点的最大成员数(我们称之为 max_overlaps),然后我们可以将其转换为二维数组

blockpropertyvector.get_2d_array(range(max_overlaps))

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

实际上,通过这种方式,您将无法区分缺少成员资格和零组成员资格。

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

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 > 0 表示属于组 r - 1。