Arcana.Graph.CommunityDetector.Leiden (Arcana v1.3.3)

View Source

Leiden algorithm implementation for community detection.

Uses the Leidenfold library (Rust NIF) to detect communities in entity graphs. The Leiden algorithm is a refinement of the Louvain algorithm that guarantees well-connected communities.

Installation

Add leidenfold to your dependencies in mix.exs:

defp deps do
  [
    {:arcana, "~> 1.2"},
    {:leidenfold, "~> 0.2"}
  ]
end

Precompiled binaries are available for macOS (Apple Silicon) and Linux (x86_64, ARM64).

Usage

detector = {Arcana.Graph.CommunityDetector.Leiden, resolution: 1.0}
{:ok, communities} = CommunityDetector.detect(detector, entities, relationships)

Options

  • :resolution - Controls community granularity (default: 1.0) Higher values produce smaller communities
  • :objective - Quality function to optimize (default: :cpm) Options: :cpm, :modularity, :rber, :rbc, :significance, :surprise
  • :iterations - Number of optimization iterations (default: 2)
  • :seed - Random seed for reproducibility (default: 0 = random)
  • :min_size - Minimum community size to include (default: 1) Set to 2 to exclude singleton communities
  • :max_level - Maximum hierarchy levels to generate (default: 1) Higher levels contain coarser communities built by aggregating lower levels