NetworkX: список направленных ребер в переписи триады - PullRequest
1 голос
/ 22 марта 2019

В NetworkX я могу использовать nx.triadic_census(g), чтобы дать мне список триад в моей сети. enter image description here

Out:
{'003': 1434217,
 '012': 282025,
 '102': 32640,
 '021D': 21,
 '021U': 267246,
 '021C': 445}

Я хотел знать, как я могу перечислить направленные ребра, принадлежащие триаде. Например, в Pyspark, чтобы перечислить узлы / ребра в триаде "102": g.find("(a)-[e]->(b); (b)-[e2]->(a)").show()

и это даст вам

|                   a|            e|                   b|            e2|
+--------------------+-------------+--------------------+--------------+
|[US, United State...|  [US, AZ, 0]|    [AZ, Azerbaijan]| [AZ, US, 637]|
|    [LU, Luxembourg]|[LU, BE, 213]|       [BE, Belgium]|[BE, LU, 1470]|
|       [FI, Finland]| [FI, CZ, 24]|[CZ, Czech Republic]|  [CZ, FI, 51]|
|       [HU, Hungary]|  [HU, PL, 0]|        [PL, Poland]| [PL, HU, 231]|
|[RU, Russian Fede...|  [RU, UA, 0]|       [UA, Ukraine]|   [UA, RU, 0]|

Есть ли способ сделать это в NetworkX?

1 Ответ

1 голос
/ 28 марта 2019

В networkx нет функции, которая позволяла бы вам это делать, поэтому вы должны реализовать ее вручную. Я изменил код networkx.algorithms.triads, чтобы он возвращал узлы триады, а не их количество. Вы можете найти его здесь . Его можно изменить, заменив кортеж в census['...'].add(tuple(sorted([u, v, w]))) строках для добавления ребер вместо узлов.

...