Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/networkx/generators/intersection.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:32:28 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:d30785e31577 | 1:56ad4e20f292 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 """ | |
| 3 Generators for random intersection graphs. | |
| 4 """ | |
| 5 # Copyright (C) 2011 by | |
| 6 # Aric Hagberg <hagberg@lanl.gov> | |
| 7 # Dan Schult <dschult@colgate.edu> | |
| 8 # Pieter Swart <swart@lanl.gov> | |
| 9 # All rights reserved. | |
| 10 # BSD license. | |
| 11 import random | |
| 12 import networkx as nx | |
| 13 from networkx.algorithms import bipartite | |
| 14 from networkx.utils import py_random_state | |
| 15 | |
| 16 __author__ = "\n".join(['Aric Hagberg (hagberg@lanl.gov)']) | |
| 17 | |
| 18 __all__ = ['uniform_random_intersection_graph', | |
| 19 'k_random_intersection_graph', | |
| 20 'general_random_intersection_graph', | |
| 21 ] | |
| 22 | |
| 23 | |
| 24 @py_random_state(3) | |
| 25 def uniform_random_intersection_graph(n, m, p, seed=None): | |
| 26 """Returns a uniform random intersection graph. | |
| 27 | |
| 28 Parameters | |
| 29 ---------- | |
| 30 n : int | |
| 31 The number of nodes in the first bipartite set (nodes) | |
| 32 m : int | |
| 33 The number of nodes in the second bipartite set (attributes) | |
| 34 p : float | |
| 35 Probability of connecting nodes between bipartite sets | |
| 36 seed : integer, random_state, or None (default) | |
| 37 Indicator of random number generation state. | |
| 38 See :ref:`Randomness<randomness>`. | |
| 39 | |
| 40 See Also | |
| 41 -------- | |
| 42 gnp_random_graph | |
| 43 | |
| 44 References | |
| 45 ---------- | |
| 46 .. [1] K.B. Singer-Cohen, Random Intersection Graphs, 1995, | |
| 47 PhD thesis, Johns Hopkins University | |
| 48 .. [2] Fill, J. A., Scheinerman, E. R., and Singer-Cohen, K. B., | |
| 49 Random intersection graphs when m = !(n): | |
| 50 An equivalence theorem relating the evolution of the g(n, m, p) | |
| 51 and g(n, p) models. Random Struct. Algorithms 16, 2 (2000), 156–176. | |
| 52 """ | |
| 53 G = bipartite.random_graph(n, m, p, seed) | |
| 54 return nx.projected_graph(G, range(n)) | |
| 55 | |
| 56 | |
| 57 @py_random_state(3) | |
| 58 def k_random_intersection_graph(n, m, k, seed=None): | |
| 59 """Returns a intersection graph with randomly chosen attribute sets for | |
| 60 each node that are of equal size (k). | |
| 61 | |
| 62 Parameters | |
| 63 ---------- | |
| 64 n : int | |
| 65 The number of nodes in the first bipartite set (nodes) | |
| 66 m : int | |
| 67 The number of nodes in the second bipartite set (attributes) | |
| 68 k : float | |
| 69 Size of attribute set to assign to each node. | |
| 70 seed : integer, random_state, or None (default) | |
| 71 Indicator of random number generation state. | |
| 72 See :ref:`Randomness<randomness>`. | |
| 73 | |
| 74 See Also | |
| 75 -------- | |
| 76 gnp_random_graph, uniform_random_intersection_graph | |
| 77 | |
| 78 References | |
| 79 ---------- | |
| 80 .. [1] Godehardt, E., and Jaworski, J. | |
| 81 Two models of random intersection graphs and their applications. | |
| 82 Electronic Notes in Discrete Mathematics 10 (2001), 129--132. | |
| 83 """ | |
| 84 G = nx.empty_graph(n + m) | |
| 85 mset = range(n, n + m) | |
| 86 for v in range(n): | |
| 87 targets = seed.sample(mset, k) | |
| 88 G.add_edges_from(zip([v] * len(targets), targets)) | |
| 89 return nx.projected_graph(G, range(n)) | |
| 90 | |
| 91 | |
| 92 @py_random_state(3) | |
| 93 def general_random_intersection_graph(n, m, p, seed=None): | |
| 94 """Returns a random intersection graph with independent probabilities | |
| 95 for connections between node and attribute sets. | |
| 96 | |
| 97 Parameters | |
| 98 ---------- | |
| 99 n : int | |
| 100 The number of nodes in the first bipartite set (nodes) | |
| 101 m : int | |
| 102 The number of nodes in the second bipartite set (attributes) | |
| 103 p : list of floats of length m | |
| 104 Probabilities for connecting nodes to each attribute | |
| 105 seed : integer, random_state, or None (default) | |
| 106 Indicator of random number generation state. | |
| 107 See :ref:`Randomness<randomness>`. | |
| 108 | |
| 109 See Also | |
| 110 -------- | |
| 111 gnp_random_graph, uniform_random_intersection_graph | |
| 112 | |
| 113 References | |
| 114 ---------- | |
| 115 .. [1] Nikoletseas, S. E., Raptopoulos, C., and Spirakis, P. G. | |
| 116 The existence and efficient construction of large independent sets | |
| 117 in general random intersection graphs. In ICALP (2004), J. D´ıaz, | |
| 118 J. Karhum¨aki, A. Lepist¨o, and D. Sannella, Eds., vol. 3142 | |
| 119 of Lecture Notes in Computer Science, Springer, pp. 1029–1040. | |
| 120 """ | |
| 121 if len(p) != m: | |
| 122 raise ValueError("Probability list p must have m elements.") | |
| 123 G = nx.empty_graph(n + m) | |
| 124 mset = range(n, n + m) | |
| 125 for u in range(n): | |
| 126 for v, q in zip(mset, p): | |
| 127 if seed.random() < q: | |
| 128 G.add_edge(u, v) | |
| 129 return nx.projected_graph(G, range(n)) |
