Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Ladybug-Memory/icebug-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

icebug

Rust bindings for Icebug, a graph analytics library backed by Apache Arrow-friendly graph storage.

This crate exposes mutable Graph, read-only CSR GraphR, common graph queries, file readers, centrality algorithms, connected components, Louvain, and Leiden via Icebug's ParallelLeidenView.

Building

Apache Arrow C++ must be installed locally and is discovered with pkg-config arrow.

By default, the build script downloads the platform-specific Icebug release into vendor/ using scripts/download-icebug.sh. Override the Icebug release with ICEBUG_VERSION, or point at an existing unpacked Icebug tree with ICEBUG_DIR.

cargo test

To prefetch explicitly:

./scripts/download-icebug.sh

Arrow CSR Graphs

GraphR accepts idiomatic Rust Arrow arrays. The arrays are stored by the Rust wrapper for as long as the graph lives, while Icebug receives zero-copy Arrow C++ arrays over the same value buffers.

use arrow_array::UInt64Array;
use icebug::{GraphQuery, GraphR};

let graph = GraphR::from_csr(
    3,
    false,
    UInt64Array::from(vec![1, 2, 0, 0]),
    UInt64Array::from(vec![0, 2, 3, 4]),
)?;

assert_eq!(graph.neighbors(0)?, vec![1, 2]);
# Ok::<(), icebug::Error>(())

Mutable Graphs

use icebug::{DegreeCentrality, Graph, GraphQuery};

let mut graph = Graph::new(3, false, false)?;
graph.add_edge(0, 1)?;
graph.add_edge(1, 2)?;

let mut degree = DegreeCentrality::new(&graph, false, true, true)?;
degree.run()?;
assert_eq!(degree.scores()?.len(), graph.number_of_nodes() as usize);
# Ok::<(), icebug::Error>(())

About

Rust bindings for Icebug

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors