Python-IGraph / Networkx:查找连接图中特定节点的集群

时间:2015-07-06 21:15:49

标签: python graph cluster-analysis igraph networkx

我需要在连接图中找到满足几个条件的节点集群:

  • 节点有一组特定的事件边缘(此处不需要详细信息)

  • 如果节点满足上述条件并且不超过x边缘/邻居,则此类节点的集群被视为集群

我可以把它写成一个新函数,但我想知道networkx或python-igraph库中是否存在某些东西?

亲切的问候!

1 个答案:

答案 0 :(得分:1)

我相信没有什么可以直接得到您指定的内容(在networkx中),因为您的需求非常具体,但肯定有一些帮助功能。这是我能想到使用Networkx的最简单方法。

条件1 将特定事件边缘列表与g.edges(节点)进行比较:

cluster_nodes = []
for node in G:
    if set(specific_edges) == set (g.edges(node)): # the set is used to make sure that order is ignored.
        cluster_nodes.append(node)

条件2 将x作为群集中任意2个节点之间的最大可接受距离

for node in cluster_nodes:
    for n in cluster_nodes:
        if (nx.shortest_path(G,node,n) > x):
            cluster_node.remove(node)