6 个版本
0.1.41 | 2022 年 10 月 3 日 |
---|---|
0.1.6 | 2022 年 10 月 15 日 |
0.1.3 | 2022 年 9 月 14 日 |
#1943 在 算法
每月 37 次下载
用于 oxygraphis
84KB
1.5K SLoC
氧图
oxygraph
是一个用于分析二分图的 Rust 库,并实现了几个算法以及可视化。
具有以下功能:
- 可视化二分图及其导出,以及交互矩阵。
- 计算二分图和交互矩阵的基本统计数据。
- 通过 Erdös-Rényi 过程创建随机的二分图。
- 计算嵌套度和模块度的算法。
二分图是对 petgraph
图的薄包装,交互矩阵是二维 ndarray
。
由于包装很薄,实现新的度量/算法应该很简单。
一个示例,说明从 TSV 初始化图
// main bipartite graph struct
use oxygraph::BipartiteGraph;
// Enum for which strata there are in a bipartite graph
use oxygraph::bipartite::Strata;
// Interaction matrix struct
use oxygraph::InteractionMatrix;
// LPAWB+ algorithm
use oxygraph::modularity::lpa_wb_plus;
// read in some data
// in the format:
// from to weight
// 0 1 1.0
// etc ...
let bpgraph = BipartiteGraph::from_dsv("path/to/tsv", b'\t').unwrap();
// is the graph bipartite?
let strata = bpgraph.is_bipartite();
match stata {
Strata::Yes(map) => println!("{:?}", map),
// tell the user which nodes are the offenders.
Strata::No => {
panic!("Uh oh, your graph isn't bipartite!");
}
}
// basic stats
println!("{:?}", bpgraph.stats());
// calculate NODF
let mut im = InteractionMatrix::from_bipartite(bpgraph);
println!("{}", im.nodf().unwrap());
// make a random bipartite graph
let rand_graph = BipartiteGraph::random(80, 100, 250).unwrap();
let mut im_rand = InteractionMatrix::from_bipartite(rand_graph);
// and calculate modularity
let modularity = lpa_wb_plus(rand_graph, None);
println!("{:?}", modularity);
依赖项
~6.5MB
~103K SLoC