NetworkX ego_graph неправильно использует дистанцию ​​с радиусом - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь использовать ego_graph для рисования некоторых сетей, ориентированных на набор случайно выбранных узлов.Если я не установлю параметры distance, то он правильно вернет график с шагом thisRadius;однако, когда я определяю расстояние, результаты совершенно неверны и не имеют никакого смысла.

Как правильно использовать функцию distance nx.ego_graph?

В моем случае у меня есть различные веса на моих ребрах, но тот, который я хочуиспользовать сейчас - время обхода в минутах, которое называется timeWeight.Допустим, я хочу подграф всех узлов в течение 30 минут моего начального узла.Я ожидал, что

nodeCenteredSubgraph = nx.ego_graph(thisNetwork, egoID, radius=30, distance='timeWeight')

вернет это, но вместо этого он вернет узлы, которые НАМНОГО дальше, чем 30 минут.Радиус действительно имеет некоторый эффект, потому что, если я уменьшу его до radius=1, я получу меньший (но все еще огромный) подграф ... и, конечно, больше узлов, чем можно достичь за 1 минуту.На самом деле я должен был получить только эго в этом случае.

Если я установлю radius=0.1 или radius=0.01 или меньше, я всегда получаю одно и то же, и хотя он намного меньше, чем раньше, он все равно возвращает довольно большой график ... гораздо больше, чем можно достичь за меньшеечем минута (ничего).

Понимая, что ego_graph использует single_source_dijkstra в качестве своей базы, я попробовал эту функцию напрямую с

distances,paths = nx.single_source_dijkstra(thisNetwork, egoID, target=None, cutoff=10, weight='timeWeight')

, и он возвращает группу узлов свеса от 0,0 до 10,0 (все целые числа, хотя их не должно быть, если бы он действительно использовал timeWeight), и они не имеют ничего общего со значениями timeWeight.

Из документации кажется, что я делаю этоверно, и я не могу найти ни одного примера использования параметра расстояния с ego_graph, поэтому, надеюсь, кто-нибудь скажет мне, что я ошибся.

...