Skip to main content

Crate leiden_rs

Crate leiden_rs 

Source
Expand description

§leiden-rs

A Rust implementation of the Leiden algorithm for community detection in graphs, with optional adapters for gryf and petgraph.

The Leiden algorithm guarantees well-connected communities through three phases: local moving, refinement, and aggregation. It supports four quality functions: Modularity, CPM, RBConfiguration, and RBER.

§Quick Start

use leiden_rs::{GraphDataBuilder, Leiden, LeidenConfig};

let mut b = GraphDataBuilder::new(3);
b.add_edge(0, 1, 1.0).unwrap();
b.add_edge(1, 2, 1.0).unwrap();
let graph = b.build().unwrap();

let leiden = Leiden::new(LeidenConfig::default());
let result = leiden.run(&graph).expect("leiden failed");
println!("Found {} communities (quality: {:.4})", result.partition.num_communities(), result.quality);

§Quality Functions

  • Modularity: Q = Σ_c [e_c/m - γ*(Σ_c/(2m))²] — the classic Newman-Girvan modularity
  • CPM: H = Σ_c [e_c - γ * n_c*(n_c-1)/2] — avoids resolution limit, tunable via γ
  • RBConfiguration: Q = Σ_c [e_c - γ * K_c²/(4m)] — Reichardt-Bornholdt with configuration null model
  • RBER: Q = Σ_c [e_c - γ * p * n_c*(n_c-1)/2] — Reichardt-Bornholdt with Erdős-Rényi null model

Re-exports§

pub use error::LeidenError;
pub use error::Result as LeidenResult;
pub use graph::GraphData;
pub use graph::GraphDataBuilder;
pub use graph::MoveComponents;
pub use hierarchy::HierarchicalOutput;
pub use hierarchy::HierarchyLevel;
pub use fluid_communities::FluidCommunities;
pub use fluid_communities::FluidCommunitiesConfig;
pub use fluid_communities::FluidCommunitiesOutput;
pub use infomap::calc_codelength;
pub use infomap::compute_flow;
pub use infomap::compute_node_flows;
pub use infomap::DeltaFlow;
pub use infomap::FlowData;
pub use infomap::Infomap;
pub use infomap::InfomapConfig;
pub use infomap::InfomapOutput;
pub use infomap::MapEquation;
pub use infomap::ModuleFlowData;
pub use infomap::plogp;
pub use leiden::Leiden;
pub use leiden::LeidenConfig;
pub use leiden::LeidenConfigBuilder;
pub use leiden::LeidenOutput;
pub use leiden::QualityType;
pub use generators::generate_ba_graph;
pub use generators::generate_er_graph;
pub use generators::generate_er_graph_exact;
pub use generators::generate_planted_partition;
pub use generators::generate_sbm;
pub use generators::generate_sbm_symmetric;
pub use label_propagation::LabelPropagation;
pub use label_propagation::LabelPropagationConfig;
pub use label_propagation::LabelPropagationOutput;
pub use lfr::generate_lfr_graph;
pub use lfr::LfrConfig;
pub use lfr::LfrGraph;
pub use metrics::ami;
pub use metrics::ari;
pub use metrics::completeness;
pub use metrics::conductance;
pub use metrics::coverage;
pub use metrics::fmi;
pub use metrics::homogeneity;
pub use metrics::internal_density;
pub use metrics::nmi;
pub use metrics::performance;
pub use metrics::purity;
pub use metrics::try_ami;
pub use metrics::try_ari;
pub use metrics::try_completeness;
pub use metrics::try_fmi;
pub use metrics::try_homogeneity;
pub use metrics::try_nmi;
pub use metrics::try_purity;
pub use metrics::try_vi;
pub use metrics::try_v_measure;
pub use metrics::v_measure;
pub use metrics::vi;
pub use multiplex::run_multiplex;
pub use multiplex::MultiplexConfig;
pub use multiplex::MultiplexOutput;
pub use output::CommunityDetectionOutput;
pub use output::ToJson;
pub use partition::Partition;
pub use quality::Modularity;
pub use quality::QualityFunction;
pub use quality::RBConfiguration;
pub use quality::CPM;
pub use quality::RBER;
pub use resolution::resolution_profile;
pub use resolution::resolution_scan;
pub use resolution::ResolutionEntry;
pub use util::load_edgelist;
pub use util::modularity as compute_modularity;
pub use convert::gryf::from_gryf;
pub use convert::gryf::from_gryf_directed;

Modules§

convert
Graph library adapters.
error
Error types for the Leiden algorithm.
fluid_communities
Fluid Communities algorithm for community detection.
generators
Random graph generators for benchmarking and testing.
graph
Graph data structures for the Leiden algorithm.
hierarchy
Hierarchical community detection output.
infomap
Infomap community detection algorithm — foundational data structures and PageRank flow.
label_propagation
Label Propagation algorithm for community detection.
leiden
Core Leiden algorithm implementation.
lfr
LFR benchmark graph generator.
metrics
Evaluation metrics for community detection.
multiplex
Multiplex/multilayer network community detection.
output
JSON serialization for community detection results.
partition
Community partition representation.
quality
Quality functions for community detection.
resolution
Resolution profile analysis for the Leiden algorithm.
util
Utility functions for loading and evaluating graphs.