Я хочу загрузить список ребер в Graph-Tool.Индексы вершин в моем списке не являются последовательными, поэтому я бы хотел, чтобы они автоматически добавлялись как vertex_properties.Насколько я понимаю, это должно быть сделано с помощью add_edge_list, но я обнаружил, что vertex_property "name" не создано.С другой стороны, load_graph_from_csv работает:
from graph_tool.all import *
import numpy as np
import pandas as pd
edge_list = [[1,7,1],[7,4,5],[1,4,3]]
G = Graph(directed=False)
G.ep["length"] = G.new_edge_property("int")
eprops = [G.ep["length"]]
G.add_edge_list(edge_list, hashed=True, eprops=eprops)
print(G.vp.keys())
print(G.ep.keys())
Out:
[]
['length']
Итак, вы видите, что в G. нет vertex_properties из документа графического инструмента для add_edge_list:
Опционально, если hashed == True, значения вершин в списке ребер не должны напрямую соответствовать индексам вершин.В этом случае они будут сопоставлены с индексами вершин в соответствии с порядком, в котором они встречаются, и будет возвращена карта свойств вершин со значениями вершин.
Теперь я обнаружил, что load_graph_from_csv работает так, как яожидается:
df = pd.DataFrame.from_records(edge_list, columns=['node_1', 'node_2', 'length'])
df.to_csv('edge_list.csv', sep=',', index=False)
G2 = load_graph_from_csv('edge_list.csv', skip_first=True, directed=False, hashed=True, eprop_names=['length'])
print(G2.vp.keys())
print(G2.ep.keys())
print([G2.vp['name'][v] for v in G2.get_vertices()])
Out:
['name']
['length']
['1', '7', '4']
Может ли кто-нибудь указать мне правильное направление?