Preprocessing of transition probabilities for guiding the random walks.
(self)
| 171 | return create_alias_table(normalized_probs) |
| 172 | |
| 173 | def preprocess_transition_probs(self): |
| 174 | """ |
| 175 | Preprocessing of transition probabilities for guiding the random walks. |
| 176 | """ |
| 177 | G = self.G |
| 178 | alias_nodes = {} |
| 179 | for node in G.nodes(): |
| 180 | unnormalized_probs = [G[node][nbr].get('weight', 1.0) |
| 181 | for nbr in G.neighbors(node)] |
| 182 | norm_const = sum(unnormalized_probs) |
| 183 | normalized_probs = [ |
| 184 | float(u_prob) / norm_const for u_prob in unnormalized_probs] |
| 185 | alias_nodes[node] = create_alias_table(normalized_probs) |
| 186 | |
| 187 | if not self.use_rejection_sampling: |
| 188 | alias_edges = {} |
| 189 | |
| 190 | for edge in G.edges(): |
| 191 | alias_edges[edge] = self.get_alias_edge(edge[0], edge[1]) |
| 192 | if not G.is_directed(): |
| 193 | alias_edges[(edge[1], edge[0])] = self.get_alias_edge(edge[1], edge[0]) |
| 194 | self.alias_edges = alias_edges |
| 195 | |
| 196 | self.alias_nodes = alias_nodes |
| 197 | return |
| 198 | |
| 199 | |
| 200 | class BiasedWalker: |
no test coverage detected