架构#

本文档应有助于开始修改代码。另请参阅develop.md以获取开发者命令,以及CONTRIBUTING.md以了解社区指南。

客户端/服务器数据处理工具#

PyGraphistry 是一个主要用于以下目的的 Python 客户端库:

  • 在PyData中加载,或将非PyData转换为PyData

  • 为图形形状和视觉编码设置声明性绑定

  • 将其转换为实时、可嵌入的Graphistry可视化

它也越来越多地用于中间计算和更深入地访问Graphistry API。然而,这些不应妨碍主要用例。

目前它主要使用Pandas,并逐渐迁移到基于Arrow和RAPIDS.ai的内部实现。

功能#

大多数用户交互是功能性的,其中每个.bind()都会创建一个新的Graphistry对象,该对象是被链式调用的对象的克隆。因此,大多数调用都有一个廉价的.copy(),用于浅层不可变绑定。

账户相关设置通常是全局的,但可以在局部功能上进行覆盖。

DetaFrames: 惰性 vs. 急切#

plot()调用时,延迟绑定的数据会被具体化为上传处理所需的格式,例如,API=3将需要将pandas数据框转换为Arrow。

数据库连接器应在加载时转换为Pandas,或者更好的是Arrow。这使得可以使用._nodes._edges进行即时分析。

插件#

新代码越来越多地被放入单独的文件中:

  • Graphistry API:Arrow便利类以匹配Graphistry服务器API。每种实体类型通常有不同的类型。这些正在编写以允许独立使用。

  • 每个连接器:这些应该是单独的文件并且是独立的。为了方便起见,它们的connect()query()方法可以添加到全局命名空间中。例如:g.bolt(...).cypher(...).plot()

  • 方法旨在用于基于Notebook的检查。例如,调用g.cypher应该指导用户使用可用的参数和使用示例。