Source code for hypergraphx.generation.activity_driven

from hypergraphx.core.temporal import TemporalHypergraph
import numpy as np

from hypergraphx.generation._rng import np_rng, py_rng


[docs] def rnd_pwl(xmin, xmax, g, size=1, *, seed: int | None = None): rng = np_rng(seed) r = rng.random(size=size) return (r * (xmax ** (1.0 - g) - xmin ** (1.0 - g)) + xmin ** (1.0 - g)) ** ( 1.0 / (1.0 - g) )
[docs] def HOADmodel(N: int, activities_per_order: dict, time=100, *, seed: int | None = None): """ Generate a temporal hypergraph according to the HOAD model. Parameters ---------- N : int The number of nodes in the hypergraph. activities_per_order : dict The dictionary of activities per order. The keys are the orders and the values are the activities. time : int The number of time steps. Returns ------- HG : TemporalHypergraph The temporal hypergraph generated according to the HOAD model. Examples -------- >>> import numpy as np >>> from hypergraphx.generation import HOADmodel >>> acts = {2: np.array([0.1, 0.2, 0.3])} # order=2 => size=3 hyperedges >>> T = HOADmodel(3, acts, time=5, seed=0) >>> isinstance(T.get_edges(), list) True """ rng = py_rng(seed) hyperlinks = [] for order in activities_per_order.keys(): act_vect = activities_per_order[order] for t in range(time): for node_i in range(N): if act_vect[node_i] > rng.random(): neigh_list = rng.sample(range(N), order) neigh_list.append(node_i) if len(neigh_list) == len(set(neigh_list)): hyperlinks.append((t, tuple(neigh_list))) HG = TemporalHypergraph(hyperlinks) return HG