常见问题#
常见问题#
是否有变更日志或发布说明?#
是的!每个版本的发布说明目前可以在GitHub上找到:
如何引用 Python-graphblas?#
Zenodo 在这里为最新和特定版本的 python-graphblas
提供 DOI:
https://doi.org/10.5281/zenodo.7328791
按照Zenodo网页右下角“引用为”中的说明操作。
我在哪里可以找到帮助?#
如果您认为发现了一个错误,有功能请求,有问题,或者有改进我们文档的建议,请在这里提出一个问题:
python-graphblas/python-graphblas#issues
更多开放式的讨论可以在这里发布:
python-graphblas/python-graphblas#discussions
您也可以加入我们在 Discord 上的聊天(在 #graphblas
频道):
https://discord.com/invite/vur45CbwMz
并加入我们每周的社区电话会议(我们很友好!):
决策是如何以及在哪里做出的?#
我们寻求社区所有成员的共识和意见。 任何对该项目感兴趣的人都可以加入社区,参与项目设计,并参与决策过程。我们想听到你的声音!
我们目前是一个小团队,所有决定必须由两位共同创始人Erik Welch和Jim Kitchen共同同意。PRs必须至少由一位核心开发者批准,且Erik和Jim都必须批准新版本的发布。
我们致力于开放、透明和机构中立。 讨论通常在我们的 每周社区会议中进行, 并记录在会议记录 和相关的GitHub问题中。
随着我们社区的成长,我们欢迎更多的核心开发者、指导委员会以及其他角色来帮助管理和指导python-graphblas
。我们渴望拥有(并正式化)像NetworkX和Dask那样的治理结构。
什么是行为准则?#
行为准则描述了在我们社区内互动以及个人代表项目时的预期行为。我们完整的行为准则,包括如何报告投诉或潜在的行为准则违规的说明,请参见此处:
什么是弃用政策?#
python-graphblas
使用基于时间的弃用策略:
弃用必须持续至少八个月,并且可能在八个月后被移除。
我们非常重视稳定性,并希望其他库和应用程序能够以最小的干扰依赖python-graphblas
。我们努力“第一次就做对”。然而,在大多数软件项目中,向后不兼容的更改是不可避免的。
如果可能,API 或行为更改应以向后兼容的方式进行,以便过渡到新方式。使用之前(已弃用)的方式应给出一个 DeprecationWarning
,该警告应标识出已弃用的内容、用户应如何更新以及弃用可能被移除的时间。如果适用,更改还必须在发布说明和文档字符串中进行记录。
错误不被视为弃用,可能会立即修复。
版本支持政策是什么?#
每个主要的Python版本将至少支持36个月。 主要依赖项如NumPy应至少支持24个月。 我们的目标是遵循SPEC 0:
python-graphblas
本身遵循“单一主干”版本策略。
例如,如果发现了一个CVE,我们不会将修复程序回溯应用到之前的版本中。
相反,修复程序将仅从下一个版本开始提供。
GraphBLAS C API 规范预计会缓慢变化,但它确实会变化。 我们的目标是支持最新版本的 GraphBLAS 规范和实现。 在我们停止支持旧版本的规范或主要版本的实现之前,我们会提前宣布计划。 我们将在发布说明和我们的 Discord 频道中发布公告。 如果提议的更改会对您产生负面影响,请告知我们, 以便我们可以共同努力找到解决方案。
要查看我们支持的SuiteSparse:GraphBLAS版本,请查看pyproject.toml
中[projects.optional-dependencies]
下的suitesparse
版本规范。
python-graphblas 和 pygraphblas 之间有什么关系?#
它们是具有相似目标的不同库。两者都封装了SuiteSparse:GraphBLAS,并使用相同的底层python-suitesparse-graphblas
CFFI包装器,使得它们的底层对象彼此兼容。
最大的区别在于C调用如何映射到等效的Python函数。
对于简单的表达式,这两个库非常相似。
# pygraphblas
A += 1
# python-graphblas
A += 1
对于更复杂的表达式,这两个库有显著的不同。
pygraphblas
倾向于 numpy
的立即执行风格,并使用关键字参数来影响输出。
# pygraphblas
A.mxm(B.transpose(), mask=A, out=C, accum=FP64.PLUS, semiring=FP64.MIN_PLUS)
python-graphblas
使用延迟表达式,并将影响输出的参数与输出保持在一起。
# python-graphblas
C(A, accum=binary.plus) << semiring.min_plus(A @ B.T)
python-graphblas
还包含许多附加功能,例如 Recorder
和高级聚合器。
使用python-graphblas编写算法与直接在C中编写算法相比,性能损失是什么?#
对于大型图,性能损失可以忽略不计,因为操作矩阵和向量的主要工作完全在C语言中完成。开销仅在于从Python调用C语言的部分。
对于小型图,调用开销可能变得更加显著,但较小的图通常不需要太多时间来计算,因此在人类尺度上,额外的开销应该不会明显。