2个不稳定版本
0.4.0 | 2023年6月7日 |
---|---|
0.3.2 | 2023年5月25日 |
#5 in #时间图
每月24次下载
用于 2 个crate(通过 py-raphtory)
2MB
52K SLoC
🌍 网站 📒 文档 Pometry 🧙🏻 教程 🐛 报告错误 加入Slack
Raphtory是用Rust编写的内存图工具,具有友好的Python API。它运行速度快,可以在您的笔记本电脑上扩展到数亿条边,并且可以通过简单的pip install raphtory
将其添加到现有的管道中。
它支持时间旅行、多层建模以及超越简单查询的高级分析,例如社区演变、动态评分和时间模式挖掘。
如果您想贡献,请查看开放的问题列表、悬赏板或直接在Slack上联系我们。成功的贡献将获得swizzling swag奖励!
运行基本示例
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中查找泵和倒仓骗局 |
基准测试
我们托管了一个页面,每当向master分支推送时,都会触发并保存两个基准测试的结果。
在此处查看 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文件)。
依赖关系
~25–40MB
~739K SLoC