easygraph.functions.hypergraph.null_model.uniform module#
Generate random uniform hypergraphs.
- easygraph.functions.hypergraph.null_model.uniform.uniform_HPPM(n, m, rho, k, epsilon, seed=None)[source]#
Construct the m-uniform hypergraph planted partition model (m-HPPM)
- Parameters:
n (int > 0) – Number of nodes
m (int > 0) – Hyperedge size
rho (float between 0 and 1) – The fraction of nodes in community 1
k (float > 0) – Mean degree
epsilon (float > 0) – Imbalance parameter
seed (integer or None (default)) – The seed for the random number generator
- Returns:
The constructed m-HPPM hypergraph.
- Return type:
- Raises:
If rho is not between 0 and 1
If the mean degree is negative.
If epsilon is not between 0 and 1
See also
References
Nicholas W. Landry and Juan G. Restrepo. “Polarization in hypergraphs with community structure.” Preprint, 2023. https://doi.org/10.48550/arXiv.2302.13967
- easygraph.functions.hypergraph.null_model.uniform.uniform_HSBM(n, m, p, sizes, seed=None)[source]#
Create a uniform hypergraph stochastic block model (HSBM).
- Parameters:
n (int) – The number of nodes
m (int) – The hyperedge size
p (m-dimensional numpy array) – tensor of probabilities between communities
sizes (list or 1D numpy array) – The sizes of the community blocks in order
seed (integer or None (default)) – The seed for the random number generator
- Returns:
The constructed SBM hypergraph
- Return type:
- Raises:
If the length of sizes and p do not match.
If p is not a tensor with every dimension equal
If p is not m-dimensional
If the entries of p are not in the range [0, 1]
If the sum of the vector of sizes does not equal the number of nodes.
Exception – If there is an integer overflow error
See also
References
Nicholas W. Landry and Juan G. Restrepo. “Polarization in hypergraphs with community structure.” Preprint, 2023. https://doi.org/10.48550/arXiv.2302.13967
- easygraph.functions.hypergraph.null_model.uniform.uniform_erdos_renyi_hypergraph(n, m, p, p_type='degree', seed=None)[source]#
Generate an m-uniform Erdős–Rényi hypergraph
This creates a hypergraph with n nodes where hyperedges of size m are created at random to obtain a mean degree of k.
- Parameters:
n (int > 0) – Number of nodes
m (int > 0) – Hyperedge size
p (float or int > 0) – Mean expected degree if p_type=”degree” and probability of an m-hyperedge if p_type=”prob”
p_type (str) – “degree” or “prob”, by default “degree”
seed (integer or None (default)) – The seed for the random number generator
- Returns:
The Erdos Renyi hypergraph
- Return type:
See also
random_hypergraph
- easygraph.functions.hypergraph.null_model.uniform.uniform_hypergraph_Gnm(k: int, num_v: int, num_e: int, n_workers=None)[source]#
Return a random
k
-uniform hypergraph withnum_v
vertices andnum_e
hyperedges.- Parameters:
k (
int
) – The Number of vertices in each hyperedge.num_v (
int
) – The Number of vertices.num_e (
int
) – The Number of hyperedges.
Examples
>>> import easygraph as eg >>> hg = eg.uniform_hypergraph_Gnm(3, 5, 4) >>> hg.e ([(0, 1, 2), (0, 1, 3), (0, 3, 4), (2, 3, 4)], [1.0, 1.0, 1.0, 1.0])
- easygraph.functions.hypergraph.null_model.uniform.uniform_hypergraph_configuration_model(k, m, seed=None)[source]#
A function to generate an m-uniform configuration model
- Parameters:
k (dictionary) – This is a dictionary where the keys are node ids and the values are node degrees.
m (int) – specifies the hyperedge size
seed (integer or None (default)) – The seed for the random number generator
- Returns:
The generated hypergraph
- Return type:
Hypergraph object
- Warns:
warnings.warn – If the sums of the degrees are not divisible by m, the algorithm still runs, but raises a warning and adds an additional connection to random nodes to satisfy this condition.
Notes
This algorithm normally creates multi-edges and loopy hyperedges. We remove the loopy hyperedges.
References
“The effect of heterogeneity on hypergraph contagion models” by Nicholas W. Landry and Juan G. Restrepo https://doi.org/10.1063/5.0020034
Example
>>> import easygraph as eg >>> import random >>> n = 1000 >>> m = 3 >>> k = {1: 1, 2: 2, 3: 3, 4: 3} >>> H = eg.uniform_hypergraph_configuration_model(k, m)