2 个不稳定版本
0.4.0 | 2023年6月7日 |
---|---|
0.3.2 | 2023年5月25日 |
在 #temporal-graph 中排名 6
325KB
3K SLoC
🌍 网站 📒 文档 Pometry 🧙🏻 教程 🐛 报告错误 加入 Slack
Raphtory 是一个用 Rust 编写的内存图工具,具有友好的 Python API。它非常快,能够在您的笔记本电脑上扩展到数亿条边,并且可以通过简单的 pip install raphtory
代码集成到现有的管道中。
它支持时间旅行、多层建模以及简单的查询之外的先进分析,如社区演变、动态评分和时间模式挖掘。
如果您想做出贡献,请查看开放的 问题列表、赏金板 或者直接在 slack 上联系我们。成功的贡献将获得丰富的奖品!
运行基本示例
from raphtory import Graph
import pandas as pd
# Create a new graph
graph = Graph()
# Add some data to your graph
graph.add_vertex(timestamp=1, id="Alice")
graph.add_vertex(timestamp=1, id="Bob")
graph.add_vertex(timestamp=1, id="Charlie")
graph.add_edge (timestamp=2, src="Bob", dst="Charlie", properties={"weight":5.0})
graph.add_edge (timestamp=3, src="Alice", dst="Bob", properties={"weight":10.0})
graph.add_edge (timestamp=3, src="Bob", dst="Charlie", properties={"weight":-15.0})
# Check the number of unique nodes/edges in the graph and earliest/latest time seen.
print(graph)
results = [["earliest_time", "name", "out_degree", "in_degree"]]
# Collect some simple vertex metrics Ran across the history of your graph with a rolling window
for graph_view in graph.rolling(window=1):
for v in graph_view.vertices():
results.append([graph_view.earliest_time(), v.name(), v.out_degree(), v.in_degree()])
# Print the results
print(pd.DataFrame(results[1:], columns=results[0]))
# Grab an edge, explore the history of its 'weight'
cb_edge = graph.edge("Bob","Charlie")
weight_history = cb_edge.property_history("weight")
print("The edge between Bob and Charlie has the following weight history:", weight_history)
# Compare this weight between time 2 and time 3
weight_change = cb_edge.at(2)["weight"] - cb_edge.at(3)["weight"]
print("The weight of the edge between Bob and Charlie has changed by",weight_change,"pts")
Graph(number_of_edges=2, number_of_vertices=3, earliest_time=1, latest_time=3)
| | earliest_time | name | out_degree | in_degree |
|---|---------------|---------|------------|-----------|
| 0 | 1 | Alice | 0 | 0 |
| 1 | 1 | Bob | 0 | 0 |
| 2 | 1 | Charlie | 0 | 0 |
| 3 | 2 | Bob | 1 | 0 |
| 4 | 2 | Charlie | 0 | 1 |
| 5 | 3 | Alice | 1 | 0 |
| 6 | 3 | Bob | 1 | 1 |
| 7 | 3 | Charlie | 0 | 1 |
The edge between Bob and Charlie has the following weight history: [(2, 5.0), (3, -15.0)]
The weight of the edge between Bob and Charlie has changed by 20.0 pts
安装 Raphtory
Raphtory 自 0.3.0 版本以来可用于 Python 和 Rust。您应该有 Python 3.10 或更高版本,并且使用 conda、virtualenv 或 pyenv 是一个好主意。
pip install raphtory
示例和笔记本
查看我们的交互式 Jupyter Notebook 中的 Raphtory 操作!只需点击下面的徽章即可在线启动 Raphtory 沙盒,无需安装。
想在您的笔记本电脑上尝试 Raphtory?您可以查看 最新文档 和 可用的完整算法列表,或者在我们的基于笔记本的教程下进行操作!
入门
类型 | 描述 |
---|---|
教程 | 构建您的第一个图 |
开发端到端应用程序
类型 | 描述 |
---|---|
笔记本 | 使用我们强大的时间API,在流行的NFT中查找泵和倒仓诈骗 |
基准
我们托管了一个页面,每当向主分支推送时,都会触发并保存两个基准的结果。
在此查看 https://pometry.github.io/Raphtory/dev/bench/
赏金板
Raphtory目前正在为贡献提供奖励,例如新功能或算法。贡献者将获得周边产品和奖品!
要开始,请查看我们希望在https://github.com/Raphtory/Raphtory/discussions/categories/bounty-board上实现的所需算法列表,其中包括一些容易实现的小任务(🍇)。
社区
加入使用Raphtory推动他们的图分析项目的开源爱好者日益增长的社区!
贡献者
想参与其中?请加入Raphtory的Slack群组,并告诉我们您如何贡献力量!
许可证
Raphtory遵循GNU通用公共许可证v3.0(请参阅我们的LICENSE文件)。
依赖关系
~33–50MB
~1M SLoC