NetworkX 2.5#

发布日期:2020 年 8 月 22 日

支持 Python 3.6、3.7 和 3.8。

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

欲了解更多信息,请访问我们的网站示例图库。请将意见和问题发送至networkx-discuss 邮件列表

亮点#

此版本是 92 位贡献者经过 10 个月工作、提交 200 多次的结果。亮点包括

  • 放弃支持 Python 3.5。

  • 添加 Pathlib 支持以处理文件。

  • 提升性能。

  • 更新了文档和测试。

  • 移除了为兼容 Python 2 设计的代码。

新函数

  • lukes_partitioning

  • triadic analysis functions

  • functions for trophic levels analysis

  • d_separated

  • is_regular and other regular graph measures

  • graph_hash using Weisfeiler Lehman methods

  • common_neighbor_centrality (CCPA link prediction)

  • max_weight_clique

  • path_weight and is_path

  • rescale_layout_dict

  • junction_tree

新生成器

  • paley_graph

  • interval_graph

新布局算法

  • multipartite_layout

改进#

  • 添加治理文档、开发者指南和社区结构

  • 实施明确的弃用策略。

  • 启动 NX 增强提案 (NXEP) 系统

  • 优化 single_source_shortest_path

  • 改进了 shortest_path 例程中“weight”规范的一致性

  • 减少 numpy.matrix 的使用,numpy 不鼓励使用它。

  • 改进了线条颜色

  • 搜索引擎对文档的处理更好

  • lattice、grid_graph 和 grid_2d_graph 可以使用 dim=tuple

  • 修复 kamada_kawai_layout 算法的初始化器

  • moral 和 threshold 函数现已包含在命名空间和文档中

  • 绘制时更好地缩放箭头

  • 随机 lobster 图的创建更加均匀

  • 允许在迭代 connected_components 期间编辑图

  • 在转换 pandas DataFrame 时更好地处理列

  • 允许 simrank_similarity 接受有向图输入

  • 确保 VoteRank 能力为非负

  • 加速 kernighan_lin_bisection

  • 加速负权重环检测

  • tree_isomorphism

  • rooted_tree_isomorphism

  • Gexf 边属性“label”现可用

API 变更#

  • contracted_nodes 中启用了“copy”标志参数

  • 允许部分周期性格子

  • minimum_st_node_cut 的返回值现在始终是一个集合

  • 从 create_py_random_state 中移除未使用的“has_numpy”参数

  • 修复了绘制空节点和边时的返回值

  • 允许将边的 set 和 frozenset 作为输入传递给 nx.Graph()

  • “weight”可以是 astar, directional_dijkstra, all_shortest_path 的函数

  • 允许 GraphML 边写入时使用命名键 ID

  • nx.draw 及其相关函数中现在会检查所有关键字的有效性

  • EdgeDataView 的“in”运算符检查节点是否“在 nbunch 中”

  • 从 minimum weight full matching 中移除完整性条件

  • 在 bfs 遍历中排序邻居的选项

  • draw_networkx 接受 numpy 数组作为 edgelist

  • 将 2 个节点映射到同一节点的 relabel_nodes 现在可以创建多重边

  • steiner_tree 支持 MultiGraph

  • 向 view_pygraphviz 添加 show kwarg (#4155)

  • 准备将 chordal_graph_cliques 变为生成器 (#4162)

  • GraphML 读取器关键字 force_multigraph 即使没有多重边也会创建 MultiGraph

弃用#

  • [#3680] 弃用 make_str(x),改用 str(x)。弃用 is_string_like(obj),改用 isinstance(obj, str)

  • [#3725] 弃用 literal_stringizerliteral_destringizer

  • [#3983] 弃用 reversed 上下文管理器。

  • [#4155] 弃用 display_pygraphviz

  • [#4162] 弃用 chordal_graph_cliques 返回集合。

  • [#4161] 弃用 betweenness_centrality_source

  • [#4161] 弃用 edge_betweenness

  • [#4161] 重命名 _naive_greedy_modularity_communitiesnaive_greedy_modularity_communities

合并的 PR#

总共提交了 256 项变更。

  • 提升发布版本

  • 更新发布流程

  • 放弃支持 Python 3.5

  • 修复文档中的拼写错误

  • 移除旧的 Python 2 代码

  • 启用更多 doctests

  • 修复 pydot 测试

  • 不清楚如何测试测试辅助函数

  • Pathlib 在 Py 3.4 中引入

  • 移除使用 sys.version_info 检测 Python 2 的代码

  • 使用 yield from

  • 对测试进行 PEP8 修复

  • 移除未使用的导入

  • 使用 pytest.importorskip

  • PEP8 修复

  • 移除未使用的导入

  • 添加 pep8_speaks conf

  • 使用 itertools accumulate

  • 修复问题 3610:gexf.py 的 version 属性中的 Bug

  • 忽略 W503

  • 在没有可选依赖项的情况下运行 doctest

  • 跳过缺少依赖项时的 doctests

  • 移除 sed 导入

  • 启用测试 (#3678)

  • contracted_nodes 添加 copy 标志 (#3646)

  • 弃用 make_str

  • 弃用 is_string_like

  • 修复 PEP8 问题

  • 启用 ThinGraph 测试 (#3681)

  • 优化 _single_shortest_path_length (#3647)

  • 修复问题 3431:在 make_small_graph 接收到错误输入时返回错误 (#3676)

  • 避免由于导入引起的重复测试 (#3684)

  • 修复拼写错误:Laplacian -> Laplacian (#3689)

  • 添加测试

  • Lukes 算法实现 (#3666)

  • 移除围绕 starmap 的 shim

  • 添加回图库

  • 向 LineCollection 添加 colormap 和 color limits (#3698)

  • 修复 matplotlib 弃用警告 (#3697)

  • 采纳 SciPy CoC

  • 更新文档以更准确描述 G.neighbors 的速度 (#3699)

  • 使用规范 URL 帮助搜索引擎

  • 移除重复的 license 参数 (#3710)

  • 修复一些地方关于异常的文档问题

  • 修复更多关于异常的文档问题

  • 移除旧的 Python 2 代码

  • 移除模块顶部的样板

  • 移除多余的编码信息

  • 更新示例

  • 简化包文档字符串

  • 移除非可执行文件中的 shebang

  • 添加贡献者

  • K-truss 是针对位于 (k-2) 个三角形中的边定义的,而不是 k 个三角形 (#3713)

  • 在 Python 3.8 上启用可选测试

  • 修复 test_numpy_type 以在 Python 3.8 下通过

  • 添加数据文件链接

  • 弃用 Python 2/3 兼容代码

  • 更新风格

  • 更新风格

  • 分离易于安装和难于安装的可选依赖项

  • 默认安装可选依赖项

  • 重构测试

  • 子图复制示例代码:为 is_multigraph 添加括号 (#3734)

  • 修复拼写错误 (#3735)

  • 修复引用链接 (#3741)

  • 从 setup.py 中移除 f 字符串,以便在 < py3.6 时提供清晰的错误消息 (#3738)

  • 3511 gml 列表支持 (#3649)

  • 添加了 linestyle 作为参数 (#3747)

  • 链接到示例所需的文件 (#3752)

  • 修复了一个拼写错误

  • 合并 pull request #3759 来自 yohm/patch-1

  • 移除未使用的变量,使 grid_graph 支持 dim=tuple (#3760)

  • 数独生成器问题 3756 (#3757)

  • 修复 shall_layout 中单节点 shell 的缩放问题 (#3764)

  • 添加 triadic analysis functions (#3742)

  • 提高测试覆盖率

  • 更新 contribs 脚本

  • 将 % 格式转换为 fstring

  • 升级到 Py36 语法

  • 升级到 Py36 语法

  • 更新字符串格式

  • 修复 scipy 弃用警告

  • 更新年份

  • 抑制已知警告 (#3770)

  • 修复 asyn_fluidc 的文档字符串 (#3779)

  • 修复 #3703 (#3784)

  • 修复 kamada_kawai_layout 的初始化器 (networkx #3658) (#3782)

  • 次要注释问题 (#3787)

  • 将 moral 和 threshold 包添加到主命名空间 (#3788)

  • 向 bidirectional_dijkstra 和 astar 添加 weight 函数 (#3799)

  • 绘制有向边时,正确缩小箭头的起点侧。#3805 (#3806)

  • 部分周期性格子的选项 (networkx #3586) (#3807)

  • 防止 subgraph_is_monomorphic 出现 KeyError (#3798)

  • Trophic Levels #3736 (#3804)

  • UnionFind 的 union 未准确跟踪集合大小 (#3810)

  • 移除空白字符 (#3816)

  • 重新考虑 lobster 生成器 (#3822)

  • 修复拼写错误 (#3838)

  • 修复拼写错误,稍微混淆了含义 (#3840)

  • 为问题 #3846 添加修复 (#3848)

  • 从 create_py_random_state 移除未使用的变量 has_numpy (#3852)

  • 修复绘制空节点和边时的返回值 #3833 (#3854)

  • 使 connected_components 在组件集修改时安全 (#3859)

  • 修复文档字符串中的示例 (#3866)

  • 更新 README.rst 网站链接为 https (#3888)

  • 拼写错误 (#3894)

  • 使 CONTRIBUTING.rst 更清晰 (#3895)

  • 修复 nx.info() 的文档,以及必要的测试 (#3893)

  • 为 jit_data 函数添加了 json dumps 的默认参数 (#3891)

  • 将 nx.Digraph 修复为 nx.DiGraph (#3909)

  • 使用 Sphinx 3.0.1

  • 修复 Sphinx 弃用警告

  • 在文档中添加 logo

  • 允许边节点的集合 (#3907)

  • 当将 'id' 转换为 int() 失败时添加额外信息。(解决 #3910)(#3916)

  • 添加 paley graph (#3900)

  • 将 paley graph 添加到文档 (#3927)

  • 更新 astar.py (#3947)

  • 对位置参数使用关键字 (#3952)

  • 修复文档 (#3959)

  • 为 GraphML 写入添加命名键 ID 的选项 (#3960)

  • 修复文档 (#3958)

  • all_shortest_paths 中零权重边的正确处理 (#3783)

  • 修复文档拼写错误 (#3965)

  • 修复:simrank_similarity_numpy 的文档 (#3954)

  • 修复 #3930 的问题(转换为 pd.DataFrame 时 source 和 target 列未被覆盖)(#3935)

  • 为 #3948 添加最短简单路径的 weight 函数 (#3949)

  • 修复 communicability 的定义 (#3973)

  • 修复 simrank_similarity 接受有向图输入的问题 (#3961)

  • 修复投票能力的削弱问题 (#3970)

  • 实现了更快的 sweep 算法用于 kernighan_lin_bisection (#3858)

  • 修复问题 #3926 (#3928)

  • 更新 CONTRIBUTORS.rst (#3982)

  • 弃用 context_manager reversed,倾向于使用 reversed_view (#3983)

  • 更新 CONTRIBUTORS.rst (#3987)

  • 增强 voterank (#3972)

  • 添加 d-separation 算法 (#3974)

  • 文档:向 find_cycle 添加“另请参阅”部分 (#3999)

  • 改进 subgraph_view filter_edge 的文档 (#4010)

  • 修复 dag.py 中的异常原因 (#4000)

  • 在 to_networkx_graph 中使用 raise from 处理异常 (#4009)

  • 修复 12 个模块中的异常原因和消息 (#4012)

  • 修复拼写错误:np.int -> np.int_ (#4013)

  • 修复一个拼写错误 (#4017)

  • 修改文档 (#3981)

  • regular graphs 的算法 (#3925)

  • 拼写错误 Hand 应该为 Hans (#4025)

  • 文档:向 CONTRIBUTING. 添加测试要点 (#4035)

  • 更新 Sphinx

  • 更新可选/测试依赖项

  • 添加治理/价值观/nexp/路线图

  • 改进教程中 None 的格式 (#3986)

  • 修复文档字符串中 DiGraph 的拼写 (#3892)

  • 更新指向 Py3 文档的链接 (#4042)

  • 添加仅清除边的方法 (#3477)

  • 修复 codebase 中各处的异常原因和消息 (#4015)

  • 在 draw_networkx 中显式处理 kwds (#4033)

  • 返回空生成器而非空列表 (#3967)

  • 正确推断 numpy 浮点类型 (#3919)

  • 维护:更新 from_graph6_bytes 参数/文档 (#4034)

  • 向文档添加 URL/横幅/标题栏 (#4044)

  • 添加负环检测启发式算法 (#3879)

  • 移除未使用的导入 (#3855)

  • 修复 generate_gml(G, stringizer=None) 中的 Bug (#3841)

  • 当 k < 2 时抛出 NetworkXError (#3761)

  • 维护:从 alg. conn. 模块中移除 np.matrix

  • 维护:从 attribute_ac. 中移除 np.matrix

  • 维护,测试:参数化 TestAlgebraicConnectivity 中的方法

  • 维护,测试:参数化 buckminsterfullerene 测试

  • 维护,测试:移除未使用的 _methods 类属性

  • 维护,测试:参数化 TestSpectralOrdering

  • 排除自循环/递归边 (#4037)

  • 进行中:更改 EdgeDataView __contains__ 功能(第二次尝试)(#3845)

  • 为多重图简单路径索引边 (#3358)

  • 增强:添加新的图哈希功能

  • 修复 pandas 弃用警告

  • 组织移除弃用代码

  • 更新 sphinx

  • 增强:向 GED 添加根和超时 (#4026)

  • 使图库更醒目

  • 添加 interval_graph 及其单元测试的实现 (#3705)

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

  • 从 minimum weight full matching 中移除完整性条件 (#4057)

  • 实现了 multipartite_layout (#3815)

  • 添加了新的 Link Prediction 算法 (CCPA) (#4028)

  • 添加在 bfs 遍历期间对节点邻居进行排序的选项 (#4029)

  • 测试:移除测试中的 int64 规范 (#4055)

  • 运行 pyupgrade –py36plus

  • 移除尾随空格

  • 告知 psf/black 忽略特定的 np.arrays

  • 使用 black 格式化

  • 为 psf/black 添加 pre-commit hook

  • 合并 pull request #4060 来自 jarrodmillman/black

  • 修复匹配文档字符串中的几个拼写错误 (#4063)

  • 修复 to_scipy_sparse_matrix 函数的 bug (#3985)

  • 更新 minimum weight full matching 的文档 (#4062)

  • 添加 maximum weight clique 算法 (#4016)

  • 创建 networkx 对象后清除 pygraphviz 对象 (#4070)

  • 在 travis 上使用较新的 osx (#4075)

  • 更新 brew 后安装 Python (#4079)

  • 添加指向 black 的链接 (#4078)

  • 改进关于 erdos-reyni 图生成器别名的文档 (#4074)

  • 维护:从 INSTALL 中移除依赖版本信息 (#4081)

  • 简化顶层目录 (#4087)

  • 文档:修复 laplacianmatrix 中的返回类型 (#4090)

  • 在文档中添加 modularity (#4096)

  • 允许 G.remove_edges_from(nx.selfloops_edges(G)) (#4080)

  • 维护:移除私有函数,倾向于使用 numpy 内置函数 (#4094)

  • 允许在 from_pandas_edgelist 中为多重边使用自定义键 (#4076)

  • 修复 planar_layout 文档字符串 (#4097)

  • 文档:关于 numpy.matrix 的措辞修改

  • 维护:内部移除 to/from_numpy_matrix

  • 合并 pull request #4093 来自 rossbar/rm_npmatrix

  • 移除版权样板 (#4105)

  • 更新贡献者指南 (#4088)

  • 添加计算指定路径成本的函数 (#4069)

  • 更新 from_pandas_edgelist 的文档字符串 (#4108)

  • 将 max_weight_clique 添加到文档 (#4110)

  • 更新弃用策略 (#4112)

  • 改进 modularity 计算 (#4103)

  • 添加团队图库 (#4117)

  • CI:为文档构建设置 circle CI (#4119)

  • 构建 pdf (#4123)

  • 文档:教程阅读建议和改进 (#4121)

  • 在 travis 上启用 3.9-dev (#4124)

  • 修复 parse_edgelist 在多个属性时的行为 (#4125)

  • CI:临时修复 CI latex 安装问题 (#4131)

  • 更新 draw_networkx 以接受 numpy 数组作为 edgelist (#4132)

  • 添加 tree isomorphism (#4067)

  • 维护:在 to_networkx_graph 中切换到基于 abc 的 isinstance 检查 (#4136)

  • 使用 dict 而非 OrderedDict,因为从 Python 3.6 开始 dict 默认有序 (#4145)

  • 维护:修复 parse_edgelist 的问题 (#4128)

  • 更新 circleci 镜像上的 apt-get (#4147)

  • 添加 rescale_layout_dict 以更改 layout_dicts 的比例 (#4154)

  • 更新依赖项

  • 从 requirements 中移除 gdal

  • relabel_nodes 现在在多重图中保留边 (#4066)

  • 维护,测试:提高 nx_agraph 模块的覆盖率 (#4156)

  • 通过后处理使 steiner_tree 支持 MultiGraphs (#4160)

  • junction_tree for #1012 (#4004)

  • API:向 view_pygraphviz 添加 show kwarg (#4155)

  • 准备将 chordal_graph_cliques 变为生成器 (#4162)

  • 文档更新 (#4161)

  • 从 doctests 中移除不必要的 nx 导入 (#4163)

  • GraphML 中的 MultiGraph 带有显式边 ID #3470 (#3763)

  • 更新 sphinx 依赖 (#4164)

  • 在 GEXF 写入器中添加边标签作为可选属性 (#3347)

  • v2.5 发布说明初稿 (#4159)

  • 指定 2.5rc1 发布

  • 提升发布版本

  • 更新发布说明中的弃用内容 (#4166)

  • 文档:更新 threshold 模块中公共函数的文档字符串 (#4167)

  • 格式化文档字符串中的 python 代码 (#4168)

  • 文档,构建:修复标记错误导致的文档构建警告 (#4174)

它包含以下 3 次合并

  • 修复一个拼写错误 (#3759)

  • 使用 psf/black (#4060)

  • 维护:替换内部使用 to_numpy_matrix 和 from_numpy_matrix (#4093)

贡献者#

  • Adnan Abdulmuttaleb

  • Abhi

  • Antoine-H

  • Salim BELHADDAD

  • Ross Barnowski

  • Lukas Bernwald

  • Isaac Boates

  • Kelly Boothby

  • Matthias Bruhns

  • Mahmut Bulut

  • Rüdiger Busche

  • Gaetano Carpinato

  • Nikos Chan

  • Harold Chan

  • Camden Cheek

  • Daniel

  • Daniel-Davies

  • Bastian David

  • Christoph Deil

  • Tanguy Fardet

  • 赵丰 (Zhao Feng)

  • Andy Garfield

  • Oded Green

  • Drew H

  • Alex Henrie

  • Kang Hong Jin

  • Manas Joshi

  • Søren Fuglede Jørgensen

  • Aabir Abubaker Kar

  • Folgert Karsdorp

  • Suny Kim

  • Don Kirkby

  • Katherine Klise

  • Steve Kowalik

  • Ilia Kurenkov

  • Whi Kwon

  • Paolo Lammens

  • Zachary Lawrence

  • Sanghack Lee

  • Anton Lodder

  • Lukas Lösche

  • Eric Ma

  • Mackyboy12

  • Christoph Martin

  • Alex Marvin

  • Mattwmaster58

  • James McDermott

  • Jarrod Millman

  • Ibraheem Moosa

  • Yohsuke Murase

  • Neil

  • Harri Nieminen

  • Danny Niquette

  • Carlos G. Oliver

  • Juan Orduz

  • Austin Orr

  • Pedro Ortale

  • Aditya Pal

  • PalAditya

  • Jose Pinilla

  • PranayAnchuri

  • Jorge Martín Pérez

  • Pradeep Reddy Raamana

  • Ram Rachum

  • David Radcliffe

  • Federico Rosato

  • Tom Russell

  • Craig Schmidt

  • Jonathan Schneider

  • Dan Schult

  • Mridul Seth

  • Karthikeyan Singaravelan

  • Songyu-Wang

  • Kanishk Tantia

  • Jeremias Traub

  • James Trimble

  • Shashi Tripathi

  • Stefan van der Walt

  • Jonatan Westholm

  • Kazimierz Wojciechowski

  • Jangwon Yie

  • adnanmuttaleb

  • anentropic

  • arunwise

  • beckedorf

  • ernstklrb

  • farhanbhoraniya

  • fj128

  • gseva

  • haochenucr

  • johnthagen

  • kiryph

  • muratgu

  • ryan-duve

  • sauxpa

  • tombeek111

  • willpeppo