MCPcopy
hub / github.com/THUDM/CogDL / _preprocess_transition_probs

Method _preprocess_transition_probs

cogdl/models/emb/node2vec.py:159–195  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

157 return alias_setup(normalized_probs)
158
159 def _preprocess_transition_probs(self):
160 # Preprocessing of transition probabilities for guiding the random walks.
161 G = self.G
162 is_directed = nx.is_directed(self.G)
163
164 print(len(list(G.nodes())))
165 print(len(list(G.edges())))
166
167 s = time.time()
168 alias_nodes = {}
169 for node in G.nodes():
170 unnormalized_probs = [G[node][nbr]["weight"] for nbr in G.neighbors(node)]
171 norm_const = sum(unnormalized_probs)
172 normalized_probs = [float(u_prob) / norm_const for u_prob in unnormalized_probs]
173 alias_nodes[node] = alias_setup(normalized_probs)
174
175 t = time.time()
176 print("alias_nodes", t - s)
177
178 alias_edges = {}
179 s = time.time()
180
181 if is_directed:
182 for edge in G.edges():
183 alias_edges[edge] = self._get_alias_edge(edge[0], edge[1])
184 else:
185 for edge in G.edges():
186 alias_edges[edge] = self._get_alias_edge(edge[0], edge[1])
187 alias_edges[(edge[1], edge[0])] = self._get_alias_edge(edge[1], edge[0])
188
189 t = time.time()
190 print("alias_edges", t - s)
191
192 self.alias_nodes = alias_nodes
193 self.alias_edges = alias_edges
194
195 return

Callers 1

forwardMethod · 0.95

Calls 3

_get_alias_edgeMethod · 0.95
alias_setupFunction · 0.90
nodesMethod · 0.80

Tested by

no test coverage detected