docstr: Simulate a random walk starting from start node.
docstr_tok: ["Simulate","a","random","walk","starting","from","start","node","."]
code: def node2vec_walk(self, walk_length, start_node):
      """
      Simulate a random walk starting from start node.
      """
      G = self.G
      alias_nodes = self.alias_nodes
      alias_edges = self.alias_edges
      look_up_dict = self.look_up_dict
      node_size = self.node_size
  
      walk = [start_node]
  
      while len(walk) < walk_length:
          cur = walk[-1]
          cur_nbrs = list(G.neighbors(cur))
          if len(cur_nbrs) > 0:
              if len(walk) == 1:
                  walk.append(
                      cur_nbrs[
                          alias_draw(
                              alias_nodes[cur][0], alias_nodes[cur][1]
                          )
                      ]
                  )
              else:
                  prev = walk[-2]
                  pos = (prev, cur)
                  next = cur_nbrs[
                      alias_draw(
                          alias_edges[pos][0], alias_edges[pos][1]
                      )
                  ]
                  walk.append(next)
          else:
              break
  
      return walk
  
file_path: OpenNE/src/openne/walker.py
imports: from __future__ import print_function
  import random
  import numpy
  import multiprocessing
label_desc: Use image node_id 2 for calling the Walker obj's underlying member method code with example usage: obj.node2vec_walk(walk_length, start_node) and returns: walk