Я работаю над сценарием Python 3, который работает с графиками, предоставленными библиотекой networkx. Края и узлы графа имеют атрибуты (например: имя, вес, URL ...).
Сценарий должен иметь возможность поддерживать график между различными «сессиями»: когда сеанс прерывается, он должен иметь возможность сериализовать график и сохранять его в файле, чтобы впоследствии сеанс мог быть возобновляется, и тот же файл может быть повторно прочитан сценарием для получения исходного графика.
До сих пор я пробовал разные методы, предлагаемые networkx, а также реализованные вручную, но ни один из них, похоже, не отвечает моим требованиям. Они либо теряют некоторые атрибутные данные между процедурами сериализации, либо, как в случае networkx.write_gexf
, присваивают дублирующиеся идентификаторы узлам
Ниже приведены некоторые примеры операций над графиками:
# create graph
G = networkx.Graph()
# add a node with attributes
G.add_node(node_id, label=node_label, url=node_url)
# check for existent edge (in undirected graph)
G.has_edge(other_node,node_id):
# modify an edge attribute
G[other_node][node_id]['weight'] += 1