NetworkX 2.7#
发布日期:2022年2月28日
支持Python 3.8、3.9和3.10
NetworkX是一个用于创建、操作和研究复杂网络结构、动态和功能的Python包。
更多信息,请访问我们的 网站 和我们的 示例库 。 请将评论和问题发送至 networkx-discuss 邮件列表 。
亮点#
此版本是经过7个月的工作,由33位贡献者提交了超过166个拉取请求而发布的。亮点包括:
Warning
由于错误修复,在版本2.7中观察到的哈希值在
weisfeiler_lehman_graph_hash
的输出中已更改。有关详细信息,请参见 gh-4946。
这意味着比较使用不同版本的NetworkX(即版本2.7之前和之后)计算的相同图的哈希可能错误地导致同构测试失败(同构图始终具有匹配的Weisfeiler-Lehman哈希)。
建议用户在升级时重新计算可能存在的任何存储的图哈希。
放弃对Python 3.7的支持。
添加了解决非对称旅行推销员问题的Asadpour算法:
asadpour_atsp
。添加了Louvain社区检测算法:
louvain_communities
和louvain_partitions
。删除了对
numpy.matrix
类的所有内部使用,并对所有返回numpy.matrix
实例的函数添加了一个FutureWarning
。numpy.matrix
类将在NetworkX 3.0中被2Dnumpy.ndarray
实例取代。添加了对
scipy.sparse
数组接口的支持。这包括to_scipy_sparse_array
和from_scipy_sparse_array
。在NetworkX 3.0中, 稀疏数组将取代稀疏矩阵成为scipy.sparse
的主要接口。新代码应该使用to_scipy_sparse_array
和from_scipy_sparse_array
,而不是它们的矩阵对应物。 此外,许多当前返回稀疏矩阵的函数现在会引发FutureWarning
,以指示它们将在NetworkX 3.0中返回稀疏数组。在
to_numpy_array
中添加了通用dtype支持。 这增加了对通用属性的支持,例如带有复杂权重的邻接矩阵。这还为处理多图权重中的通用减少函数提供了支持,例如mean
或median
。最后,这还包括对结构化dtype的支持,这使得可以创建多属性邻接矩阵,并取代不太通用的to_numpy_recarray
。添加了对多图上计算介数中心性的支持。
在
greedy_modularity_communities
中添加了对有向图和多重图的支持。
GSoC PRs#
我们添加了四个Google暑期编程活动项目的工作:
- `Louvain社区检测算法`_
程序:Google暑期编程活动2021
贡献者: @z3y50n
提案链接: GSoC 2021: 社区检测算法
- `Asadpour有向旅行商问题算法`_
程序:Google暑期编程活动2021
贡献者: @mjschwenne
提案链接: GSoC 2021: Asadpour算法
- 教学笔记本: `有向无环图和拓扑排序`_
程序:Google暑期编程活动2021
贡献者: @vdshk
- 教学笔记本: `图的同配性`_ 和 `网络流分析和Dinitz算法`_
程序:Google暑期编程活动2021
贡献者: @harshal-dupare
改进#
[ #4740 ] 添加Asadpour算法来解决非对称旅行商问题。
[ #4897 ] 改进
nx.is_matching
、nx.is_maximal_matching
和nx.is_perfect_matching
的验证和性能。[ #4924 ] 修复计算
nx.common_neighbor_centrality
时处理断开图的问题。[ #4929 ] 添加Louvain社区检测。
[ #4946 ] 添加Weisfeiler-Lehman哈希子图哈希。
[ #4950 ] 在
greedy_modularity_communities
中添加一个n_communities
参数,以在找到所需数量的社区时终止搜索。[ #4965 ] 和 [ #4996 ] 修复
greedy_modularity_communities
中重新标记节点的处理。[ #4976 ] 为多重图添加介数中心性。
[ #4999 ] 修复有向图的
degree_assortativity_coefficient
。[ #5007 ] 为
greedy_modularity_communities
添加对有向图和多重图的支持。[ #5017 ] 改进
descendants
和ancestors
的实现和文档。[ #5019 ] 改进有向无环图模块的文档和测试。
[ #5029 ] 改进
descendants_at_distance
的文档和测试。[ #5032 ] 改进
complement_edges
的性能。[ #5045 ] 将
geometric_edges
添加到nx
命名空间。[ #5051 ] 为使用
read_edgelist
读取数据添加注释字符的支持。[ #5052 ] 改进
transitive_closure
的性能,并添加对无向图和多重图的支持。[ #5058 ] 改进以GraphML格式写入数据时的异常处理。
[ #5065 ] 改进
greedy_modularity_communities
对浮点权重和分辨率值的支持。[ #5077 ] 修复有向图中
fast_gnp_random_graph
中的边概率。[ #5086 ] 修复
lowest_common_ancestors
中的缺陷。[ #5089 ] 添加
find_negative_cycle
以在加权图中查找负循环。[ #5099 ] 改进二元操作符的文档和测试。
[ #5104 ] 添加对自环边的支持,并改进
vertex_cover
的性能。[ #5121 ] 改进
*_all
二元操作符的性能。[ #5131 ] 允许在为DiGraphs绘制边时
edge_style
为样式列表。[ #5139 ] 添加对
scipy.sparse
数组接口的支持。[ #5144 ] 改进
node_classification
函数的可读性。[ #5145 ] 采用Python 3.8中添加的
math.hypot
。[ #5153 ] 修复具有非数值节点的图中的
multipartite_layout
。[ #5154 ]
允许 arrowsize
成为绘制边缘箭头大小的列表。
- [ #5172 ]
添加
nodes
关键字参数到find_cliques
,以支持查找仅包含一组节点的最大团。
[ #5197 ] 通过高级索引改进
resistance_distance
。[ #5216 ] 使
omega()
更接近已发布的算法。该值略有变化。lattice_reference()
中的niter
参数默认值从1更改为5,omega
中从100更改为5。[ #5217 ] 提高
betweenness_centrality
的性能和可读性。[ #5247 ] 提高用于社区检测的异步标签传播算法
asyn_lpa_communities
的性能。[ #5250 ] 为
to_numpy_array
添加通用dtype支持。[ #5285 ] 通过从原始出版物更新到加权版本,改进
karate_club_graph
。[ #5287 ] 改进
json_graph
的输入验证。[ #5288 ] 提高
strongly_connected_components
的性能。[ #5324 ] 为
to_numpy_array
添加对结构化dtype的支持。[ #5336 ] 为随机数生成添加对
numpy.random.Generator
接口的支持。
API更改#
由
rescale_layout_dict
返回的字典中的值现在是numpy.ndarray
对象,而不是元组。这使得rescale_layout_dict
的返回类型与所有其他布局函数的返回类型一致。在
google_matrix
中添加了FutureWarning
,指示在NetworkX 3.0中返回类型将从numpy.matrix
对象更改为numpy.ndarray
。在
attr_matrix
中添加了FutureWarning
,指示在NetworkX 3.0中返回类型将从numpy.matrix
对象更改为numpy.ndarray
对象。is_*_matching
函数现在对不在G中的节点引发异常。
弃用#
[ #5055 ] 弃用
random_state
别名,改用np_random_state
。[ #5114 ] 弃用
union
中的name
关键字参数,因为它未被使用。[ #5143 ]
废弃 euclidean
,推荐使用 math.dist
。
- [ #5166 ]
废弃
node_classification
中的hmn
和lgc
模块。
[ #5262 ] 废弃
to_scipy_sparse_matrix
和from_scipy_sparse_matrix
,推荐分别使用to_scipy_sparse_array
和from_scipy_sparse_array
。[ #5283 ] 从
networkx.generators.small
模块中废弃make_small_graph
和make_small_undirected_graph
。[ #5330 ] 废弃
to_numpy_recarray
,推荐使用带有结构化dtype的to_numpy_array
。[ #5341 ] 废弃冗余的
info
。
已合并的PR#
共提交了166次更改。
在读取/解析edgelist时支持
comments=None
(#5051)在gml文档字符串中添加参考链接到de/stringizers。 (#5053)
添加weisfeiler lehman子图哈希 (#4946)
废弃
random_state
装饰器 (#5055)问题#5023的bug修复:single_source_dijkstra中的特殊情况bug (#5033)
更具信息量的GraphML异常 (#5058)
tutorial.rst的微小更新并为nodes/edges的data方法添加文档字符串 (#5039)
文档
geometric_edges
并将其添加到主命名空间 (#5045)修复
trophic_levels
文档中的小错误 (#5087)重构
transitive_closure
(#5052)修复有向图的fast_gnp_random_graph(问题#3389) (#5077)
通过调用正确的方法获取边的数量 (#5095)
更新文档中的指导项目部分 (#5056)
为最短路径节点检查测试参数化 (#5078)
创建FUNDING.yml
废弃union名称参数 (#5114)
更新FUNDING.yml
vertex_cover:为自循环节点添加支持 (#5104)
更新核心开发团队 (#5119)
算法/operators/all.py中更快的运算符 (#5121)
文档:为已完成项目的提案添加链接 (#5122)
rescale_layout和rescale_layout_dict的字典输出中保持一致的返回类型 (#5091)
将异常变量名e更改为err (#5130)
assortativity文档和代码中的微小调整 (#5129)
允许边样式为有向图的样式列表 (#5131)
为operators/binary.py添加示例和微小的文档重构 (#5099)
为gnp生成器的随机图测试套件改进(问题#5092) (#5115)
添加关于检查路径存在性的说明到all_simple_paths。 (#5059)
修复装饰器中引发异常的消息。 (#5136)
为FancyArrowPatches的linestyle测试进行重构。 (#5132)
放弃Py37 (#5143)
使用math.hypot (#5145)
将pyupgrade添加到pre-commit (#5146)
在Python 3.10上进行测试 (#4807)
使用black 21.9b0 (#5148)
使用sphinx 4.2 (#5150)
更新示例要求 (#5151)
更新nx_pylab绘制边颜色和宽度测试 (#5134)
重构node_classification以提高简洁性和可读性 (#5144)
添加临时的pyparsing固定版本以修复CI。(#5156)
添加箭头大小为列表的选项。(#5154)
列出策略。(#5159)
修复问题5123的bug。(#5153)
在py3.10上测试scipy和pandas。(#5174)
弃用
node_classification
包中的hmn
和lgc
模块。(#5166)删除将ax.transOffset传递给LineCollection的部分。(#5173)
添加使用bellman_ford查找负循环的函数。(#5089)
在贡献者FAQ中添加关于算法接受政策的问答。(#5177)
文档:修复加权最短路径文档中的拼写错误。(#5181)
撤销“添加临时的pyparsing固定版本以修复CI。(#5156)” (#5180)
仅在使用时计算最短路径长度。(#5183)
添加Mypy类型检查基础设施。(#5127)
xfail pydot测试。(#5187)
从algebraicconnectivity中删除未使用的内部求解器。(#5190)
删除scipy 1.1行为的检查/注释。(#5191)
在Python 3.10上进行测试。(#5185)
为具有undir的祖先/后代添加回归测试。(#5188)
删除内部函数,改用高级索引。(#5197)
修复laplacian函数中的缺失导入和测试。(#5194)
调查预发布测试失败。(#5208)
放弃断言方法,改用assert语句。(#5214)
在mycielski.py中删除未使用的变量。(#5210)
使用队列而不是普通列表。(#5217)
添加关于矩阵->数组输出的FutureWarning到
google_matrix
中。(#5219)一些
np.matrix
清理。(#5218)放弃内部laplacian,改用laplacian_matrix。(#5196)
[MRG] 创建plot_subgraphs.py示例。(#5165)
在示例库中添加旅行推销员问题。(#4874)
修复DiGraph.edges()中nbunch参数的不一致文档。(#5037)
从与numpy/scipy/pytest rc的测试中更新兼容性。(#5226)
用
math.isclose
替换内部的close
函数。(#5224)修复Python 3.10中整数除法的弃用警告。(#5231)
对子图库示例进行润色和建议。(#5225)
使用新的包名称。(#5234)
允许在双向Dijkstra的权重函数中使用None边。(#5232)
添加关于分配问题的FAQ。(#5182)
更新开发依赖。(#5243)
使用tex符号更新文档中的次要问题。(#5244)
加快用于社区检测的异步标签传播的微小更改。(#5247)
small.py模块的文档字符串。(#5240)
使用scipy.sparse数组数据结构。(#5139)
更新sphinx。(#5272)
更新年份。(#5273)
更新额外依赖项。(#5263)
在文档中更新gexf网站链接。(#5275)
更新numpydoc。(#5274)
懒加载函数的初始设置。(#4909)
弃用scipy稀疏矩阵转换函数。(#5262)
修复lowest_common_ancestors(问题#4942)。(#5086)
使小图生成器节点测试更具体。(#5282)
在generators.small中使用from_dict_of_lists而不是make_small_graph。(#5267)
用高级索引重构
to_numpy_array
。(#5250)修复:更新louvain_partitions以适应阈值(在每个级别中将mod更新为new_mod)。(#5284)
添加对未连接图的异常。(#5287)
修复Tarjan的强连通分量算法实现,使其时间复杂度为
O(|E|+|V|)
,而不是O(|V|^3)
。(#5288)为空手道俱乐部图添加权重 (#5285)
修复出现在变量
__all__
中但文档中未提及的函数,适用于NX2.7 (#5289)更新到black的稳定版本 (#5296)
在
attr_matrix
中添加FutureWarning,通知用户返回类型的更改 (#5300)文档:将NXEP2的状态更改为已接受,添加决议 (#5297)
更新测试要求 (#5304)
更新scipy (#5276)
文档:更新文档以包括权重参数的可调用函数 (#5307)
更新pygraphviz (#5314)
在
to_numpy_recarray
文档字符串中记录默认dtype。 (#5315)删除未使用的AbstractSet。 (#5317)
废弃
make_small_graph
和make_small_undirected_graph
(#5283)使用使用示例更新
draw_
文档字符串 (#5264)为NX2.7进行更多的numpy.matrix清理 (#5319)
维护:清理同配性模块,删除未使用的变量 (#5301)
为绘制多边标签添加信息性异常。 (#5316)
可能是文档中函数的完整路径的解决方案 (#5049)
维护:清理链接分析模块,删除未使用的变量 (#5306)
使用pytest-mpl (#4579)
将omega保持在[-1, 1]范围内 (#5216)
添加支持以包含一组节点的最大团 (#5172)
维护:删除不必要的辅助函数,使用内置方法生成线图 (#5327)
不推荐从dict_keys对象中抽样。 (#5337)
添加对
numpy.random.Generator
的支持 (#5336)更新匹配函数以进行错误验证和加快速度 (#4897)
更新发布要求 (#5338)
为
to_numpy_array
添加结构化dtype (#5324)废弃
to_numpy_recarray
(#5330)第一次2.7版本发布说明。 (#5342)
添加pickle和yaml迁移信息 (#5345)
废弃info (#5341)
修复pandas警告 (#5346)
在3.11-dev上进行测试 (#5339)
指定2.7rc1版本发布
提升发布版本
更新发布流程 (#5348)
使用预期时间承诺更新指导项目信息 (#5349)
在示例中使用np.random.default_rng + 其他更新。 (#5356)
删除conda不支持的内容 (#5361)
在equidistant=True时修复spiral_layout (#5354)
修复文档 (#5364)
贡献者#
Will Badart
Ross Barnowski
Mathieu Bastian
Martin Becker
Anutosh Bhat
Alejandro Candioti
Divyansh
Andrew Eckart
Yossi Eliaz
Casper van Elteren
Simone Gasperini
Daniel Haden
Leo Klarner
Andrew Knyazev
Fabrizio Kuruc
Paarth Madan
Jarrod Millman
Achille Nazaret
NikHoh
Sultan Orazbayev
Dimitrios Papageorgiou
Aishwarya Ramasethu
Ryuki
Katalin Schmidt
Dan Schult
Mridul Seth
Cirus Thenter
James Trimble
Vadim
Hnatiuk Vladyslav
Aaron Z
eskountis
kpberry