MCPcopy Create free account
hub / github.com/easy-graph/Easy-Graph / _get_alias_edge

Function _get_alias_edge

easygraph/functions/graph_embedding/node2vec.py:204–227  ·  view source on GitHub ↗
(G, src, dst, p, q, weight_key=None)

Source from the content-addressed store, hash-verified

202
203
204def _get_alias_edge(G, src, dst, p, q, weight_key=None):
205 unnormalized_probs = []
206
207 if weight_key is None:
208 for dst_nbr in sorted(G.neighbors(dst)):
209 if dst_nbr == src:
210 unnormalized_probs.append(1.0 / p)
211 elif G.has_edge(dst_nbr, src):
212 unnormalized_probs.append(1.0)
213 else:
214 unnormalized_probs.append(1.0 / q)
215 else:
216 for dst_nbr in sorted(G.neighbors(dst)):
217 if dst_nbr == src:
218 unnormalized_probs.append(G[dst][dst_nbr][weight_key] / p)
219 elif G.has_edge(dst_nbr, src):
220 unnormalized_probs.append(G[dst][dst_nbr][weight_key])
221 else:
222 unnormalized_probs.append(G[dst][dst_nbr][weight_key] / q)
223
224 norm_const = sum(unnormalized_probs)
225 normalized_probs = [float(u_prob) / norm_const for u_prob in unnormalized_probs]
226
227 return _alias_setup(normalized_probs)
228
229
230def _alias_setup(probs):

Callers 1

Calls 4

_alias_setupFunction · 0.85
appendMethod · 0.80
neighborsMethod · 0.45
has_edgeMethod · 0.45

Tested by

no test coverage detected