NetworkX 2.4#

发布日期:2019年10月16日

支持Python 3.5、3.6、3.7和3.8。 这是最后一个支持Python 3.5的版本。

NetworkX是一个用于创建、操作和研究复杂网络结构、动态和功能的Python包。

更多信息,请访问我们的 网站 和我们的 示例画廊 。 请将评论和问题发送到 networkx-discuss邮件列表

亮点#

此版本是由67位贡献者进行了6个月的工作,提交了200多次更改的结果。亮点包括:

  • 删除了1.x中的弃用代码

  • 支持Python 3.8

  • 切换到pytest进行测试

  • 最后一个支持Python 3.5的版本

新功能:

  • 重心函数

  • Bethe Hessian矩阵函数

  • 欧拉路径方法

  • 群体中心性度量

  • 子图单态

  • k-truss算法

  • 洋葱分解

  • 电阻距离

  • 星状三元组

  • 非随机性度量

  • 线性prufing

  • 最小权重二部匹配

  • 增量接近中心性

  • ISMAGS子图同构算法

  • 创建图的弦图

新生成器

  • 二项树生成器

  • 有向联合度生成器

  • 随机互联网AS图生成器

布局新功能

  • 螺旋节点布局例程

  • 支持3D布局

改进#

  • 允许平均最短路径使用Floyd-Warshall方法

  • 改进GML、GEXF、GraphML的读写

  • 允许字符串或json对象作为jit_graph的输入

  • 尝试在更多地方允许numpy.array输入代替列表

  • 更快的强连通分量

  • 更快的Floyd-Warshall优化

  • 更快的全局效率

  • 更快的传递闭包

  • 修复unionfind;betweenness_subset;lexico-topo-sort;A*; inverse_line_graph;async label propagation;edgelist reading; Gomory-Hu流方法;label_propagation;partial_duplication; shell_layout中只有1个节点的shell;from_pandas_edgelist

  • 文档改进和修复

API更改#

一个实用函数is_list_of_ints更名为is_bunch_of_ints 现在测试int(item)==item而不是isinstance(_, int) 这允许例如值为整数的浮点数。

添加实用程序make_list_of_ints将包含整数值的容器转换为整数列表

弃用#

移除的函数(在NetworkX 2.1中标记为弃用):

  • attracting_component_subgraphs

  • connected_component_subgraphs

  • weakly_connected_component_subgraphs

  • strongly_connected_component_subgraphs

  • biconnected_component_subgraphs

  • 有关如何获取子图的组件函数,请参阅文档。

移除的图对象方法(在2.1中标记为弃用)

  • G.add_path

  • G.add_cycle

  • G.add_star

  • G.nodes_with_selfloops

  • G.number_of_selfloops

  • G.selfloop_edges

  • 这些现在是NetworkX函数,例如nx.add_star(G, 5)

  • G.node –> 使用G.nodes

  • G.fresh_copy –> 使用 G.__class__

移除图形视图函数的旧名称。

  • ReverseView

  • SubGraph

  • SubMultiGraph

  • SubMultiDiGraph

  • SubDiGraph

  • GraphView

  • DiGraphView

  • MultiGraphView

  • MultiDiGraphView

  • MultiReverseView

  • 使用 reverse_view、subgraph_view 和 generic_graph_view。

合并的PR#

共提交了 205 处更改。

  • 提升发布版本号

  • 修复算法/遍历/edgebfs名称 (#3397)

  • 添加参考链接 (#3403)

  • 为 Harary 图生成器添加参考文献 (#3407)

  • 修正拼写错误:交换源和目标 (#3413)

  • 修复带有固定节点的 spring_layout bug (#3415)

  • 将 LFR_benchmark 移动到生成器中 (#3411)

  • 添加 barycenter 算法 (#2939)

  • 添加 bethe hessian 矩阵 (#3401)

  • 二项树生成器 (#3409)

  • 修复边颜色与节点颜色和描述不一致的问题 (#3395)

  • 添加用于群体中心度测量的模块 (#3421)

  • 改进 edgelist 的参见内容 (#3423)

  • 修正拼写错误 (#3424)

  • 添加关于自环的文档警告,用于 adamic_adar_index (#3427)

  • 修复 UnionFind 集合提取 (#3224)

  • write_graphml 示例添加必需参数 (#3429)

  • 修复 centrality betweenness subset (#3425)

  • 添加两个版本的 Simrank 相似度 (#3222)

  • 修正拼写错误

  • 合并拉取请求 #3436,来自 nandahkrishna/fix-typo-betweenness-centrality-subset-test

  • 重新排序并完善文档 (#3438)

  • 为依赖于 topological_sort 的函数添加 topo_order 参数 (#3447)

  • 实现子图单射 (#3435)

  • 在 random_degree_sequence_graph 的文档字符串测试中设置种子 (#3451)

  • 用 np.iterable 替换 cb.iterable (#3458)

  • 不要移除其他 pyplot 轴的刻度线 (#3476)

  • 修复 “G>raph Modelling Language” 中的拼写错误 (#3468)

  • Naive k-truss 算法实现 (#3462)

  • 添加 onion decomposition (#3461)

  • 新功能 - Resistance Distance (#3385)

  • 不支持 betweenness 的多重图 (#3454)

  • Wheels 仅支持 Python 3

  • 修复 Python 3.7 中的弃用警告 (#3487)

  • 修复 dfs_preorder_nodes 文档字符串中说 “edges” 而不是 “nodes” 的问题 (#3484)

  • 添加群体接近度和群体度中心度 (#3437)

  • 修正不正确的文档 (#3495)

  • 修复问题 #3493 - lexicographical_topological_sort() 中的错误 (#3494)

  • AT-free 图识别 (#3377)

  • 更新 introduction.rst (#3504)

  • 完整的连接操作和 cograph 生成器 (#3503)

  • 优化强连通分量算法 (#3516)

  • 为图添加非随机性度量 (#3515)

  • 为非随机性度量添加保障(输入图 G) (#3526)

  • 优化强连通分量算法 - 第二次尝试 (#3519)

  • 在问题 #3524 中发现的 bug 的小修复 (#3529)

  • 恢复检查 PyPy3 (#3514)

  • 线性 prufer 编码 (#3535)

  • 修复 inverse_line_graph (#3507)

  • 修复 A* 返回错误解决方案的问题 (#3508)

  • 实现二部图的最小权重完全匹配 (#3527)

  • 获取 #1054 的弦图 (#3353)

  • 为 DAGs 加速传递闭包计算 (#3445)

  • 在 write_graphml_lxml 中正确写入混合类型属性 (#3536)

  • 修复了inverse_line_graph()的一些边缘情况。(#3538)

  • 在to_numpy_array中明确说明了i.j约定。

  • 增量接近中心性(无向,无权图)(#3444)

  • 实现ISMAGS子图同构算法(#3312)

  • 修复了networkx.algorithms.community.label_propagation.asyn_lpa_communities中的错误(#3545)

  • 在导出到GML时,将非32位数字写为字符串。(#3540)

  • 尝试修复bug #3552 (#3554)

  • 添加有向联合度图生成器(#3551)

  • 拼写错误 (#3557)

  • 为二部图算法参考修复了一些文档问题 (#3555)

  • 相关函数中邻接矩阵的i,j约定

  • 从malch2/doc/update合并拉取请求 #3542

  • 将3.8-dev添加到travis

  • 为Py3.8修复字典迭代

  • 暂时忽略其他失败

  • 修复了get_edge_data的文档字符串中的拼写错误 (#3564)

  • 修复了错误的标题 (#3566)

  • 修复了文档字符串中的拼写错误 (#3568)

  • 修复并改进了graph.py中的文档字符串 (#3569)

  • 改进了图类选择表 (#3570)

  • 为图绘制添加了螺旋布局 (#3534)

  • #3575 返回3D布局的坐标 (#3576)

  • 处理Watts-Strogatz图生成器中的k==n情况

  • Floyd-Warshall优化 (#3400)

  • 使用Sphinx 2.2

  • 添加到asteroidal文档的缺失链接

  • 修复Sphinx警告

  • 修复Sphinx latexpdf构建

  • 更新贡献者列表 (#3592)

  • 从列表到集合的Prim (#3512)

  • 修复问题3491 (#3588)

  • 使Travis在Python 3.8失败时失败

  • 修复test_gexf以处理XML属性的默认序列化顺序

  • 删除Py2所需的未来导入

  • 添加internet_as_graph生成器 (#3574)

  • 从OutEdgeDataView中删除循环引用 (#3598)

  • 为draw_networkx_edges添加最小源和目标边距 (#3390)

  • 修复to_directed函数 (#3599)

  • 修复#3573:GEXF输出问题 (#3606)

  • 全局效率尝试加速 (#3604)

  • Bugfix: 在读取标签和id的值时添加了灵活性 (#3603)

  • 为average_shortest_path_length添加了floyd-warshall方法 (#3267)

  • 用==替换了is,并进行了轻微的pycodestyle修复 (#3608)

  • 修复了许多基于文档的问题 (#3609)

  • 解决了许多文档问题 (#3611)

  • 修复#3187 transitive_closure现在在存在循环时返回自循环 (#3613)

  • 添加对初始化pagerank_scipy的支持 (#3183)

  • 添加了Gomory-hu算法的最后7行修复 #3293 (#3614)

  • 实现了Euler Path函数 (#3399)

  • 修复了label_propagation.py中边的方向 (#3619)

  • 删除了未使用的random模块导入 (#3620)

  • 修复了partial_duplication_graph中的操作顺序 (#3626)

  • 将只有1个节点的壳保持在shell_layout中远离原点 (#3629)

  • 允许jit_graph读取json字符串或json对象 (#3628)

  • 修复了代码文档中的拼写错误 (#3621)

  • pycodestyle和greedy_coloring.py+tests的文档更新 (#3631)

  • 添加版本徽章

  • 从README加载长描述

  • 添加缺失的代码块 (#3630)

  • 将is_list_of_ints更改为make_list_of_ints (#3617)

  • 在from_pandas_edgelist中处理edgeattr当没有列匹配请求时 (#3634)

  • 制作v2.4版本发布说明草稿

  • 将开发说明转移到v2.4文件名中

  • 使用最新的pypy

  • 在macOS上测试Py 3.8

  • 在将inf/nan转换为GEXF之前添加属性类型检查 (#3636)

  • 修复sphinx错误,并在文档中为dijkstra_path/length添加single_source_dijkstra的链接 (#3638)

  • 记录subgraph_view (#3627)

  • 第一轮pytest修复

  • 使用类方法进行类设置/拆卸

  • 让CI使用pytest

  • 使用类方法进行类设置/拆卸,续。

  • 减少测试(直到我们使其正常工作)

  • 在测试文件中替换networkx import *的习语

  • 修复断言函数覆盖

  • 修复link_prediction中的静态方法

  • 部分修复v2userfunc测试

  • 修复图/有向图测试

  • 修复多重图检查

  • 修复多重有向图检查

  • 修复test_function检查

  • 修复distance_measures测试

  • 修复decorators测试

  • 修复test_mst中的一些raises

  • 修复clique测试

  • 修复yaml测试

  • 修复reportviews中的测试

  • 修复vf2测试

  • 修复mst测试

  • 修复gdal测试

  • 将nose.tools.assert_*函数转换为asserts

  • 删除未使用的导入

  • 修复一些警告

  • 更新测试说明

  • 重新启用所有测试平台

  • 修复一些__init__警告

  • 在test_coloring.py中替换nose yield测试

  • 添加测试、覆盖率和开发环境信息

  • 尝试pytestimportorskip

  • 另一种pytest.importorskip的变体

  • 修复拼写错误并重试

  • 删除弃用的weakly_connected_component_subgraphs

  • 在algorithms/tests中替换assert_almost_equal和raises

  • 在使用旧almost_equal的测试中设置places=0

  • 更新nx.test()

  • 让pytest运行doctests / 而不是sphinx

  • 撤销“删除弃用的weakly_connected_component_subgraphs”

  • 删除使用弃用函数的警告

  • 删除弃用的函数和方法。添加到发布说明中。

  • 修复subgraph_view测试

  • 删除弃用视图的测试并修复对弃用G.node的使用

  • 追踪使用弃用函数的情况

  • 修复弃用的add_path/star/cycle使用

  • 减少弃用函数的警告

  • 通过删除弃用函数来减少警告

  • convert_matrix演示如何使doctests正常工作的一种方法

  • 从示例中删除弃用内容

  • 对依赖于np.matrix的convert_matrix和其他内容进行更改

  • 清理doctest中的弃用代码

  • 进行更多doctest更正

  • 修复示例

  • 从generators中删除nose

  • 从utils中删除nose

  • 从classes中删除nose

  • 用pytest.raises替换nose.assert_raises

  • 用pytest.raises上下文管理器替换nose.raises

  • 用assert替换 eq_ok_

  • 为doctest使用pytest

  • 在发布说明中突出显示切换到pytest

  • 删除 from nose.tools import *

  • 删除nose.tools.SkipTest

  • 完成过渡到pytest

  • 合并拉取请求 #3639,来自stefanv/pytest-port

  • 使用AppVeyor测试Python 3.8

  • 合并拉取请求 #3648,来自jarrodmillman/windows-py3.8

  • 删除弃用的weakly_connected_component_subgraphs

  • 更新发布说明

  • 更新README

  • 宣布支持Python 3.8

  • 指定2.4rc1版本发布

  • 升级发布版本号

  • 移除剩余的SkipTests

  • 修复文档注释(#3644)(#3645)

  • 在AppVeyor上测试Py 3.8.0

  • 加快AppVeyor速度

  • 清理travis配置

  • 改进CI缓存

  • 在travis上更新Py 3.8

  • 合并拉取请求#3652来自jarrodmillman/speedup-appveyor

  • 完成发布说明

其中包含以下5个合并:

  • 修复介数中心性子集测试中的拼写错误(#3436)

  • 在to_numpy_array中明确说明i.j约定(#3542)

  • pytest端口(#3639)

  • 使用AppVeyor测试Python 3.8(#3648)

  • 清理和加速CI(#3652)

贡献者#

  • Rajendra Adhikari

  • Antoine Allard

  • Antoine

  • Salim BELHADDAD

  • Luca Baldesi

  • Tamás Bitai

  • Tobias Blass

  • Malayaja Chutani

  • Peter Cock

  • Almog Cohen

  • Diogo Cruz

  • Martin Darmüntzel

  • Elan Ernest

  • Jacob Jona Fahlenkamp

  • Michael Fedell

  • Andy Garfield

  • Ramiro Gómez

  • Haakon

  • Alex Henrie

  • Steffen Hirschmann

  • Martin James McHugh III

  • Jacob

  • Søren Fuglede Jørgensen

  • Omer Katz

  • Julien Klaus

  • Matej Klemen

  • Nanda H Krishna

  • Peter C Kroon

  • Anthony Labarre

  • Anton Lodder

  • MCer4294967296

  • Eric Ma

  • Fil Menczer

  • Erwan Le Merrer

  • Alexander Metz

  • Jarrod Millman

  • Subhendu Ranajn Mishra

  • Jamie Morton

  • James Myatt

  • Kevin Newman

  • Aaron Opfer

  • Aditya Pal

  • Pascal-Ortiz

  • Peter

  • Jose Pinilla

  • Alexios Polyzos

  • Michael Recachinas

  • Efraim Rodrigues

  • Adam Rosenthal

  • Dan Schult

  • William Schwartz

  • Weisheng Si

  • Kanishk Tantia

  • Ivan Tham

  • George Valkanas

  • Stefan van der Walt

  • Hsi-Hsuan Wu

  • Haochen Wu

  • Xiangyu Xu

  • Jean-Gabriel Young

  • bkief

  • daniel-karl

  • michelb7398

  • mikedeltalima

  • nandahkrishna

  • skhiuk

  • tbalint