2 个不稳定版本
0.4.0 | 2023 年 6 月 7 日 |
---|---|
0.3.2 | 2023 年 5 月 25 日 |
#7 in #temporal-graph
2.5MB
57K 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
示例和笔记本
查看Raphtory在互动Jupyter Notebook中的实际应用!只需点击下面的徽章即可在线启动Raphtory沙盒,无需安装。
想在您的笔记本电脑上尝试Raphtory吗?您可以查看最新文档和可用算法的完整列表,或查看下面的基于笔记本的教程!
入门指南
类型 | 描述 |
---|---|
教程 | 构建您的第一个图 |
开发端到端应用程序
类型 | 描述 |
---|---|
笔记本 | 使用我们强大的时间API在流行的NFT中查找泵和.dump骗局 |
基准测试
我们托管一个页面,每当推送master分支时,都会触发并保存两个基准测试的结果。
在此查看https://pometry.github.io/Raphtory/dev/bench/
赏金板
Raphtory目前提供对新功能或算法等贡献的奖励。贡献者将获得周边产品和奖品!
要开始,请查看我们的所需算法列表,其中包括一些容易实现的低垂之果(🍇)。
社区
加入使用Raphtory推动他们的图分析项目的开源爱好者不断增长的社区!
贡献者
想加入我们吗?请加入Raphtory Slack群组,并与我们讨论您如何贡献力量!
许可证
Raphtory根据GNU通用公共许可证v3.0许可(请参阅我们的LICENSE文件)。
依赖关系
~30–43MB
~811K SLoC