Networkx DiGraph Attribute Error self._succ
Contexto: Estoy tratando de ejecutar el código de otro investigador; describe un modelo de tráfico para la red de carreteras del Área de la Bahía, que está sujeto a riesgo sísmico. Soy nuevo en Python y, por lo tanto, agradecería un poco de ayuda para depurar el siguiente error.
Problema: Cuando trato de ejecutar el código para los datos de muestra provistos con el archivo, siguiendo las instrucciones en el archivo README, aparece el siguiente error.
DN0a226926:quick_traffic_model gitanjali$ python mahmodel_road_only.py
You are considering 2 ground-motion intensity maps.
You are considering 1743 different site locations.
You are considering 2 different damage maps (1 per ground-motion intensity map).
Traceback (most recent call last):
File "mahmodel_road_only.py", line 288, in <module>
main()
File "mahmodel_road_only.py", line 219, in main
G = get_graph()
File "mahmodel_road_only.py", line 157, in get_graph
G = add_superdistrict_centroids(G)
File "mahmodel_road_only.py", line 46, in add_superdistrict_centroids
G.add_node(str(1000000 + i))
File "/Library/Python/2.7/site-packages/networkx-2.0-py2.7.egg/networkx/classes/digraph.py", line 412, in add_node
if n not in self._succ:
AttributeError: 'DiGraph' object has no attribute '_succ'
Depuración: Según algunas otras preguntas, parece que este error se debe a un problema con la versión de networkx (estoy usando 2.0) o la versión de Python (estoy usando 2.7.10). Fui a travesla guía de migración citada en otras preguntas y no encontré nada que necesitara cambiarmahmodel_road_only.py. También revisé el archivo digraph.py y descubrí queself._succ se define. También verifiqué la definición de get_graph (), que se muestra a continuación, que llama a networkx, pero no vi ningún problema obvio.
def get_graph():
import networkx
'''loads full mtc highway graph with dummy links and then adds a few
fake centroidal nodes for max flow and traffic assignment'''
G = networkx.read_gpickle("input/graphMTC_CentroidsLength3int.gpickle")
G = add_superdistrict_centroids(G)
assert not G.is_multigraph() # Directed! only one edge between nodes
G = networkx.freeze(G) #prevents edges or nodes to be added or deleted
return G
Pregunta: ¿Como puedo resolver este problema? ¿Se trata de cambiar las versiones de Python o Networkx? Si no es así, ¿qué próximos pasos podría recomendar para la depuración?