Quick start
Create an embedding
Built-in generators return SciPy CSR sparse adjacency objects.
import numpy as np
import graphem as ge
adjacency = ge.generate_er(n=500, p=0.01, seed=7)
embedder = ge.GraphEmbedder(
adjacency=adjacency,
n_components=3,
L_min=1.0,
k_attr=0.2,
k_inter=0.5,
n_neighbors=10,
sample_size=256,
batch_size=500,
seed=7,
verbose=False,
)
positions = embedder.run_layout(num_iterations=50)
radii = np.linalg.norm(positions, axis=1)
top_nodes = np.lexsort((np.arange(len(radii)), -radii))[:10]
print(top_nodes)
positions has shape (n_vertices, n_components). Use
embedder.get_positions() to retrieve the current layout without performing
additional iterations.
Visualize a two-dimensional layout
adjacency = ge.generate_ws(n=300, k=6, p=0.2, seed=4)
embedder = ge.GraphEmbedder(adjacency, n_components=2, seed=4)
embedder.run_layout(num_iterations=30)
embedder.display_layout(node_size=4)
Evaluate radial seed selection
import networkx as nx
adjacency = ge.generate_er(n=128, p=0.05, seed=3)
graph = nx.from_scipy_sparse_array(adjacency)
embedder = ge.GraphEmbedder(adjacency, seed=3, verbose=False)
radial_seeds = ge.graphem_seed_selection(
embedder,
k=10,
num_iterations=20,
)
spread, steps = ge.ndlib_estimated_influence(
graph,
radial_seeds,
p=0.1,
iterations_count=200,
)
print(spread, steps)
This evaluates one stochastic Independent-Cascade trajectory. A scientific comparison must use shared propagation worlds or enough independent samples and must report uncertainty.
Measure centrality correlation
from graphem.benchmark import benchmark_correlations
result = benchmark_correlations(
ge.generate_er,
graph_params={"n": 200, "p": 0.05, "seed": 11},
n_components=3,
num_iterations=40,
)
print(result)
Next steps
Tutorials explains graph families, ranking, and honest evaluation.
API reference lists public classes and functions.
Installation distinguishes the reference JAX and production CUDA paths.