MCPcopy
hub / github.com/dmlc/dgl / sbm

Function sbm

python/dgl/data/sbm.py:16–63  ·  view source on GitHub ↗

(Symmetric) Stochastic Block Model Parameters ---------- n_blocks : int Number of blocks. block_size : int Block size. p : float Probability for intra-community edge. q : float Probability for inter-community edge. rng : numpy.random.Rando

(n_blocks, block_size, p, q, rng=None)

Source from the content-addressed store, hash-verified

14
15
16def sbm(n_blocks, block_size, p, q, rng=None):
17 """(Symmetric) Stochastic Block Model
18
19 Parameters
20 ----------
21 n_blocks : int
22 Number of blocks.
23 block_size : int
24 Block size.
25 p : float
26 Probability for intra-community edge.
27 q : float
28 Probability for inter-community edge.
29 rng : numpy.random.RandomState, optional
30 Random number generator.
31
32 Returns
33 -------
34 scipy sparse matrix
35 The adjacency matrix of generated graph.
36 """
37 n = n_blocks * block_size
38 p /= n
39 q /= n
40 rng = np.random.RandomState() if rng is None else rng
41
42 rows = []
43 cols = []
44 for i in range(n_blocks):
45 for j in range(i, n_blocks):
46 density = p if i == j else q
47 block = sp.sparse.random(
48 block_size,
49 block_size,
50 density,
51 random_state=rng,
52 data_rvs=lambda n: np.ones(n),
53 )
54 rows.append(block.row + i * block_size)
55 cols.append(block.col + j * block_size)
56
57 rows = np.hstack(rows)
58 cols = np.hstack(cols)
59 a = sp.sparse.coo_matrix(
60 (np.ones(rows.shape[0]), (rows, cols)), shape=(n, n)
61 )
62 adj = sp.sparse.triu(a) + sp.sparse.triu(a, 1).transpose()
63 return adj
64
65
66class SBMMixtureDataset(DGLDataset):

Callers 1

processMethod · 0.85

Calls 2

appendMethod · 0.80
transposeMethod · 0.80

Tested by

no test coverage detected