如何在R / Python中获取三合会的详细信息?

时间:2019-02-15 09:56:33

标签: python r networkx igraph sna

我当前正在使用let ipV4 = req.connection.remoteAddress.replace(/^.*:/, ''); if (ipV4 === '1') ipV4 = 'localhost'; 使用igraph来获取给定有向图的traid普查。这将返回16个类别中每个类别的三合会计数。

例如triad_census(g)

但是,除了这些摘要统计信息,我想了解更多有关三合会的细节。

即给定网络具有16 3 0 10 1 0 0 0 0 0 0 0 0 0 0 0中的16个,它们是什么?假设网络有3个003,它们是什么?

示例012的3个Traid是012(john -> emi, jenne)(cena -> ally, john)

在r或python中有这样做的方法吗?

MWE

图形数据:http://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxkYWlzaGl6dWthfGd4OmFmZTI0NjhlMjQ0ZDQ5MQ

代码:

(emi -> peter, david)

因此,我的实际图形如下所示。 enter image description here

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

似乎没有内置的方法可以使用Networkx完成所需的操作。但是,您可以手动遍历每个三合会并定义它属于哪个类:

from itertools import combinations

triad_class = {}
for nodes in combinations(G.nodes, 3):
    triad_class[nodes] = [k for k, v in nx.triads.triadic_census(G.subgraph(nodes)).items() if v][0]

如果您希望有一个以类为键的字典,则可以尝试如下操作:

from itertools import combinations

triad_class = {}
for nodes in combinations(G.nodes, 3):
    tc = [k for k, v in nx.triads.triadic_census(G.subgraph(nodes)).items() if v][0]
    triad_class.setdefault(tc, []).append(nodes)