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)