cdlib.benchmark.SBM

SBM(sizes: list, p: list, nodelist: list = None, seed: object = 42, directed: bool = False, selfloops: bool = False, sparse: bool = True) → [<class 'object'>, <class 'object'>]

Returns a stochastic block model graph.

This model partitions the nodes in blocks of arbitrary sizes, and places edges between pairs of nodes independently, with a probability that depends on the blocks.

Parameters:
  • sizes – Sizes of blocks (list of ints)
  • p – Element (r,s) gives the density of edges going from the nodes of group r to nodes of group s. p must match the number of groups (len(sizes) == len(p)), and it must be symmetric if the graph is undirected. (List of floats)
  • nodelist – The block tags are assigned according to the node identifiers in nodelist. If nodelist is None, then the ordering is the range [0,sum(sizes)-1]. Optional, default None.
  • seed – Indicator of random number generation state.
  • directed – hether to create a directed graph or not. Boolean, default False.
  • selfloops – Whether to include self-loops or not. Optional, default False.
  • sparse – Use the sparse heuristic to speed up the generator. Optional, default True.
Returns:

A networkx synthetic graph, the set of communities (NodeClustering object)

Example:
>>> from cdlib.benchmark import SBM
>>> sizes = [75, 75, 300]
>>> probs = [[0.25, 0.05, 0.02], [0.05, 0.35, 0.07], [0.02, 0.07, 0.40]]
>>> G, coms = SBM(sizes, probs, seed=0)
References:

Holland, P. W., Laskey, K. B., & Leinhardt, S., “Stochastic blockmodels: First steps”, Social networks, 5(2), 109-137, 1983.