路线图#

路线图旨在对项目进行更大的根本性更改,这些更改可能需要数月或数年的开发人员时间。我们的问题跟踪器将继续跟踪范围较小的项目。

这些改进的范围意味着这些更改可能是有争议的,可能涉及核心开发团队之间的重要讨论,并且可能需要创建一个或多个 增强建议(nxep)

安装#

我们的目标是使NetworkX尽可能易于安装。我们的一些依赖项(例如,graph viz和gdal)可能很难安装。我们的其他依赖项很容易安装在CPython平台上,但在其他平台(如PyPy)上可能会涉及更多。解决这些安装问题可能涉及与外部项目合作。

可持续性#

我们的目标是降低贡献门槛,加快拉取请求(PR)审查,加入新的维护者,并吸引新的开发人员,以确保NetworkX的长期可持续性。

这包括:

  • 改进持续集成

  • 使代码库更易于使用

  • 在志愿者工作之外创造新的途径

  • 不断增长的维护者和领导力

  • 增加开发人员社区的多样性

性能#

速度的提高、较低的内存使用和并行算法的能力对大多数科学领域和用例都是有益的。

第一步可能包括使用空速(https://asv.readthedocs.io/en/stable/).)之类的工具实施基准系统它还可能包括审查NetworkX与其他产品包之间的现有比较。

各个函数可以针对性能和内存使用进行优化。我们还对探索加速代码和减少内存使用的新技术感兴趣。在采用任何新技术之前,我们需要仔细考虑其对代码可读性的影响以及构建和安装NetworkX的难度。有关更多信息,请参阅我们的 使命与价值观

许多函数可以微不足道地并行化。但是,我们需要决定一个API,或许还需要实现一些帮助代码以使其保持一致。

文档#

我们希望改进NetworkX文档的内容、结构和演示文稿。一些具体目标包括:

  • 较长的图库示例

  • 特定领域的文档(针对遗传学家的NetworkX、针对神经学家的NetworkX等)

  • 如何将NetworkX与其他包一起使用的示例

线性代数#

我们希望改进基于线性代数的算法。代码很旧,需要检查和重构。这将包括调查SciPy的csgraph。它还将包括决定如何处理具有多个实现的算法(例如,一些算法是用Python、NumPy和SciPy实现的)。

NumPy已经将其API从其执行引擎中分离出来 __array_function____array_ufunc__ 。这将使NumPy的某些部分能够接受实现ndarray接口的分布式数组(例如dask.array.Array)和GPU数组(例如cupy.ndarray)。目前还不清楚哪些算法将开箱即用,以及当它们这样做时是否会有显著的性能提升。

互操作性#

我们希望提高与其他科学Python生态系统的互操作性。这包括我们依赖的项目(例如,NumPy、SciPy、Pandas、Matplotlib)以及我们不依赖的项目(例如,Geopandas)。

例如,我们还希望能够与其他网络分析软件无缝交换图形。与其他科学的Python生态系统工具集成的另一种方法是从其他有用的工具中获取特性。我们应该开发工具,以便在这些其他工具中轻松使用NetworkX。互操作性改进的其他示例可能包括为 `__getitem__ 节点和边视图的DUnder函数 (:ref:`NXEP2 )。还开发了一种通用方法来将图形表示为单个序列 `nodes_and_edges 允许属性字典、节点和边作为 `discussed for graph generators

可视化#

可视化不是NetworkX的重点,但它是许多用户的一项主要功能。我们需要增强NetworkX的绘图工具。