Graph Generators

All generators return scipy sparse adjacency matrices in CSR format.

Random Graphs

Erdős-Rényi

adjacency = gr.generate_er(n=1000, p=0.01, seed=42)

Random edges with probability p.

Random Regular

adjacency = gr.generate_random_regular(n=100, d=3, seed=42)

Every vertex has exactly degree d.

Scale-Free Graphs

Barabási-Albert

adjacency = gr.generate_ba(n=300, m=3, seed=42)

Preferential attachment model.

Scale-Free

adjacency = gr.generate_scale_free(n=100, seed=42)

Holme-Kim algorithm with configurable parameters.

Power-Law Cluster

adjacency = gr.generate_power_cluster(n=1000, m=3, p=0.5, seed=42)

Power-law degree distribution with triangle formation.

Small-World Graphs

Watts-Strogatz

adjacency = gr.generate_ws(n=1000, k=6, p=0.3, seed=42)

Ring lattice with random rewiring.

Community Structures

Stochastic Block Model

adjacency = gr.generate_sbm(
    n_per_block=75,
    num_blocks=4,
    p_in=0.15,   # Within-block edge probability
    p_out=0.01,  # Between-block edge probability
    seed=42
)

With labels:

adjacency, labels = gr.generate_sbm(
    n_per_block=75,
    num_blocks=4,
    labels=True,
    seed=42
)

Caveman Graph

adjacency = gr.generate_caveman(l=10, k=10)

l cliques of size k.

Relaxed Caveman

adjacency = gr.generate_relaxed_caveman(l=10, k=10, p=0.1, seed=42)

Caveman graph with rewiring probability p.

Bipartite Graphs

Random Bipartite

adjacency = gr.generate_bipartite_graph(
    n_top=50,
    n_bottom=100,
    p=0.2,       # Edge probability
    seed=42
)

Complete Bipartite

adjacency = gr.generate_complete_bipartite_graph(n_top=50, n_bottom=100)

Every vertex in top set connects to every vertex in bottom set (K_{n,m}).

Geometric Graphs

Random Geometric

adjacency = gr.generate_geometric(n=100, radius=0.2, dim=2, seed=42)

Vertices in unit cube, edges within distance radius.

Delaunay Triangulation

adjacency = gr.generate_delaunay_triangulation(n=100, seed=42)

Planar graph from Delaunay triangulation of random 2D points.

Road Network

adjacency = gr.generate_road_network(width=30, height=30)

2D grid graph.

Tree Structures

Balanced Tree

adjacency = gr.generate_balanced_tree(r=2, h=10)

r-ary tree of height h.

Complete Example

import graphem_rapids as gr
import networkx as nx

# Generate graph
adjacency = gr.generate_sbm(
    n_per_block=100,
    num_blocks=5,
    p_in=0.2,
    p_out=0.01,
    seed=42
)

# Compute embedding
embedder = gr.create_graphem(adjacency, n_components=2)
embedder.run_layout(num_iterations=50)

# Visualize with community colors
adjacency_with_labels, labels = gr.generate_sbm(
    n_per_block=100,
    num_blocks=5,
    labels=True,
    seed=42
)
embedder.display_layout(node_colors=labels)