Попытка использовать percolation_centrality из networkx

#python #python-3.x #networkx

#python #python-3.x #networkx

Вопрос:

быстрый вопрос. Я использовал numpy для генерации матрицы из файла Excel, который был изменен в csv. Затем я использовал эту матрицу G для вычисления некоторых показателей графика. Сначала я попробовал центральность собственного вектора, которая работала абсолютно нормально, но у меня не было такого успеха с центральностью перколяции. При попытке сделать это я получаю KeyError: 0. Проверяя документацию networkx, я не думаю, что допускаю какие-либо очевидные ошибки, но, пожалуйста, помогите.

 import networkx as nx
import numpy as np


mydata = np.genfromtxt('brain10.csv', delimiter=',')
G = nx.from_numpy_matrix(mydata)


centrality = nx.percolation_centrality(G, weight="weight")



import parcellation_dictionary from parcellation_dictionary.py
  

это не работает, и мне на самом деле приходится копировать и вставлять весь словарь

 result = {k:centrality[v] for v,k in parcellation_dictionary.items()}
print(result)

sorted_by_value = sorted(result.items(), reverse= True, key=lambda kv: kv[1])
print(sorted_by_value)
  

Ошибка, которую я получаю:

 "C:Program Files (x86)Python37-32python.exe" "C:/Users/bob/PycharmProjects/EVC trial/evc trial no 138.py"
Traceback (most recent call last):
  File "C:/Users/bob/PycharmProjects/EVC trial/evc trial no 138.py", line 9, in <module>
    centrality = nx.percolation_centrality(G, weight="weight")
  File "C:Program Files (x86)Python37-32libsite-packagesnetworkxalgorithmscentralitypercolation.py", line 109, in percolation_centrality
    states, p_sigma_x_t)
  File "C:Program Files (x86)Python37-32libsite-packagesnetworkxalgorithmscentralitypercolation.py", line 129, in _accumulate_percolation
    pw_s_w = states[s] / (p_sigma_x_t - states[w])
KeyError: 0

Process finished with exit code 1
  

Комментарии:

1. Я не уверен, что parcellation_dictionary такое. И именно здесь вы получаете свою ошибку?

2. Вы должны выдать полное сообщение об ошибке.

3. Я добавил сообщение об ошибке. parcellation_dictionary — это словарь, который я создал в другом файле python, который я пытаюсь импортировать, но не могу выполнить должным образом, в результате чего мне приходится копировать его, чтобы иметь возможность его использовать.

4. Пожалуйста, помогите!

Ответ №1:

Сначала вам нужно установить атрибуты узла. Попробуйте этот подход.

 nx.set_node_attributes(G, 0.1, 'percolation')

percolation_cent_dict = nx.percolation_centrality(
    G=G,
    attribute='percolation',
)
  

Комментарии:

1. Не могли бы вы, пожалуйста, объяснить, почему вы должны устанавливать атрибуты узла, я вижу, в документации указано, что это показатель заражения, но это неясно?