code: def unitigs(args):
      
      p = OptionParser(unitigs.__doc__)
      p.add_option("--maxerr", default=2, type="int", help="Maximum error rate")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      bestedges, = args
      G = read_graph(bestedges, maxerr=opts.maxerr, directed=True)
      H = nx.Graph()
      intconv = lambda x: int(x.split("-")[0])
      for k, v in G.iteritems():
          if k == G.get(v, None):
              H.add_edge(intconv(k), intconv(v))
  
      nunitigs = nreads = 0
      for h in nx.connected_component_subgraphs(H, copy=False):
          st = [x for x in h if h.degree(x) == 1]
          if len(st) != 2:
              continue
          src, target = st
          path = list(nx.all_simple_paths(h, src, target))
          assert len(path) == 1
          path, = path
          print("|".join(str(x) for x in path))
          nunitigs += 1
          nreads += len(path)
      logging.debug("A total of {0} unitigs built from {1} reads."\
                      .format(nunitigs, nreads))
docs: %prog unitigs best.edges
  
      Reads Celera Assembler's "best.edges" and extract all unitigs.