我不知道导致此错误的原因。我所做的是在开始时将很多顶点添加到我的图形中:
for i in range(len(repositories_key_list)):
repo_vertices[repositories_key_list[i]] = g3.add_vertex()
然后是一些连接这些顶点的处理,为了减少渲染图形所需的时间,我删除了所有具有in和out度等于零的顶点:
for repository_name in repo_vertices:
vert = repo_vertices[repository_name]
print vert
if vert.out_degree() == 0 and vert.in_degree() == 0:
g3.remove_vertex(vert)
但是,我做的事情似乎是个问题,因为我收到了这个错误:
Traceback (most recent call last):
File "/media/sfalk/win-data/Stefan/Uni/Master/WS/Network Science/projects/project1/github/graph_tools_github.py", line 276, in <module>
print vert
ValueError: invalid vertex descriptor: 22947
有趣的是,print vert
在这里被追溯为一个问题。如果我评论那条线路我会得到:
Traceback (most recent call last):
File "/media/sfalk/win-data/Stefan/Uni/Master/WS/Network Science/projects/project1/github/graph_tools_github.py", line 278, in <module>
if vert.out_degree() == 0 and vert.in_degree() == 0:
File "/usr/lib/python2.7/dist-packages/graph_tool/__init__.py", line 2933, in _out_degree
return self.__out_degree()
ValueError: invalid vertex descriptor: 23038
所以无论发生什么,我都不知道如何解决它。
答案 0 :(得分:0)
https://graph-tool.skewed.de/static/doc/graph_tool.html#graph_tool.Graph.remove_vertex的Graph.remove_vertex()
文档详细介绍了这一点。即,它声明:
此操作可能使顶点描述符无效。顶点总是如此 在[0,N-1]范围内连续索引,因此是顶点描述符 索引高于
vertex
的内容将在删除后失效(如果 fast == False,否则只有指向顶点的描述符 最大的指数将无效)。因此,删除多个顶点的唯一安全方法 一次是按递减索引顺序对它们进行排序:
# 'del_list' is a list of vertex descriptors
for v in reversed(sorted(del_list)):
g.remove_vertex(v)
或者(并且优选地),可以传递列表(或可迭代的) 直接作为
vertex
参数,执行上述操作 内部(在C ++中)。