2017-01-12 6 views
0

У меня есть направлены, взвешенная сеть хранится в текстовый файл в виде списка 3-х элементов:Импорт текстовый файл в граф-инструмент

node1 node2 weight 
node1 node3 weight 
... 

Так, например, триплет:

1 10 50 

означает, что я получил границу между узлом 1 и узлом 10 с весом 50.

Может кто-нибудь, пожалуйста, объясните подробно, как я могу импортировать это в инструмент графика, чтобы выполнить обнаружение сообщества ионный анализ с использованием SBM.

Большое спасибо.

ответ

1

Я предполагаю, что для взвешенного графика вы хотите использовать PropertyMaps (https://graph-tool.skewed.de/static/doc/quickstart.html#sec-property-maps)?

Чтобы импортировать файл, вы захотите использовать файловые объекты (https://docs.python.org/3/tutorial/inputoutput.html).

Все вместе, код нужно следующим образом:

#imports the graph-tools library 
from graph_tool.all import * 

#opens your file in mode "read" 
f = open("your_file.txt","r") 
#splits each line into a list of integers 
lines = [[int(n) for n in x.split()] for x in f.readlines()] 
#closes the file 
f.close() 

#makes the graph 
g = Graph() 
#adds enough vertices (the "1 + " is for position 0) 
g.add_vertex(1 + max([l[0] for l in lines] + [l[1] for l in lines])) 

#makes a "property map" to weight the edges 
property_map = g.new_edge_property("int") 
#for each line 
for line in lines: 
    #make a new edge 
    g.add_edge(g.vertex(line[0]),g.vertex(line[1])) 
    #weight it 
    property_map[g.edge(g.vertex(line[0]),g.vertex(line[1]))] = line[2] 

 Смежные вопросы

  • Нет связанных вопросов^_^