code: def reduce_paths(G):
      
      from jcvi.algorithms.lpsolve import min_feedback_arc_set
  
      while not nx.is_directed_acyclic_graph(G):
          edges = []
          for a, b, w in G.edges_iter(data=True):
              w = w['weight']
              edges.append((a, b, w))
          mf, mf_score = min_feedback_arc_set(edges)
          for a, b, w in mf:
              G.remove_edge(a, b)
  
      assert nx.is_directed_acyclic_graph(G)
      G = transitive_reduction(G)
      return G
docs: Make graph into a directed acyclic graph (DAG).