2013-04-30 1 views
0

각 프로세스가 고유 한 nx.Graph()를 생성하고 노드/에지를 추가/제거하면 충돌 할 이유가 있습니까? 나는 이상한 현상을 발견하고 그것을 디버깅하려고한다.NetworkX를 다른 그래프의 여러 프로세스에서 사용하는 데 문제가 있습니까?

일반적인 문제는 하나의 그래프를 가장자리 목록으로 덤핑하고 각 그래프의 하위 집합에서 새 그래프로 다시 작성한다는 것입니다. 어떤 이유로 새로운 그래프에 모서리가 없습니다.

편집 : 나는 나를 위해 문제를 일으키는 코드의 부분을 발견 생각

, 질문은 여부를 의도 NetworkX의 행동 여부입니다 :

>>> import networkx as nx 
>>> g = nx.Graph() 
>>> g.add_path([0,1,2,3]) 
>>> g.nodes() 
[0, 1, 2, 3] 
>>> g.edges() 
[(0, 1), (1, 2), (2, 3)] 
>>> g[1][0] 
{} 
>>> g[0][1] = {"test":1} 
>>> g.edges(data=True) 
[(0, 1, {'test': 1}), (1, 2, {}), (2, 3, {})] 
>>> g[1][0] 
{} 
>>> g[0][1] 
{'test': 1} 
>>> 

이후는 그래프는 에지 데이터가 요청의 노드 ID와 관계없이 둘 다 나타날 것으로 예상하는 방향성이없는 것입니다. 잘못된 가정입니까?

답변

0

일반적으로 각각 자신의 Graph() 개체를 가지고있는 한 여러 프로세스에서 문제가 없어야합니다.

편집 : 라인 그 동안

>>> g[0][1] = {"test":1} 

와 내부 NetworkX 그래프 구조에 대한 귀하의 경우에는

명시 적으로 할당되는 데이터는 기술적으로는 API 및 데이터 구조를 바꿈 허용됩니다. 대신 여기에 새 가장자리를 추가하지 않고 새 속성 만 추가하여

>>> g.add_edge(0,1,test=1) 

을 사용해야합니다. 그런 식으로 데이터를 g [0] [1] 및 g [1] [0]에 올바르게 할당합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 편집하십시오. – d1337

관련 문제