MCPcopy Index your code
hub / github.com/shenweichen/GraphEmbedding / BiasedWalker

Class BiasedWalker

ge/walker.py:200–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

198
199
200class BiasedWalker:
201 def __init__(self, idx2node, temp_path):
202
203 self.idx2node = idx2node
204 self.idx = list(range(len(self.idx2node)))
205 self.temp_path = temp_path
206 pass
207
208 def simulate_walks(self, num_walks, walk_length, stay_prob=0.3, workers=1, verbose=0):
209
210 layers_adj = pd.read_pickle(self.temp_path + 'layers_adj.pkl')
211 layers_alias = pd.read_pickle(self.temp_path + 'layers_alias.pkl')
212 layers_accept = pd.read_pickle(self.temp_path + 'layers_accept.pkl')
213 gamma = pd.read_pickle(self.temp_path + 'gamma.pkl')
214
215 nodes = self.idx # list(self.g.nodes())
216
217 results = Parallel(n_jobs=workers, verbose=verbose, )(
218 delayed(self._simulate_walks)(nodes, num, walk_length, stay_prob, layers_adj, layers_accept, layers_alias,
219 gamma) for num in
220 partition_num(num_walks, workers))
221
222 walks = list(itertools.chain(*results))
223 return walks
224
225 def _simulate_walks(self, nodes, num_walks, walk_length, stay_prob, layers_adj, layers_accept, layers_alias, gamma):
226 walks = []
227 for _ in range(num_walks):
228 random.shuffle(nodes)
229 for v in nodes:
230 walks.append(self._exec_random_walk(layers_adj, layers_accept, layers_alias,
231 v, walk_length, gamma, stay_prob))
232 return walks
233
234 def _exec_random_walk(self, graphs, layers_accept, layers_alias, v, walk_length, gamma, stay_prob=0.3):
235 initialLayer = 0
236 layer = initialLayer
237
238 path = []
239 path.append(self.idx2node[v])
240
241 while len(path) < walk_length:
242 r = random.random()
243 if (r < stay_prob): # same layer
244 v = chooseNeighbor(v, graphs, layers_alias,
245 layers_accept, layer)
246 path.append(self.idx2node[v])
247 else: # different layer
248 r = random.random()
249 try:
250 x = math.log(gamma[layer][v] + math.e)
251 p_moveup = (x / (x + 1))
252 except:
253 print(layer, v)
254 raise ValueError()
255
256 if (r > p_moveup):
257 if (layer > initialLayer):

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected