code: def trace(args):
      
      p = OptionParser(trace.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(p.print_help())
  
      s, = args
      version, partID, unitigID = get_ID(s)
  
      flist = glob("../5-consensus/*_{0:03d}.err".format(int(partID)))
      assert len(flist) == 1
      fp = open(flist[0])
  
      instate = False
      for row in fp:
          if working in row and unitigID in row:
              rows = []
              instate = True
          if instate:
              rows.append(row)
          if failed in row:
              instate = False
              if len(rows) > 20:
                  ignore_line = "... ({0} lines skipped)\n".format(len(rows) - 20)
                  rows = rows[:10] + [ignore_line] + rows[-10:]
  
      print("".join(rows), file=sys.stderr)
docs: %prog trace unitig{version}.{partID}.{unitigID}
  
      Call `grep` to get the erroneous fragment placement.