code: def summary(args):
      
      from jcvi.utils.cbook import SummaryStats
  
      p = OptionParser(summary.__doc__)
      p.add_option("--prefix", help="Generate per block stats [default: %default]")
      opts, args = p.parse_args(args)
  
      if len(args) != 1:
          sys.exit(not p.print_help())
  
      anchorfile, = args
      ac = AnchorFile(anchorfile)
      clusters = ac.blocks
      if clusters == [[]]:
          logging.debug("A total of 0 anchor was found. Aborted.")
          raise ValueError("A total of 0 anchor was found. Aborted.")
  
      nclusters = len(clusters)
      nanchors = [len(c) for c in clusters]
      nranchors = [_score(c) for c in clusters]  # non-redundant anchors
      print("A total of {0} (NR:{1}) anchors found in {2} clusters.".\
                    format(sum(nanchors), sum(nranchors), nclusters), file=sys.stderr)
      print("Stats:", SummaryStats(nanchors), file=sys.stderr)
      print("NR stats:", SummaryStats(nranchors), file=sys.stderr)
  
      prefix = opts.prefix
      if prefix:
          pad = len(str(nclusters))
          for i, c in enumerate(clusters):
              block_id = "{0}{1:0{2}d}".format(prefix, i + 1, pad)
              print("\t".join((block_id, str(len(c)))))
docs: %prog summary anchorfile
  
      Provide statistics for pairwise blocks.