0.0.8 |
|
---|---|
0.0.7 |
|
0.0.6 |
|
#10 在 #temporal-graph
每月 57 次下载
在 docbrown-db 中使用
235KB
6K SLoC
🌍 网站 📖 文档 Pometry 🐛 报告错误 加入 Slack
什么是 Doc Brown? 🥼
Doc Brown 是 Raphtory 的 Rust 原型,用于下一个版本,重新思考了底层图模型和算法 API 的几个方面。
请查看 问题,了解将要包含的核心功能和它们提议的语义。
以下是如何 Doc Brown 工作的示意图
GraphDB 是图的总管理员。一个 GraphDB 实例可以有 N 个分片。这些分片(也称为 TemporalGraphParts)存储图的片段。如果您之前使用过 Raphtory 的 Scala/Python 版本,那么分片的概念与 Raphtory 中的分区相似,即图的各个部分存储到分区中。在 Doc Brown 中向图中添加边或节点时,GraphDB 将在分片内部搜索一个适当的位置来放置这些边或节点。在此图中,有 4 个分片(或分区)标记为 S1、S2、S3、S4。它们共同构成了整个时间图,因此每个分片的名称为 "TemporalGraphPart"。
分片用于性能和分布式原因。在 Raphtory 中,多个分片并行运行可以大大加快速度。您可以在几秒钟内从您的时间图分析中看到结果。此外,您可以在多台机器上运行您的分析(例如,每台机器一个分片)。
运行 Doc Brown 👨🏼🔬
API 目前处于...变化中
但是,如果您想测试 Raphtory Rust 原型,这里有一个快速入门指南。
运行 LOTR 示例 🧙🏻♂️
先决条件
确保您的操作系统上已安装 Rust。以下是如何安装 Rust 的指南。
1. 设置 Doc Brown
克隆Doc Brown仓库,找到examples目录,在那里您可以找到《指环王》示例。在examples/lotr
下创建一个名为“Data”的文件夹,并将LOTR CSV数据下载到这个文件夹中。您可以从这里下载原始CSV文件:此处。
2. 运行Doc Brown
通过运行以下命令构建Doc Brown以确保它编译和构建
cargo build
如果您有任何链接器错误,请使用以下命令进行构建
cargo build --no-default-features
接下来,运行main.rs
中的主函数,该函数从LOTR CSV文件创建一个图,显示了书中不同角色的互动。为此,您需要位于lotr
文件夹中,从根目录到该文件的路径是./examples/src/bin/lotr
。一旦您在这里,运行此命令以运行LOTR示例
cargo run --bin lotr
您应该会看到类似以下输出的内容,其中包含有关边和顶点的信息
Loaded graph from encoded data files ./examples/src/bin/lotr/data/graphdb.bincode with 139 vertices, 701 edges which took 0 seconds
Gandalf exists = true
恭喜,您已经成功运行了第一个Rust版本的Raphtory图!
3. 运行测试
要运行Doc Brown中的测试,请回到您的根目录并运行此命令
cargo test
代码示例
// Create your GraphDB object and state the number of shards you would like, here we have 2
let graph = GraphDB::new(2);
// Add vertex and edges to your graph with the respective properties
graph.add_vertex(
src_id,
time,
&vec![("name".to_string(), Prop::Str("Character".to_string()))],
);
graph.add_vertex(
dst_id,
time,
&vec![("name".to_string(), Prop::Str("Character".to_string()))],
);
graph.add_edge(
src_id,
dst_id,
time,
&vec![(
"name".to_string(),
Prop::Str("Character Co-occurrence".to_string()),
)],
);
// We calculate a hash for the string "Gandalf" to be used as a unique identifier for Gandalf
let gandalf = utils::calculate_hash(&"Gandalf");
// Get the in-degree, out-degree and degree of Gandalf
let in_degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::IN);
let out_degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::OUT);
let degree = graph.degree_window(gandalf, 0, i64::MAX, Direction::BOTH);
文档
DocBrown有文档,包括教程、解释和Rust文档。您可以在ReadTheDocs上找到它
贡献
- 从安装指南安装Rust
- 安装Python 3.10(建议使用虚拟/conda环境)。
- 安装构建/测试所需的pip包
pip install maturin pytest
社区
加入日益壮大的开源爱好者群体,他们正在使用Raphtory来推动他们的图分析项目!
关于Raphtory的文章和演讲
- 在Alan Turing Institute博客上的Raphtory
- 2022年AI UK上的Raphtory演讲
- 2022年KGC上的Raphtory演讲
- 2022年NetSciX上的Raphtory演讲
贡献者
由于Doc Brown仍然是原型,我们欢迎任何贡献。如果您发现任何问题或想自己解决一些问题,请访问问题页面。如果您有任何问题或想了解更多关于如何加入Raphtory的信息,请加入我们的Slack。
许可
Raphtory根据Apache许可证的条款进行许可(请参阅我们的LICENSE文件)。
依赖关系
~6–16MB
~229K SLoC