2015-11-03 2 views
0

У меня есть следующий код, чтобы аннотировать график с использованием карт свойств:граф-инструмент - AttributeError: объект «PropertyDict» имеет атрибута «вида»

from graph_tool.all import * 

# define graph 
g = Graph() 
g.set_directed(True) 
species = g.new_vertex_property("string") 
species_dict = {} 
reaction_dict = {} 

#add species and reactions 
s1 = g.add_vertex() 
species[s1] = 'limonene' 
species_dict[g.vertex_index[s1]] = 'limonene' 

g.vertex_properties["species"] = species 
g.vp.species[s1] 

Когда я запускаю это я получаю следующее сообщение об ошибке:

File "/home/pmj27/projects/NOC/exergy/make_graph.py", line 45, in <module> 
g.vp.species[s1] 

AttributeError: 'PropertyDict' object has no attribute 'species' 

Почему это? Если я нахожу g.vp в свою консоль IPython, я получаю {'species': <PropertyMap object with key type 'Vertex' and value type 'string', for Graph 0x7f285d90ea10, at 0x7f285d90ef90>} как ответ, так что, очевидно, есть карта свойств.

+0

Вы имели в виду 'g.vp ['species'] [s1]'? – jonrsharpe

+0

Нет, это возвращает 'SyntaxError: недопустимый синтаксис' –

+0

Действительно ?! Это, безусловно, синтаксически действительный Python. – jonrsharpe

ответ

1

Доступ к картам свойств через атрибуты (как и номер g.vp.species[s1] в вашем примере) доступен только в более поздних версиях графического инструмента (в настоящее время 2.11 по состоянию на ноябрь 2015 г.). В версии, используемой вами (2.2.42), вы должны использовать интерфейс словаря: g.vp["species"][s1].