关于图形工具中嵌套块模型的基本问题

Basic questions about nested blockmodel in graph-tool

非常简短,关于 minimize_nested_blockmodel_dl function in graph-tool library 的两三个基本问题。有没有办法找出哪个顶点落在哪个块上?换句话说,从每个块中提取一个列表,其中包含其顶点的标签。

分层可视化对于网络理论的业余爱好者来说是相当难以理解的,例如绘制的具有定向边缘的正方形是否意味着暗示两个正在考虑的块之间的基础边缘的主要方向?这些块使用不同的颜色很好地显示,但在非常概念的层面上,哪些类型的模式或 edge/vertex 属性在顶点的块分类背后?换句话说,当两个顶点在同一个块中时,关于它们的共同属性我能说些什么?

关于您的第一个问题,它相当简单:minimize_nested_blockmodel_dl() 函数 returns 一个 NestedBlockState 对象:

 g = collection.data["football"]
 state = minimize_nested_blockmodel_dl(g)

您可以通过检查层次结构的第一层来查询节点的组成员资格:

 lstate = state.levels[0]

这是一个 BlockState 对象,我们通过 get_blocks() 方法从中获取组成员资格:

 b = lstate.get_blocks()
 print(b[30])  # prints the group membership of node 30

关于你的第二个问题,随机块模型假设属于同一组的节点有相同的概率连接到网络的其余部分。因此,通过上述函数归入同一组的节点具有相似的连接模式。例如,如果我们查看足球网络的拟合度:

state.draw(output="football.png")

我们看到属于同一组的节点往往与同一组的其他节点有更多连接---社区结构的典型示例。然而,这只是随机块模型可以发现的众多可能性之一。其他拓扑模式包括核心-边缘组织、二分性等