class_docstr: Class to make diffusions for a given graph.
  
  Args:
      diffusion_number (int): Number of diffusions
      diffusion_cover (int): Number of nodes in diffusion.
class_docstr_tok: ["Class","to","make","diffusions","for","a","given","graph",".","Args",":","diffusion_number","(","int",")",":","Number","of","diffusions","diffusion_cover","(","int",")",":","Number","of","nodes","in","diffusion","."]
docstr: Generating a diffusion tree from a given source node and linearizing it
  with a directed Eulerian tour.
  
  Arg types:
      * **node** *(int)* - The source node of the diffusion.
  Return types:
      * **euler** *(list of strings)* - The list of nodes in the walk.
docstr_tok: ["Generating","a","diffusion","tree","from","a","given","source","node","and","linearizing","it","with","a","directed","Eulerian","tour",".","Arg","types",":","*","*","*","node","*","*","*","(","int",")","*","-","The","source","node","of","the","diffusion",".","Return","types",":","*","*","*","euler","*","*","*","(","list","of","strings",")","*","-","The","list","of","nodes","in","the","walk","."]
code: def _run_diffusion_process(self, node):
      """
      Generating a diffusion tree from a given source node and linearizing it
      with a directed Eulerian tour.
  
      Arg types:
          * **node** *(int)* - The source node of the diffusion.
      Return types:
          * **euler** *(list of strings)* - The list of nodes in the walk.
      """
      infected = [node]
      sub_graph = nx.DiGraph()
      sub_graph.add_node(node)
      infected_counter = 1
      while infected_counter < self.diffusion_cover:
          end_point = random.sample(infected, 1)[0]
          nebs = [node for node in self.graph.neighbors(end_point)]
          sample = random.choice(nebs)
          if sample not in infected:
              infected_counter = infected_counter + 1
              infected = infected + [sample]
              sub_graph.add_edges_from(
                  [(end_point, sample), (sample, end_point)]
              )
              if infected_counter == self.diffusion_cover:
                  break
      euler = [
          str(u) for u, v in nx.eulerian_circuit(sub_graph, infected[0])
      ]
      return euler
  
imports: import random
  import networkx
label_desc: Use image node_id 2 for calling the EulerianDiffuser obj's underlying member method code with example usage: obj._run_diffusion_process(node) and returns: euler