- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文:我正在尝试运行另一位研究人员的代码 - 它描述了湾区道路网络的交通模型,该模型容易受到地震灾害的影响。我是 Python 的新手,因此非常感谢您帮助我调试以下错误。
问题:当我尝试按照 README 中的说明运行文件随附的示例数据的代码时,出现以下错误。
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'
调试:根据其他一些问题,这个错误似乎源于 networkx 版本(我使用的是 2.0)或 Python 版本(我使用的是 2.7.10)的问题).我经历了the migration guide cited in other questions在 mahmodel_road_only.py 中没有发现我需要更改的内容。我还检查了 digraph.py 文件,发现 self._succ 被定义了。我还检查了 get_graph() 的定义,如下所示,它调用了 networkx,但没有发现任何明显的问题。
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
问题:我该如何解决这个问题?是更改 Python 还是 Networkx 版本的问题?如果没有,您可以推荐哪些后续步骤进行调试?
最佳答案
我相信您的问题与 AttributeError: 'DiGraph' object has no attribute '_node' 中的问题类似
问题是被调查的图是在 networkx 1.x 中创建的,然后被 pickled。然后该图具有 networkx 1.x 对象所具有的属性。我相信这也发生在你身上。
您现在已将其打开,并将 networkx 2.x 中的工具应用于该图表。但是这些工具假定它是一个 networkx 2.x 有向图,具有 2.x 有向图所期望的所有属性。特别是它希望为节点定义 _succ
,这是 1.x DiGraph 没有的。
所以这里有两种我认为可行的方法:
短期解决方案删除 networkx 2.x 并替换为 networkx 1.11。
这不是最优的,因为 networkx 2.x 更强大。此外,为在 2.x 和 1.x 中工作而编写的代码(遵循您提到的迁移指南)在 1.x 中效率较低(例如,1.x 代码在某些地方使用列表和2.x 代码使用生成器)。
长期解决方案将 1.x 图转换为 2.x 图(我无法轻松测试,因为目前我的计算机上没有 1.x - 如果有人尝试这样做,请发表评论说明这是否有效以及是否您的网络已加权):
#you need commands here to load the 1.x graph G
#
import networkx as nx #networkx 2.0
H = nx.DiGraph() #if it's a DiGraph()
#H=nx.Graph() #if it's a typical networkx Graph().
H.add_nodes_from(G.nodes(data=True))
H.add_edges_from(G.edges(data=True))
data=True
用于确保保留所有边/节点权重。 H
现在是一个 networkx 2.x 有向图,其边和节点具有 G
所具有的任何属性。 networkx 2.x 命令应该适用于它。
额外的长期解决方案联系其他研究人员并警告他/她该代码示例现在已过时。
关于python - networkx DiGraph 属性错误 self._succ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016596/
在 Julia 中,我可以使用编写得很好的 Graphs.jl 库轻松创建图形: julia> using Graphs julia> g = SimpleDiGraph(2) {2, 0} dire
我想按节点获取一个子图(红色区域): 子图由从输入节点可到达的所有节点组成。 like G.subgraph(3) returns a new DiGraph from the red area. 例
我有一个带子图的有向图,其中节点的顺序很重要。 例如我的图有两个子图,都是线性的1-->2-->3 & 9-->8-->7-->6 注意:节点名称将是随机且唯一的,图中没有循环 NG = nx.DiG
我正在编写一个类,该类继承自 python 中开源 networkx 包的 DiGraph.py。 在我的类中的某些方法中,我需要搜索具有特定度数(有向图的出度数或入度数)的节点并返回它们。 此类将与
我的 csv 文件中有类似于以下内容的数据: a,b,50 b,c,60 b,e,25 e,f,20 z,n,10 x,m,25 v,p,15 我正在尝试使用 NetworkX 和 Matplotli
我正在使用 NetworkX 实现有向图。源是红色节点。我需要确定从红色节点开始的第一个节点,它有两个邻居(在“流向”)。如果我遍历所有节点——它看起来像是随机的。如果有人可以提供帮助,那就太好了!
有没有一种快速方法可以将networkx MultiDiGraph对象转换为DiGraph?我正在创建一个 scale_free_graph使用此代码: import networkx as nx G
上下文:我正在尝试运行另一位研究人员的代码 - 它描述了湾区道路网络的交通模型,该模型容易受到地震灾害的影响。我是 Python 的新手,因此非常感谢您帮助我调试以下错误。 问题:当我尝试按照 REA
我正在尝试对杜威十进制分类法进行一些图形分析,以便我可以在两本书之间划清界限。 DDC有几个关系:“hierarchy”,“see-also”,“class-elsewhere”,这里我用不同的颜色来
我有一些关系数据想要加载到 NetworkX 中,并最终将其转换为加权图。 本质上,关系边是有向和加权的,我想在转换图形时保留权重属性。使用以下代码,我能够将关系边从字典加载到 MultiDiGrap
我有一个 networkx 有向图。 >> G = nx.DiGraph() >> G.add_edges_from(product([0],[1,2])) # product is itertool
假设我在 NetworkX 中制作有向图: import networkx as nx G = nx.DiGraph() n = ["A","B","C","D","E","F","H","I","J
我有兴趣使用 Networkx Python包执行network analysis在 convolutional neural networks .为了实现这一点,我想提取 edge和 weight信
问题 如何将 graphviz.dot.Digraph 转换为 networkx.Graph(或其任何子类)? 动机 LightGBM 是基于树的算法的实现,有一个返回 graphviz.dot.Di
我是一名优秀的程序员,十分优秀!