贡献者指南#

新手贡献者简要路线图#

nx-guides 的目标是提供关于图论、网络分析和 NetworkX 实现(算法等)的教学性 Notebook。这是开始参与开源贡献的好地方!

如果您想为 nx-guides 做出贡献并且已经确定了要处理的主题,接下来的步骤如下:

  1. nx-guides 仓库克隆到您的本地机器。

  2. 将您的 markdown Notebook 添加到适当的文件夹(例如,如果您要添加新算法,请在 nx-guides/content/algorithms 中按照其他算法的结构添加一个以该算法名称命名的文件夹)。

  3. 确保您的 Notebook 符合本文档中的格式指南。

  4. 对图像和数据使用子目录。如果您使用任何静态图像和数据,请将它们放在相应的文件夹下。(可选)

  5. 将您的 Notebook 路径添加到 index.md 文件。

  6. 完成工作并准备就绪后,将您的更改推送到仓库并打开一个 PR(拉取请求)以供审查。

  7. 参与关于您的更改的任何讨论。确保清晰地表达您的想法。

一些提示#

1. 您的 Notebook 应该是一个 .md 文件。#

您的 Notebook 应该采用 MyST markdown 格式(参见:https://myst-parser.readthedocs.io/en/latest/index.html)。

如果您通常使用 .ipynb Notebook 进行工作,可以使用以下 jupytext 命令将其转换为 .md

jupytext  --to md:myst <notebook-name>.ipynb

2. 尽可能使用代码生成的图像。#

展示如何创建高质量的图/网络数据可视化是 nx-guides 教程的主要目标之一!因此,应尽可能在 Notebook 中直接通过代码生成图像(尤其是图可视化)。

如果您也想在 Notebook 中包含静态图像,您可以

3. 将依赖项添加到 requirements.txt#

如果您想安装和使用其他库,请将相关的依赖项添加到 nx-guides 仓库下的 requirements.txt 中。(即,不要在您的 Notebook 中使用 pip install 命令安装依赖项。)

4. 尚不支持用户输入。#

我们的 Notebook 尚不支持从读者处获取输入。尽管这是一个我们将来会考虑的想法,但目前请保持 Notebook 的叙述性。

5. 不要忘记将您的 Notebook 路径添加到 index.md#

您应该将您的 Notebook 路径包含在 nx-guides/content/algorithms 目录下的 index.md 文件中。

6. 标题级别#

标题级别应逐级递增。例如,如果您从 2 级标题跳到 4 级标题,msyt 将报错,阻止您通过测试。在本例中,如果当前标题级别是 2,则后续标题级别需要是 2 或 3。

7. 您无需完全按照 NetworkX 内部的方式实现算法。#

nx-guides 为 NetworkX 算法提供了教学资源。为此,您不必包含 NetworkX 中算法的源代码。如果可能,请随意删除您认为可以更好地精简的部分 :)

8. 随意使用真实世界数据集#

nx-guides Notebook 的目标之一是使用不同的算法探索和分析真实世界数据集。如果您认为它们有用,请随意使用。

这里有一个很好的数据集来源

http://snap.stanford.edu/data/index.html

9. 如果测试仍然失败怎么办?#

所有测试完成后,您可以看到阻止您的 PR 通过测试的警告和错误。为此,请转到您的 PR 的“对话”页面底部。在“ci/circleci: build-docs”测试套件左侧会显示红色交叉标志。点击右侧的“详细信息”链接查看错误和警告。

您还可以点击“ci/circleci: build-docs artifact”右侧的“详细信息”链接。如果您的 Notebook 已构建,这将带您查看项目的完整文档,就像该分支已合并一样。然后您可以导航到您创建的 Notebook 并检查您的文档是否看起来良好。

环境#

编辑您的 markdown 文件的一个好方法是使用 Jupyter Notebook 或其他 markdown 文件编辑器。只需确保元数据与其他 nx-guides 中的 markdown 文件相符即可。

格式指南#

  1. 编写一个清晰的标题。

  2. 在介绍您的主题时,请说明您正在解决的问题以及您正在使用 NetworkX 的哪个部分。

  3. 在您的介绍后,在 Notebook 的顶部包含一个“导入包”部分。在您的介绍下方的代码单元格中添加所有包的导入语句(参见其他 Notebook 获取示例)

  4. 对代码进行大量注释,尤其是令人困惑的部分。

  5. 引用所有来源。在文档底部包含文内引用和参考文献部分。有关如何编写这些引用和引用的示例,请参阅其他 Notebook