code: def distance(args):
      
      from jcvi.utils.iter import pairwise
  
      p = OptionParser(distance.__doc__)
      p.add_option("--distmode", default="ss", choices=("ss", "ee"),
              help="Distance mode between paired reads. ss is outer distance, " \
                   "ee is inner distance [default: %default]")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      bedfile, = args
      sortedbedfile = sort([bedfile])
      valid = total = 0
      fp = open(sortedbedfile)
      for a, b in pairwise(fp):
          a = BedLine(a)
          b = BedLine(b)
          ar = (a.seqid, a.start, a.end, "+")
          br = (b.seqid, b.start, b.end, "+")
          dist, oo = range_distance(ar, br, distmode=opts.distmode)
          total += 1
          if dist > 0:
              print(dist)
              valid += 1
  
      logging.debug("Total valid (> 0) distances: {0}.".\
                    format(percentage(valid, total)))
docs: %prog distance bedfile
  
      Calculate distance between bed features. The output file is a list of
      distances, which can be used to plot histogram, etc.