Как я могу отметить все триады определенного типа (например, 030T) на графике? - PullRequest
1 голос
/ 17 октября 2019

У меня есть датафрейм df с:

Source, Target
aaaa, bbbb
aaaa, cccc
aaaa, dddd
bbbb, cccc
cccc, dddd

и т. Д.

Файл "total_edges.csv" (71kb): https://uni -duisburg-essen. sciebo.de/s/WLDD4ytkjekVcIL

Я получаю объект графа и, согласно трекеру проблем github (https://github.com/igraph/python-igraph/issues/253) узлы / ребра триады, но это не удается:

import pandas as pd
import igraph as ig

df_edges = pd.read_csv("total_edges.csv")

g = ig.Graph.TupleList(df_edges.itertuples(index=False), directed=True)
tc = g.triad_census()
ffl = ig.Graph.Formula("A --> B --> C, A --> C")
result = g.get_subisomorphisms_lad(ffl, induced=True)
print(result)

Сообщение об ошибке (виртуальная машина с обновленной версией Pop_OS x64, Python 3.7.5):

Traceback (most recent call last):
  File "count_triads.py", line 20, in <module>
    ffl = ig.Graph.Formula("A --> B --> C, A --> C")
  File "/home/admin/.local/lib/python3.7/site-packages/igraph/formula.py", line 209, in construct_graph_from_formula
    for start_names, end_names, arrowheads in generate_edges(part):
  File "/home/admin/.local/lib/python3.7/site-packages/igraph/formula.py", line 90, in generate_edges
    raise SyntaxError(msg)
SyntaxError: invalid token found in edge specification: A --> B --> C

Как пометить все узлы в этом графе значением триады (A, B, C, None)для типа триады 030T, чтобы я мог по-разному фильтровать / строить триады и не триады?

1 Ответ

3 голосов
/ 23 октября 2019

Об ошибке, похоже, что вы столкнулись с проблемой, аналогичной этой проблеме в анализаторе формул .

Попытка применить последние изменения или здесь может помочь установка версии разработки python-igraph .

...