code: def clr(args):
      
      p = OptionParser(clr.__doc__)
      opts, args = p.parse_args(args)
  
      if len(args) < 2:
          sys.exit(not p.print_help())
  
      blastfile = args[0]
      fastafiles = args[1:]
  
      sizes = {}
      for fa in fastafiles:
          f = Fasta(fa)
          sizes.update(f.itersizes())
  
      b = Blast(blastfile)
      for query, hits in b.iter_hits():
  
          qsize = sizes[query]
          vectors = list((x.qstart, x.qstop) for x in hits)
          vmin, vmax = range_minmax(vectors)
  
          left_size = vmin - 1
          right_size = qsize - vmax
  
          if left_size > right_size:
              clr_start, clr_end = 0, vmin
          else:
              clr_start, clr_end = vmax, qsize
  
          print("\t".join(str(x) for x in (query, clr_start, clr_end)))
          del sizes[query]
  
      for q, size in sorted(sizes.items()):
          print("\t".join(str(x) for x in (q, 0, size)))
docs: %prog blastfile fastafiles
  
      Calculate the vector clear range file based BLAST to the vectors.