xgi.generators.uniform

Generate random uniform hypergraphs.

Functions

xgi.generators.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 xgi
>>> import random
>>> n = 1000
>>> m = 3
>>> k = {1: 1, 2: 2, 3: 3, 4: 3}
>>> H = xgi.uniform_hypergraph_configuration_model(k, m)
xgi.generators.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:

Hypergraph

See also

random_hypergraph

xgi.generators.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:

Hypergraph

Raises:
  • XGIError

    • 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

uniform_HPPM

References

Nicholas W. Landry and Juan G. Restrepo. “Polarization in hypergraphs with community structure.” Preprint, 2023. https://doi.org/10.48550/arXiv.2302.13967

xgi.generators.uniform.uniform_HPPM(n, m, k, epsilon, rho=0.5, 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

  • k (float > 0) – Mean degree

  • epsilon (float > 0) – Imbalance parameter

  • rho (float between 0 and 1, optional) – The fraction of nodes in community 1, default 0.5

  • seed (integer or None (default)) – The seed for the random number generator

Returns:

The constructed m-HPPM hypergraph.

Return type:

Hypergraph

Raises:

XGIError

  • If rho is not between 0 and 1 - If the mean degree is negative. - If epsilon is not between 0 and 1

See also

uniform_HSBM

References

Nicholas W. Landry and Juan G. Restrepo. “Polarization in hypergraphs with community structure.” Preprint, 2023. https://doi.org/10.48550/arXiv.2302.13967